在 CentOS 5.x 上,我使用了 webmin 面板,在 mysql 设置中,我试图允许“root”从我的家庭 ip 以及 localhost 登录。在主机列表中,我有“any”或“localhost”,我试图将其设置为“localhost,84.xx.xx.xx”,认为这将允许我使用 mysql 管理员程序从本地计算机登录。
保存输入的数据后,我无法在 mysql 上执行很多操作
Webmin 说DBI connect failed : Access denied for user ''@'localhost' to database 'mysql'
在 SSH mysql 中说ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
我的猜测是,由于我输入了错误的主机,mysql 不再允许 root 从任何主机连接。
我尝试卸载并重新安装 mysql,但没有变化。有没有办法重置它?我没有数据库数据,如果需要,我可以删除所有内容。
谢谢。
答案1
以 root 身份登录终端并停止 mysql 守护进程。
/etc/init.d/mysqld stop
然后启动 mysql 守护进程并跳过存储密码和其他权限信息的授权表
mysqld_safe --skip-grant-tables &
您应该看到 mysqld 成功启动。现在您应该能够无需密码连接到 mysql。
mysql --user=root mysql
然后更新相关信息:
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;
然后像平常一样重新启动 mysql 守护进程
/etc/init.d/mysqld restart
另请查看MySQL 文档如果你遇到困难,可以帮你
答案2
您需要使用--skip-grant-tables
选项启动 mysql。请查看这一页。之后,您应该能够连接到 mysql 数据库。然后您可以修复错误。