我有一个MySQL数据库,我“inheritance”,我没有给予pipe理员凭据。 然而,我确实可以访问它运行的盒子。 有没有办法恢复pipe理员凭据或创build新的?
阅读并执行“ MySQL参考手册”中有关重置根密码的章节 。
这个过程在没有授权的情况下启动mysql守护进程,允许你连接而不提供凭据。 在这种模式下,您可以正常连接,并重置密码和授权。 之后不要忘记在适当的授权下再次启动mysql。
如果这是一个Debian / Ubuntu盒子,那么有一个特殊的与root相同的账户叫debian-sys-maint 。 您可以在/etc/mysql/debian.cnf中读取密码
使用该密码,您可以使用以下命令以debian-sys-maint身份login到mysql:
mysql --defaults-file=/etc/mysql/debian.cnf mysql
login后,请执行以下操作:
update user set password=password('<new password>') where user='root'; flush privileges; quit;
现在可以使用你的新密码访问root了:
mysql -uroot -p
我的root用户不存在。 上
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
(而且这个可以而且应该是自动化的)
注意:在INSERTfind正确数量的“Y”是PITA。
由于MySQL参考手册中的步骤不是很清楚,我想用更简单的语言在这里回答。 (这个答案与MacBook OSX用户有关):
my.cnf 。 (对于我来说,它被放置在@ /Applications/XAMPP/xamppfiles/etc ,你可以search是否找不到它)。 my.cnf文件。 [mysqld]部分末尾添加"skip-grant-tables" (不带引号)并保存文件。 skip-grant-tables选项开始。 Terminal并运行mysql命令 mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit