설치시 mysql은 루트 암호를 요구하지 않습니다


54

내가 사용하는 apt install mysql-server우분투 16.04에서 MySQL을 설치했지만 설치하는 동안, 그것은 루트 암호를 물어 보지 않았다.

설치 후 내가 가지고 ERROR 1045내가으로 로그인을 시도 할 때 rootmysql_secure_installation같은 오류가 발생했습니다. 나는 purgeD와 autoremove다음 다시 설치 거라고하지만 작동하지 않습니다.

이 문제를 어떻게 해결할 수 있습니까? 설치 중에 루트 암호를 설정하지 않은 경우 루트 암호를 설정할 수 있습니까?

이것은 내 설치 로그입니다.

다음과 같은 추가 패키지가 설치됩니다.
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql 서버 -5.7
  mysql-server-core-5.7
권장 패키지 :
  Mailx tinyca
다음과 같은 새로운 패키지가 설치됩니다.
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 업그레이드, 6 새로 설치, 0 제거 및 0 업그레이드되지 않음
0 B / 17,9 MB의 아카이브를 가져와야합니다.
이 작업 후에 160MB의 추가 디스크 공간이 사용됩니다.
계속 하시겠습니까? [Y / n] y
패키지 사전 구성 ...
이전에 선택하지 않은 패키지 libaio1 : amd64 선택
(데이터베이스 읽기 중 ... 227144 파일 및 디렉토리가 현재 설치되어 있습니다.)
포장 풀기 준비 중 ... / libaio1_0.3.110-2_amd64.deb ...
libaio1 : amd64 (0.3.110-2) 포장 풀기 ...
이전에 선택하지 않은 패키지 mysql-client-core-5.7 선택.
포장 풀기 준비 중 ... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-client-core-5.7 (5.7.12-0ubuntu1) 압축 풀기 ...
이전에 선택하지 않은 패키지 mysql-client-5.7 선택.
포장 풀기 준비 중 ... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-client-5.7 (5.7.12-0ubuntu1) 압축 풀기 ...
이전에 선택하지 않은 패키지 mysql-server-core-5.7 선택.
포장 풀기 준비 중 ... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-server-core-5.7 (5.7.12-0ubuntu1) 압축 풀기 ...
이전에 선택하지 않은 패키지 mysql-server-5.7 선택.
포장 풀기 준비 중 ... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-server-5.7 (5.7.12-0ubuntu1) 압축 풀기 ...
이전에 선택하지 않은 패키지 mysql-server를 선택합니다.
포장 풀기 준비 중 ... / mysql-server_5.7.12-0ubuntu1_all.deb ...
mysql-server (5.7.12-0ubuntu1) 압축 풀기 ...
libc-bin (2.23-0ubuntu3)에 대한 트리거 처리 중 ...
man-db (2.7.5-1)에 대한 트리거 처리 ...
systemd (229-4ubuntu4)에 대한 트리거 처리 ...
우레아 헤드 (0.100.0-19)에 대한 처리 트리거 ...
libaio1 : amd64 (0.3.110-2) 설정 ...
mysql-client-core-5.7 설정 (5.7.12-0ubuntu1) ...
mysql-client-5.7 (5.7.12-0ubuntu1) 설정 ...
mysql-server-core-5.7 (5.7.12-0ubuntu1) 설정 ...
mysql-server-5.7 (5.7.12-0ubuntu1) 설정 ...
업데이트 대안 : /etc/mysql/mysql.cnf를 사용하여 자동 모드에서 /etc/mysql/my.cnf(my.cnf) 제공
업데이트가 필요한지 확인합니다.
이 MySQL 설치는 이미 5.7.12로 업그레이드되었습니다. mysql_upgrade를 계속 실행해야하는 경우 --force를 사용하십시오.
mysql-server 설정 (5.7.12-0ubuntu1) ...
libc-bin (2.23-0ubuntu3)에 대한 트리거 처리 중 ...

답변:


60

grant-tables를로드하지 않고 mysql을 시작하여 현재 비밀번호를 모르고 루트 비밀번호를 복구하거나 설정할 수 있습니다.

$명령에 유의하십시오 . 명령을 입력 할 때 표시되는 터미널 프롬프트를 지정합니다. 그것은 한 줄의 텍스트이지만 실제 입력 된 터미널 명령을 보여줍니다. " mysql>"접두사도 프롬프트입니다. 이것이 mysql을 인터랙티브하게 실행할 때 나타나는 프롬프트 입니다.

