【问题标题】:#1130 - Host 'localhost' is not allowed to connect to this MySQL server - After running an Acunetix scan#1130 - 主机 'localhost' 不允许连接到此 MySQL 服务器 - 运行 Acunetix 扫描后
【发布时间】:2013-08-29 05:37:50
【问题描述】:

我知道这类问题已被问过很多次,但没有人回答我的问题。 请仔细阅读。

我通常使用 Wamp 服务器在 localhost 上运行我的网站。今天我决定在我的 localhost 服务器上运行 Acunetix 扫描以查找漏洞。

Acunetix 在短时间内向 mysql 表发送了大量命令(因为它是 localhost,所以命令运行速度很快)导致我的 mysql 服务器因错误而崩溃:

#1130 - Host 'localhost' is not allowed to connect to this MySQL server 

我已经尝试过的:

通过 mysqld --skip-grant-tables 运行 mysql 我可以访问mysql,所以我尝试运行

DROP USER 'root'@'127.0.0.1'; GRANT ALL PRIVILEGES ON . TO 'root'@'%';

但我得到了错误:

mysql> DROP USER 'root'@'127.0.0.1'; GRANT ALL PRIVILEGES ON . TO 'root'@'%';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables opt
ion so it cannot execute this statement
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'TO 'r
oot'@'%'' at line 1

我承认我确实是一个 mysql 菜鸟,但我做了功课并搜索了谷歌,但无法找到解决方案。

有什么帮助吗?

我通过重新安装 wamp 服务器并完全卸载(即使使用 mysql)来解决问题。

【问题讨论】:

    标签: mysql phpmyadmin wamp


    【解决方案1】:
         GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';
    

    http://dev.mysql.com/doc/refman/5.1/en/adding-users.html

    编辑。

    这是因为您的 mysql 服务器在 read_only 选项上。关闭它

    以root用户连接服务器:

    mysql-h localhost-u root-p
    

    然后运行命令:

    mysql> set GLOBAL read_only = false;
    
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> UNLOCK TABLES;
    

    EDIT2;

    你必须停止服务器并运行它

    mysqld_safe --skip-grant-tables 由于 root pwd chg

    所以停止服务器并用 start 正常启动它

    【讨论】:

    • 我也不能用那个。我收到错误:ERROR 1290 (HY000): MySQL 服务器正在使用 --skip-grant-tables 选项运行,因此无法执行此语句
    • 感谢您的快速回复。但不幸的是它仍然无法正常工作。这是我做的:pastebin.com/aqFjcrzX
    • C:\wamp\bin\mysql\mysql5.5.24\bin>mysqld_safe 'mysqld_safe' 不是内部或外部命令、可运行程序或批处理文件。
    • 改用这个mysqld --skip-grant-tables
    • 运行这段代码前一定要先停止mysql,然后再启动
    【解决方案2】:

    当您的服务器使用 --skip-grant-tables 运行时,您会禁用所有 MySQL 安全性,因此不允许使用 GRANT 命令。您可以做的是访问“mysql”数据库并直接选择和更新您需要更改的行。在您的情况下,它将是用户表。

    【讨论】:

    • 您好,谢谢您的回答。由于 Phpmyadmin 无法正常工作,请问您可以给我查询吗?我应该更新什么?
    • 如果我理解你的需要,你应该试试这个:使用mysql;更新用户集 Host='%' 其中 User='root' and Host='127.0.0.1';刷新权限;但我不确定“刷新特权”是否有效;如果没有,只需在“更新”语句之后重新启动您的 MySQL 服务器。
    • 也许重新创建您的权限表会更容易,请参阅dev.mysql.com/doc/refman/5.5/en/mysql-install-db-problems.html
    • 我设法通过重新安装 wampserver 来修复它。非常感谢朋友。
    • @MarcDelisle,如果不允许访问grant,如何允许访问底层mysql 表?这不是完全矛盾吗?
    【解决方案3】:

    我有同样的问题。

    您可以将skip-grant-tables 添加到[mysqld] 标记的my.ini 文件中,在# The MySQL server 下,然后重新启动mysql 服务器。

    您现在可以打开 phpmyadmin 并转到 mysql 数据库中的用户表。确保密码属性的值为空且主机属性的值为 localhost。我面临第二个错误。 PHPMyAdmin 试图将主机值连接为“localhost”,并且该表包含值 127.0.0.1。

    从 my.ini 中删除 skip-grant-tables 并重新启动 mysql 服务器。这应该有效。

    【讨论】:

      【解决方案4】:

      一个简单的图解解决方案!

      【讨论】:

      • 这在更新 Windows 操作系统后开始发生。并且,按照上述步骤解决。
      【解决方案5】:

      我通过重新安装服务器解决了这个问题。 新配置 (my.ini) 不包含 --skip-grant-tables 选项,我可以按预期连接到服务器。

      在进行新安装之前不要忘记备份您的数据库。

      【讨论】:

        猜你喜欢
        • 2011-02-26
        • 2011-02-02
        • 2013-02-11
        • 2023-03-29
        • 2021-06-23
        • 2017-08-26
        • 2019-11-29
        • 2013-03-31
        相关资源
        最近更新 更多