9

この種の質問が何度も寄せられていることは知っていますが、私の問題に答えるものはありません。注意深く読んでください。

通常、Wampサーバーを使用してlocalhostでWebサイトを実行していました。今日、私は自分のローカルホスト サーバーの脆弱性に対して 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 初心者であることを認めますが、宿題をしてグーグルを検索しましたが、解決策を見つけることができませんでした。

助けはありますか?

mysqlを使用しても、wampサーバーを再インストールして完全にアンインストールすることで、問題を解決できました。

4

5 に答える 5

6

サーバーが --skip-grant-tables で実行されている場合、すべての MySQL セキュリティを無効にして、GRANT コマンドを許可しないようにします。できることは、「mysql」データベースにアクセスし、変更する必要がある行を直接 SELECT および UPDATE することです。あなたの場合、それはユーザーテーブルになります。

于 2013-08-26T17:32:56.213 に答える
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;

EDIT2;

サーバーを停止してこれを実行する必要があります

mysqld_safe --skip-grant-tables root pwd chg による

サーバーを停止し、通常の起動で起動します

于 2013-08-26T16:55:45.847 に答える