我有一个“继承”的 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 用户相关):
- 由于我们不知道当前密码,MySQL 服务器需要跳过/绕过当前登录凭据。指示 MySQL 服务器跳过访问授权表,方法是:
- 停止 MySQL 服务器(如果它已经在运行)。
- 找到您的 MySQL 配置文件
my.cnf
。(对我来说,它位于 @/Applications/XAMPP/xamppfiles/etc
。如果找不到,您可以搜索)。 my.cnf
在任何文本编辑器中 打开文件。"skip-grant-tables"
在部分末尾添加(不带引号)[mysqld]
并保存文件。- 现在启动你的 MySQL 服务器。它将以
skip-grant-tables
选项启动。
- 打开
Terminal
并运行mysql
命令 - 执行命令
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
- 执行命令
mysql> FLUSH PRIVILEGES;
- 执行命令
mysql> exit
- 重新启动 MySQL 服务器。