我知道很多次都会问这类问题,但没有人回答我的问题。 请仔细阅读。
我正常使用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 noob,但我做了我的家庭作业并搜索了谷歌,但无法找到解决方案。
任何帮助?
我通过重新安装wamp服务器并完全卸载来解决问题,即使使用mysql也是如此。
答案 0 :(得分:5)
当您的服务器使用--skip-grant-tables运行时,您将禁用所有MySQL安全性,因此您不允许使用GRANT命令。你可以做的是访问“mysql”数据库并直接选择和更新你需要更改的行。在您的情况下,它将是用户表。
答案 1 :(得分:5)
答案 2 :(得分:3)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';
http://dev.mysql.com/doc/refman/5.1/en/adding-users.html
EDIT。
这是因为你的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
所以停止服务器并以启动
启动它答案 3 :(得分:1)
我有同样的问题。
您可以在skip-grant-tables
下的[mysqld]
标签的my.ini文件中添加# The MySQL server
,然后重新启动mysql服务器。
您现在可以打开phpmyadmin并转到mysql数据库中的user表。确保password属性的值为空,并且host属性的值为localhost。我正面临第二个错误。 PHPMyAdmin尝试使用主机值“ localhost”进行连接,并且该表包含值127.0.0.1。
从my.ini中删除skip-grant-tables,然后重新启动mysql服务器。这应该工作。