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

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

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

答案1

读取并执行重置 root 密码的章节在 MySQL 参考手册中。

此过程无需授权即可启动 mysql 守护程序,允许您在不提供凭据的情况下进行连接。在此模式下,您可以正常连接,并重置密码和授权。之后,请不要忘记在获得适当授权的情况下重新启动 mysql。

答案2

如果这是 Debian/Ubuntu 系统,则有一个特殊的 root 等效帐户,称为debian-系统维护您可以在/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

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

注意:找到正确数量的“Y”是INSERT一件非常困难的事情。

答案4

随着脚步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 服务器。

相关内容