it-swarm-ko.tech

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

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

14
slolife

MySQL 참조 설명서에서 루트 암호 재설정에 대한 장 를 읽고 실행합니다.

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

15
David Schmitt

Debian/Ubuntu 상자 인 경우 debian-sys-maint라는 특별한 루트에 해당하는 계정이 있습니다. / etc/mysql/debian.cnf에서 암호를 읽을 수 있습니다.

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

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

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

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

이제 새 암호를 사용하여 루트에 액세스 할 수 있습니다.

mysql -uroot -p
6
Brent

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

CREATE USER [email protected];

나는 얻었다

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

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

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

3
kqw

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 서버를 다시 시작하십시오.
0
Saurabh Hooda