이것은 cli (명령 행)입니다.
( 단계를 수행하기 전에 현재 서버중지 하십시오. 한 번에 하나의 서버 만 실행할 수 있습니다.)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

이제 비밀번호없이 root로 로그인하고이 경우와 같이 모든 명령을 수행하여 root 비밀번호를 root로 설정할 수 있습니다.

$ sudo mysql --user=root mysql

이것은 MySQL 5.6 이하인 경우 mysql 내부에서 수행 할 설정 루트 비밀번호입니다.

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

MySQL 5.7 이상에서

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

거기에서 mysql을 종료하고 (실행중인 msqld를 종료하십시오) 정상적으로 실행하십시오.

mysql 서비스 시작 및 중지에 대한 참고 사항 :

mysql을 중지하십시오.

$ sudo service mysql stop

mysql 시작 (정상) :

$ sudo service mysql start

임시 mysql 안전 모드 세션을 종료하십시오.

$ sudo mysqladmin shutdown

11
mysql 5.7.12에는 사용자 테이블에 password라는 열이 없습니다. 따라서 다음 명령이 나를 위해 일했습니다. 사용자 설정 업데이트 authentication_string = PASSWORD ( 'new-password') 여기서 user = 'root';
코드

7
나는 아직도 받고있다ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr

@ ErelSegal-Halevi해야 할 두 가지가 있습니다. 를 실행하십시오 $ mysql_upgrade -u root -p. 또한 RP Singh에서 제공 한 위의 명령을 시도하십시오.
LD James

또한이 오류가 계속 발생합니다.
Jamie Hutber

SET PASSWORD FOR 'root' = PASSWORD('your-password')mariadb를 사용하는 경우
user1036719

37

mysqlUbuntu 16.04에 설치하는 동안 암호를 묻지 않지만 다음과 같은 방법으로 성공적으로 설치 한 후에 암호를 설정할 수 있습니다.

mysql 설치가 완료되면 다음 명령을 실행하십시오 :

sudo mysql_secure_installation

다음과 같이 표시됩니다.

참고 :이 스크립트의 모든 부분을 실행하는 것은 생산중인 모든 MariaDB 서버에 권장됩니다! 각 단계를주의 깊게 읽으십시오!

MariaDB에 로그인하여 보안을 유지하려면 루트 사용자의 현재 비밀번호가 필요합니다. MariaDB를 방금 설치했는데 아직 루트 비밀번호를 설정하지 않은 경우 비밀번호가 비어 있으므로 여기에서 Enter 키를 눌러야합니다.

Enter current password for root (enter for none): (여기에서 Enter 키를 누릅니다)

좋아, 암호를 성공적으로 사용했습니다.

루트 암호를 설정하면 적절한 권한이 없으면 아무도 MariaDB 루트 사용자에 로그인 할 수 없습니다.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

비밀번호가 성공적으로 업데이트되었습니다! 권한 테이블을 다시로드하는 중 .. ... 성공!


Ubuntu 18.04 또는 mysql-server버전 5.7.22의 경우이 방법이 작동하지 않습니다

Ubuntu 18.04에서 루트 암호를 설정하려면 먼저 LD James의 답변 중 처음 세 명령 또는 처음 두 단계를 수행 한 다음,

mysql> alter user 'root'@'localhost' identified by '<password>';

루트 사용자의 비밀번호가 설정되었습니다!

또는

18.04에서 루트 비밀번호를 설정하려면 다음 단계를 수행하십시오.

루트 사용자에 설정된 비밀번호가 없으므로 빈 비밀번호로 로그인하면됩니다.

sudo mysql -u root -p
Enter password: (press enter as no password is set)

그런 다음 쉽게 쿼리를 실행할 수 있습니다

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

2
이 질문의 경우 문제는 사용자가를 모르기 때문에 언급 한 메시지를받을 수 없다는 것 current password for root입니다.
LD 제임스

@LDJames 네, 맞습니다. 나는 달리기를 할 때 ERROR : 1405에 대해 기억하지 mysql_secure_installation못하지만 sudo mysql_secure_installation나를 위해 일했습니다. mysql 설치는 암호를 요구하지 않습니다. 나도 똑같이 일어났다. 와 here press enter키를 눌러 암호없이 입력을 의미합니다.
데이지

2
concers으로 우분투 18.04하거나 빈 암호로 심지어 루트 패스를 재설정 한 후 연결되지 않습니다 9+ 데비안, 아직 연결을 거부
chefarov

