MySQL 루트 비밀번호를 찾는 방법


167

MySQL 루트 비밀번호를 알 수 없습니다. 어떻게 알 수 있습니까? 이 비밀번호가 저장된 파일이 있습니까?

링크를 따르고 있지만 로컬에 directadmin 디렉토리가 없습니다.


간단한 Google 검색에서 발견 : dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran

11
기본 루트 비밀번호는 "기다리세요"(따옴표없이) 또는 전혀 비밀번호가 없습니다 (그리고 mysql 서버가 실제로 당신의 것입니다)
Nikola Bogdanović

예, 그것은 내 노트북에 내 로컬 mysql 서버입니다
Om3ga

그래서 누군가 가이 질문을 통과하고 각 정답과 관련 답변 에 대한 하향 투표를 덤프 했습니까?
lanzz

답변:


142

@thusharaK 덕분에 이전 비밀번호를 몰라도 루트 비밀번호를 재설정 할 수있었습니다.

우분투에서 다음을 수행했습니다.

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

그런 다음 새 터미널에서 mysql을 실행하십시오.

mysql -u root

다음 쿼리를 실행하여 비밀번호를 변경하십시오.

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

MySQL 5.7에서는 mysql.user 테이블 필드의 비밀번호 필드가 제거되었으며 이제 필드 이름은 'authentication_string'입니다.

mysql 안전 모드를 종료하고 다음을 수행하여 mysql 서비스를 시작하십시오.

mysqladmin shutdown
sudo service mysql start

24
mysqladmin -u root -p shutdown새 비밀번호로을 사용해야했습니다 .
SL 바스-복원 모니카

2
좋은 수업 흐름 : 특히 새로운 터미널에서 mysql을 실행
Mohammed Subhi Sheikh Quroush

8
나는 이것을 할 수 없다 mysql -u root. 오류가 Access denied
표시됨

4
@AvinashRaj : 이것을 시도하십시오 : sudo mysql -u root
Allen Gingrich

대박. RHEL 7에서 작동 한 것을 이해하고 있습니다. 터미널 1 : sudo service mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking 터미널 2 : mysql -u root UPDATE mysql.user SET Password = PASSWORD ( '새 비밀번호') WHERE User = 'root'; 홍당무; mysqladmin -u root -p shutdown 참고 : 일단 mysqladmin을 종료하면, 터미널 1에서 안전 모드가 종료되는 것을 볼 수 있습니다. sudo service mysql start 그게 다입니다. 새로운 암호를 가진 매력처럼 작동합니다!
StackOverFlow 사용자

65

해시 된 비밀번호를 볼 수 없습니다. 당신이 할 수있는 유일한 것은 그것을 재설정하는 것입니다!

MySQL 중지 :

sudo service mysql stop

또는

$ sudo /usr/local/mysql/support-files/mysql.server stop

안전 모드에서 시작하십시오.

$ sudo mysqld_safe --skip-grant-tables

(위 줄은 전체 명령입니다)

프로세스가 완료 될 때까지 계속 진행되는 명령이므로 다른 쉘 / 터미널 창을 열고 암호없이 로그인하십시오.

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQL 5.7 이상 :

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

MySQL을 시작하십시오 :

sudo mysql start

또는

sudo /usr/local/mysql/support-files/mysql.server start

새 비밀번호는 'password'입니다.


sudo /usr/local/mysql/support-files/mysql.server 중지 sudo : /usr/local/mysql/support-files/mysql.server : 명령을 찾을 수 없음
Isuru

이 경우 어떻게해야합니까?
Isuru

mysql이 제대로 설치되지 않은 것 같습니다. 올바르게 제거한 후 다시 설치하십시오.
tk_

매우 감사합니다. 뭔가 mysql_secure_installation이상 해졌고 루트는 더 이상 협력하지 않았습니다. 뭐라고합니까 authentication_string설정은 무엇입니까?
것이다

3
다시 시작하려면 mysqladmin -u root -p shutdown새 암호로 시도 하십시오sudo service mysql start
forumulator

37

MySQL 5.7 이상은 MySQL 로그 파일에 루트를 저장합니다.

이것을 시도하십시오 :

sudo grep 'temporary password' /var/log/mysqld.log

제 경우에는 암호가 여기에 없었습니다. 그러나, 대신, /var/log/mysql/error.log루트 암호가 비어있는 것에 대해 경고를 포함 - :) 저장 내 하루의 이런 종류의 너무
Janaka 다라

19

mySQL을 새로 설치할 때 나를 놀라게 한 이유는 왜 기본 암호를 사용할 수 없으며 왜 재설정 방법이 작동하지 않는지 궁금합니다. 우분투 18에서 가장 최신 버전의 mysql 서버는 기본적으로 루트 사용자에 대해 암호 인증을 전혀 사용하지 않습니다. 따라서 이것은 무엇을 설정하든 상관없이 사용할 수 없다는 것을 의미합니다. 특권 소켓에서 로그인 할 것으로 예상합니다. 그래서

mysql -u root -p

올바른 비밀번호를 사용하더라도 전혀 작동하지 않습니다 !!! 입력 한 내용에 관계없이 액세스가 거부됩니다.

대신에 당신은 사용해야합니다

sudo mysql

암호없이 작동합니다. 그런 다음에 입력하면

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

그런 다음 로그 아웃하면 피 묻은 것이 마침내 암호를 수락합니다.



14

Windows 시스템에서 비밀번호를 재설정하려면 다음 단계를 수행하십시오.

  1. 작업 관리자에서 MySQL 서비스 중지

  2. 텍스트 파일을 만들고 아래 문장을 붙여 넣습니다.

MySQL 5.7.5 이하 :

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');


MySQL 5.7.6 이상 :

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';

  1. 다른 이름으로 저장 mysql-init.txt하고있는 놓습니다 'C' drive.

  2. 명령 프롬프트를 열고 다음을 붙여 넣습니다.

C:\> mysqld --init-file=C:\\mysql-init.txt


2
이것은 생명의 은인이었다, 훌륭한 팁!
Nicholas Kreidberg

Centos7에서 일했습니다 mysqld --init-file=/root/m.txt. 위의 명령 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');/root/m.txt에
Damodar Bashyal

8

패키지 관리자가 설치 중에 루트 암호를 입력하도록 요청하지 않으면 기본 루트 암호는 빈 문자열입니다. 새로 설치된 서버에 연결하려면 다음을 입력하십시오.

shell> mysql -u root --password=
mysql>

암호를 변경하려면, 유닉스 쉘을 되찾아 다음을 입력하십시오 :

shell> mysqladmin -u root --password= password root

새 비밀번호는 'root'입니다. 이제 서버에 연결하십시오 :

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

죄송합니다. 비밀번호가 변경되었습니다. 새로운 것을 사용하십시오 root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

빙고! 새로운 흥미로운 일을

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

모리


1
기본적으로 비밀번호를 사용하지 않고 인증 된 소켓을 사용합니다. 비밀번호를 변경하는 것만으로는 더 이상 충분하지 않습니다.
키트 라모스

7

다른 답변 외에도 cpanel 설치에서 mysql 루트 비밀번호는이라는 파일에 저장됩니다 /root/.my.cnf. cpanel 서비스는 변경시 다시 재설정하므로 다른 답변은 도움이되지 않습니다.


6

당신은 mysql 루트 암호를 볼 수 있습니다.

nano ~/.my.cnf

4

이것은 나를 위해 일했다 :

터미널에서 다음을 입력하십시오.

$ sudo mysql -u root -p

비밀번호 를 입력하십시오 : Enter를 누르 십시오.

MySQL>


mysql 서버는 더 이상 기본적으로 비밀번호 인증을 사용하지 않는 것 같습니다. 로그인 방법을 변경할 때까지 액세스하려면 수퍼 유저 (sudo)로 mysql 클라이언트를 시작해야합니다.
키트 라모스

