![MySQL 根问题(根用户访问被拒绝)](https://linux22.com/image/799683/MySQL%20%E6%A0%B9%E9%97%AE%E9%A2%98%EF%BC%88%E6%A0%B9%E7%94%A8%E6%88%B7%E8%AE%BF%E9%97%AE%E8%A2%AB%E6%8B%92%E7%BB%9D%EF%BC%89.png)
我的 MySQL (5.5) 根用户遇到了一些非常奇怪的问题。我试图允许外部主机访问根用户,但似乎我的 root@localhost 没有对本地数据库的“授予选项”!我认为此时的问题是由于我认为我有两个 root@localhost 用户,两者都有不同的授予规则,但我不知道如何重新安装。
我已经尝试删除 root 用户并重新创建它(我认为),重置 root 用户密码(修改 mysql 数据库本身)
我无法使用我一直指定的密码进入 root 帐户,而是需要使用备用密码,我甚至不知道我是如何获得这个密码的...这个备用用户似乎没有完全的 root 权限,但仍然被称为 root。
--解决方案发布如下--
答案1
您可以在禁用身份验证的情况下启动 MySQL。然后,您可以创建/删除 MySQL 的管理帐户。
您可以在 MySQL 文档中找到详细信息:http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
关闭 MySQL
使用以下命令启动 MySQL:
mysqld --skip-grant-tables --skip-networking
在 mysql 中运行:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
为了较新的 MySQL 版本:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; GRANT ALL PRIVILEGES ON \*.\* TO 'root'@'localhost' WITH GRANT OPTION;
关闭 MySQL
像平常一样启动 MySQL。
答案2
找到解决方案——这是由于将 MySQL 从 MySQL 5.1 更新到 MySQL 5.5 并随之移动身份验证架构(MySQL 数据库本身)造成的。由于此架构有核心更新,因此将其与 5.5 数据库一起使用根本行不通,导致两个主要错误:无法以 root 身份授予权限 Mysql 用户已删除
答案3
尝试使用 'root'@'127.0.0.1'(不同于 'root'@'localhost')访问服务器。然后发出命令创建用户 'root'@'localhost' 并授予其所有权限
答案4
输入后SHOW GRANTS FOR 'root'@'localhost';
,我得到了一些模糊的密码,因此我在另一个系统上使用 HeidiSQL 登录到该系统的 mysql(使用root
用户名和相应的密码),然后输入
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'thepassword' WITH GRANT OPTION;
当我回到系统并使用
mysql -uroot -pthepassword;