如何重置或恢复MySQL的管理员帐户密码?


14

我有一个“继承”的MySQL数据库,但未获得管理员凭据。但是,我确实可以访问其运行的框。有没有办法恢复管理员凭证或创建新凭证?

Answers:


15

阅读并执行 MySQL参考手册》中有关重置根密码的章节

此过程将在未经授权的情况下启动mysql守护程序,使您无需提供凭据即可进行连接。在此模式下,您可以正常连接,并重置密码和授权。之后,不要忘记使用适当的权限再次启动mysql。


6

如果这是一个Debian / Ubuntu框,则有一个名为debian-sys-maint的特殊的等效于root的帐户。您可以在/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;

现在应该可以使用您的新密码访问root了:

mysql -uroot -p

3

我的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;

之后,在一点点帮助下,我将所有特权一一添加:

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

(而且这个可以而且应该更加自动化)

注意:在INSERTPITA中找到正确的“ Y”数。


0

由于《MySQL参考手册》中的步骤尚不清楚,因此我试图在此处以更简单的语言回答。(此答案与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服务器。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.