4

mysql 서버를 즉시 설치 한 후 나를 위해 일한 기본 비밀번호는 다음과 같습니다. mysql


2
아마도 그는 그 질문에 대답하지 않았지만, 여기에 오는 많은 사람들이 그 문제를 해결할 수있을 것입니다.
Ohad Cohen

3

절차는 MySql 버전에 따라 다릅니다. 해당 버전에 대해 설명 된대로 정확하게 절차를 따르십시오.

  • 힌트-사용중인 MySql 버전의 지침 페이지를 읽기 전에 *

  • 5 단계 : CMD를 실행하는 대신 CDM.exe를 호출하는 바탕 화면에 바로 가기를 만듭니다. 그런 다음 바로 가기를 마우스 오른쪽 버튼으로 클릭하고 "관리자로 실행"을 선택하십시오.

  • 6 단계 : 첫 번째 제안 된 버전의 명령을 건너 뛰고 --defaults-file 매개 변수가있는 두 번째 버전을 실행하십시오.

  • 명령을 실행 한 후 모든 것이 정상이면 CMD 창이 열려 있고 6 단계 명령이 계속 실행됩니다. 창을 닫고 ( 'x'클릭) 작업 관리자에서 MySQl을 강제로 닫습니다.

  • SQL 명령으로 파일을 삭제하고 MySQL을 다시 시작하십시오. 지금 비밀번호를 변경해야합니다.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... 링크에서 버전을 변경하십시오 (5.5, 5.6, 5.7)


3

MySQL이 작동하는 데이터 폴더 내의 "hostname".err 파일에서 다음으로 시작하는 문자열을 찾으십시오.

"roor @ localhost에 대한 임시 비밀번호가 생성됩니다"

당신이 사용할 수있는

less /mysql/data/dir/hostname.err 

슬래시 명령 다음에 찾고자하는 문자열

/"A temporary password"

그런 다음 n을 눌러 다음 결과로 이동하십시오.



0

체계:

  • CentOS Linux 7
  • mysql Ver 14.14 배포 5.7.25

순서:

  1. 하나는 Linux 루트 사용자로 로그인하고 다른 하나는 mysql명령에 액세스 할 수있는 비 루트 사용자로 로그인하여 두 개의 쉘 세션을여십시오 .

  2. 루트 세션에서 정상 mysqld에 리스너를 중지하고 암호 인증 우회 리스너를 시작합니다 ( 참고 :이 상당한 보안 위험이 받는 액세스 할 수있는 모든 사용자로 mysql 암호없이 데이터베이스에 액세스 할 수있는 명령은 가까운 액티브 쉘 세션을 할 수 있습니다. 이 작업을 수행하기 전에 셸 액세스를 비활성화하십시오.

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. 비 루트 세션에서 mysql에 로그인하고 mysql 루트 비밀번호를 설정하십시오.

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. 루트 세션에서 비밀번호없는 mysqld 인스턴스를 종료하고 일반 mysqld 리스너를 서비스로 복원하십시오.

    # kill %1
    # systemctl start mysqld

  5. 비 루트 세션에서 위에서 구성한 새 루트 비밀번호를 테스트하십시오.

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

나는 이것을 다른 방법으로 해결했다.

안전 모드에서 시작하려고 시도했지만 오류와 연결할 수 없으므로이 방법을 사용했습니다. 오류 2002 (HY000) : 소켓 '/var/run/mysqld/mysqld.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2)

내가 한 일은 정상적으로 루트로 연결하는 것이 었습니다.

$ sudo mysql -u root

그런 다음 새로운 수퍼 유저를 만들었습니다.

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

그런 다음 myuser로 로그인

$ mysql -u myuser -p -h localhost

암호를 변경하려고하면 오류가 발생하지 않았지만 아무것도하지 않았으므로 루트 사용자를 삭제하고 다시 만들었습니다.

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

루트 사용자는 이제 새로운 비밀번호로 작업하고 있습니다


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.