@chefarov 강렬한 좌절 같은 문제에 직면
RedactedProfile

사실, 나는 여전히 같은 오류 얻을
제이미 Hutber

16

분명히 16.04 (또는 5.7 설치?)에 mysql-server를 설치하면 암호가 아닌 auth_socket 플러그인 을 통해 루트 액세스가 가능합니다 . 실행 sudo mysql -u root(OA 암호 / w NB)하는 것은 비 루트로 명령을 실행하는 반면 당신에게 MySQL의 콘솔을 줄 것이다하는 것은 암호를 묻는 메시지를 표시합니다.

인증 백엔드는 비밀번호를 확인하지 않기 때문에 비밀번호를 변경해도 큰 차이는 없습니다. 플러그인변경하고 암호 인증으로 전환 하는 방법에 대한 매우 포괄적 인 기사가 있습니다 .


4
apt install mysql-server18.04에 비밀번호를 지정하지 않고 새로 설치하여 확인할 수있었습니다 . 증상과 해결책은 정확히 설명 된대로입니다.
EricC

그래서 어떻게 연결합니까?
Jamie Hutber

9

설치 후 :

1.

sudo mysql

(예, 사용자 없음 패스 없음)

2. 이제 mysql 콘솔에 있습니다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

삼.

FLUSH PRIVILEGES;

  1. 그게 다야. 다음에 평소대로 콘솔에 들어갈 수 있습니다.

    mysql -u 루트 -p my_new_pass


3
다른 많은 답변을 시도했지만이 답변은 Amazon EC2에서 작동했습니다.
Haris ur Rehman

2
이것이 WSL Ubuntu (Linux의 Windows)에 대한 정답입니다.
페르 가르시아

2
이것은 Google 클라우드의 우분투 18.04 새로 설치에서 나를 위해 일한 유일한 대답입니다.
Aakash

1
우분투 19.04에서 나를 위해 일했습니다. mysql_secure_myinstallation을 실행했지만 루트 암호가 설정되지 않은 것 같습니다.
Jens Wagemaker

1
수십 가지 솔루션을 시도했습니다. 이것은 가장 쉽고 유일한 방법이었습니다.
mreff555

4
  1. 기본 사용자 계정이 있습니다.

    $ vim /etc/mysql/debian.cnf 
    

    이 계정을 다음과 같이 얻을 수 있습니다.

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. 이 계정으로 로그인

    $ mysql -u debian-sys-maint -p
    
  3. 루트 비밀번호 편집

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. MySQL을 다시 시작

    $ /etc/init.d/mysql restart;
    

mysql -u root -p이전 설정으로 할 수 있습니다 .


나는 다른 모든 솔루션을 시도했지만 이것이 나를 위해 일한 유일한 방법입니다. (리눅스 민트 19.2).
ElectroBuddha

0

주 답변에 추가하면

" mysqld_safe / var / lib / mysql의 데이터베이스로 mysqld 데몬 시작하기 "

다음 명령을 입력하려면 다른 터미널 창을 사용해야한다는 것을 기억하십시오.

$ sudo mysql --user=root mysql

같은 창에서 시도하면 mysqld 안전 모드 프로세스가 종료됩니다.


-1

여기에 방법이 설정에있어 mysql-serverA를 단말기 암호를 입력하라는 메시지 우분투 18.10 인치

  1. https://dev.mysql.com/downloads/repo/apt/ 를 통해 MySQL APT 리포지토리를 다운로드 하십시오.
  2. cd다운로드하여 실행 한 디렉토리에 dpkg -i mysql-apt-config_0.8.13-1_all.deb(버전 번호 확인)
  3. 프롬프트 메뉴에서 마지막 옵션 "ok"를 선택한 다음 "ok"를 다시 선택하십시오.

  4. mysql-server 및 mysql-client를 업데이트하고 설치하십시오.

sudo apt 업데이트
sudo apt 설치 mysql-server mysql-client
  1. promt에 루트 암호를 입력하십시오.
  2. 선택 "Use Legacy Authentication Method"당신이 프레임 워크 / 새로운 지원하지 않습니다 (예 : laravel 등) 응용 프로그램을 실행하면 "Strong Password Encryption"아직 당신의 프레임 워크 / 응용 프로그램 지원, 그렇지 않은 경우, "Strong Password Encryption"다음을 선택합니다.
  3. 루트로 로그인하여 작동하는지 확인하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.