【问题标题】:Host 'localhost' is not allowed to connect to this MySQL server - grant to root@localhost not working主机 'localhost' 不允许连接到这个 MySQL 服务器 - 授予 root@localhost 不工作
【发布时间】:2014-09-24 21:06:27
【问题描述】:

对不起,我知道这是一个常见的话题,但是......

我已通过 EzyPHP 在 Windows 7 x64 上安装了本地 mysql 服务器,但无法登录,除非在 --skip-grant-tables 选项下。

登录尝试会产生错误: 不允许主机 'localhost' 连接到此 MySQL 服务器。

所以我尝试使用 --skip-grant-tables 选项重新启动。这让我可以以 root 身份登录,甚至可以更改 root 密码。所以密码没问题。但不要运行授权声明。这就是发生的事情:

GRANT ALL on *.* to 'root'@'localhost' identified by 'ROOT PASSWORD' WITH GRANT OPTION;

返回:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement.

我也按照其他答案中的说明进行操作,例如:phpMyAdmin won't stop throwing "#1130 - Host 'localhost' is not allowed to connect to this MySQL server "

我想做的只是运行一个本地的mysql服务器来开发一个php/mysql应用程序,但是这个问题似乎无法克服。希望我遗漏了一些简单的东西,您可以指出来。

谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    没有任何使用 Windows 的经验,但首先我建议您为应用程序创建一个用户帐户,并将该帐户限制为您正在使用的数据库。

    其次,如果 root 帐户还没有权限,您需要告诉服务器重新加载授权表。

    CREATE DATABASE mydb;
    GRANT ALL ON mydb.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass';
    FLUSH PRIVILEGES;
    

    这使您的 root 帐户可以免费进行管理。 '冲洗特权;'命令将强制服务器重新加载授权表,这意味着您可以以新用户身份连接。

    大多数 UNIX/Linux 类型的系统都有一个 mysql_secure_installation 命令来简化这个过程,但是就像我说的那样,我没有使用 Windows 的经验。

    【讨论】:

    • 谢谢詹姆斯。这都是非常好的数据库实践。我的应用程序根本不使用根。在设置这个本地开发环境时,我现在正在努力解决的问题是能够完全登录到数据库 - 无论特定用户或特权如何。排序完成后,其余的就可以跟进了。
    • 没问题,在这种情况下使用 --skip-grant-tables 登录并运行:GRANT ALL ON . TO 'root'@' localhost'由'密码'识别;刷新特权;
    • 如果.. 那就是问题所在。在 ---skip-grant-tables 模式下,我尝试过的所有授权语句都返回“错误 1290 (HY000):MySQL 服务器正在使用 --skip-grant-tables 选项运行,因此无法执行此语句”跨度>
    猜你喜欢
    • 2012-06-07
    • 2011-02-02
    • 2013-02-11
    • 2015-04-22
    • 2011-02-26
    • 2023-03-29
    • 2019-11-29
    • 2012-11-12
    相关资源
    最近更新 更多