9

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

我通常使用 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。

4

5 回答 5

11

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

在此处输入图像描述

于 2020-01-28T11:22:51.193 回答
6

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

于 2013-08-26T17:32:56.213 回答
6

我遇到过同样的问题。

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

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

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

于 2019-07-19T15:50:06.787 回答
3
     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;

编辑2;

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

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

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

于 2013-08-26T16:55:45.847 回答
0

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

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

于 2021-12-23T08:30:13.807 回答