"상속"된 MySQL 데이터베이스가 있는데 관리자 자격 증명이 제공되지 않았습니다. 그러나 나는 그것이 실행되는 상자에 액세스 할 수 있습니다. 관리자 자격 증명을 복구하거나 새 자격 증명을 만드는 방법이 있습니까?
MySQL 참조 설명서에서 루트 암호 재설정에 대한 장 를 읽고 실행합니다.
이 절차는 인증없이 mysql 데몬을 시작하므로 자격 증명을 제공하지 않고 연결할 수 있습니다. 이 모드에서는 정상적으로 연결하고 비밀번호를 재설정하고 권한을 부여 할 수 있습니다. 그 후에 적절한 인증을받은 상태에서 mysql을 다시 시작하는 것을 잊지 마십시오.
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
내 루트 사용자가 존재하지 않았습니다. 의 위에
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입니다.
MySQL Reference Manual 의 단계가 명확하지 않으므로 여기에 더 쉬운 언어로 대답하려고합니다. (이 답변은 MacBook OSX 사용자와 관련이 있습니다) :
my.cnf
을 찾습니다. (저에게는 /Applications/XAMPP/xamppfiles/etc
에 배치되었습니다. 찾을 수없는 경우 검색 할 수 있습니다.).my.cnf
파일을 엽니 다."skip-grant-tables"
섹션 끝에 [mysqld]
(따옴표 제외)를 추가하고 파일을 저장합니다.skip-grant-tables
옵션으로 시작합니다.Terminal
을 열고 mysql
명령 실행mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit