web-dev-qa-db-ja.com

エラー1130(HY000):ホスト ''はこのMySQLサーバーに接続することを許可されていません

なぜああ私はなぜMySQLに接続できないのですか?

mysql -u root -ptest101 -h xxx.xxx.xxx.xxx
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server

My.cnfには以下があります

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 0.0.0.0

私も以下を走った...

'UPDATE mysql.user SET Password = PASSWORD('test101') WHERE User = 'root';
FLUSH PRIVILEGES;

ホストマシンでmysql -u root -ptest101を使用してアクセスできますが、mysql -u root -ptest101 -h xxx.xxx.xxx.xxxは使用できません。

うわー...なぜこれが起こっているのですか?私はn ubuntjです12.04

mysql> SELECT Host FROM mysql.user WHERE User = 'root';
+---------------------------------------------+
| Host                                        |
+---------------------------------------------+
| %                                           |
| 127.0.0.1                                   |
| ::1                                         | |
| localhost                                   |
+---------------------------------------------+
5 rows in set (0.00 sec)
113
Tampa

あなたのrootアカウント、およびこのステートメントはどのアカウントにも適用されますが、localhostアクセスでのみ追加されているかもしれません(これはお勧めです)。

これで確認できます。

SELECT Host FROM mysql.user WHERE User = 'root';

localhost127.0.0.1の結果しか表示されない場合は、外部ソースから接続することはできません。他のIPアドレスが表示されていて、接続元のIPアドレスが表示されていない場合は、それも表示されます。

アクセス権を付与したい各システムのIPアドレスを追加してから、特権を付与する必要があります。

CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address';

%が表示された場合は、それ以外にも "any remote source"という別の問題があります。ただし、すべてのシステムをrootで接続したい場合は、ワイルドカード%を使用してアクセスを許可します。

CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

最後に、権限をリロードすると、リモートアクセスができるはずです。

FLUSH PRIVILEGES;
242
newfurniturey

次の2つのステップは私にとっては完全にうまくいきました:

  1. ファイル/etc/mysql/my.cnfからバインドアドレスをコメントアウトします。

    #bind-address = 127.0.0.1

  2. PhpMyAdminで次のクエリを実行します。

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;

16
Ravi Garg
$mysql -u root --Host=127.0.0.1 -p

mysql>use mysql

mysql>GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'redhat@123';

mysql>FLUSH PRIVILEGES;

mysql> SELECT Host FROM mysql.user WHERE User = 'root';

mysql> CREATE USER 'name' @ '%' IDENTIFIED BY 'passWord';クエリOK、影響を受けた0行(0.00秒)

mysql>すべての特権をに 'name' @ '%'に付与します。クエリOK、影響を受けた0行(0.00秒)

mySQL> FLUSH PRIVILEGES;クエリOK、影響を受けた0行(0.00秒)

mySQL>

  1. あなたは自分の名前と%正しい方法を持っていることを確認してください
  2. 実行している可能性があるファイアウォールにポート3306を追加したことを確認します(ただし、これにより別のエラーメッセージが表示されます)

これが誰かに役立つことを願っています...

2
HappyCoder