MySQL 根问题(根用户访问被拒绝)

MySQL 根问题(根用户访问被拒绝)

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

  1. 关闭 MySQL

  2. 使用以下命令启动 MySQL:mysqld --skip-grant-tables --skip-networking

  3. 在 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;
    
  4. 关闭 MySQL

  5. 像平常一样启动 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;

相关内容