MySQL의 관리자 계정 비밀번호를 재설정하거나 복구하는 방법은 무엇입니까?


14

"상속 된"MySQL 데이터베이스가 있고 관리자 자격 증명이 제공되지 않았습니다. 그러나 나는 그것이 실행되는 상자에 액세스 할 수 있습니다. 관리자 자격 증명을 복구하거나 새로운 자격 증명을 만드는 방법이 있습니까?

답변:


15

MySQL Reference Manual 의 루트 암호 재설정에 관한 장을 읽고 실행 하십시오 .

이 절차는 인증없이 mysql 데몬을 시작하여 자격 증명을 제공하지 않고 연결할 수 있도록합니다. 이 모드에서는 정상적으로 연결하고 비밀번호와 권한을 재설정 할 수 있습니다. 그런 다음 적절한 권한을 부여하여 mysql을 다시 시작하는 것을 잊지 마십시오.


6

이것이 데비안 / 우분투 박스라면, debian-sys-maint 라는 특별한 루트와 동등한 계정이 있습니다 . /etc/mysql/debian.cnf 에서 비밀번호를 읽을 수 있습니다

이 비밀번호를 사용하여 다음을 사용하여 mysql에 debian-sys-maint로 로그인 할 수 있습니다.

mysql --defaults-file=/etc/mysql/debian.cnf mysql

로그인 한 후 다음을 수행하십시오.

update user set password=password('<new password>') where user='root';
flush privileges;
quit;

이제 새 비밀번호를 사용하여 root에 액세스 할 수 있습니다 :

mysql -uroot -p

3

내 루트 사용자가 존재하지 않았습니다. 의 위에

CREATE USER root@localhost;

알았어

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

해결책은

mysqld_safe  --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

그 후 나는 약간의 도움을 받아 모든 priv을 하나씩 추가했습니다.

mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N

(이것은 더 자동화 될 수 있고 자동화되어야합니다)

참고 :에서 'Y'의 올바른 수를 찾는 INSERT것은 PITA입니다.


0

MySQL Reference Manual의 단계 가 명확하지 않기 때문에 더 쉬운 언어로 여기에 대답하려고합니다. (이 답변은 MacBook OSX 사용자와 관련이 있습니다) :

  1. 현재 비밀번호를 모르기 때문에 MySQL 서버는 현재 로그인 자격 증명을 건너 뛰거나 우회해야합니다. 다음과 같이 MySQL 서버에 액세스 권한 부여 테이블을 건너 뛰도록 지시하십시오.
    • MySQL 서버를 중지하십시오 (이미 실행중인 경우).
    • MySQL 구성 파일을 찾으십시오 my.cnf. (나를 위해 @ 배치되었습니다 /Applications/XAMPP/xamppfiles/etc. 찾을 수 없으면 검색 할 수 있습니다).
    • my.cnf텍스트 편집기에서 파일을 엽니 다 .
    • 섹션 "skip-grant-tables"끝에 따옴표없이 추가 [mysqld]하고 파일을 저장하십시오.
    • 이제 MySQL 서버를 시작하십시오. skip-grant-tables옵션 부터 시작 하겠습니다.
  2. 명령 열기 Terminal및 실행mysql
  3. 실행 명령 mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. 실행 명령 mysql> FLUSH PRIVILEGES;
  5. 실행 명령 mysql> exit
  6. MySQL 서버를 다시 시작하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.