1. ホーム
  2. mysql

[解決済み] ERROR 1130 (HY000): ホスト '' はこの MySQL サーバーへの接続を許可されていません [重複] 。

2022-05-09 09:55:52

質問

なぜか、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 を使うとできません。

うわぁ...なんでこんなことになってるんだろう。 私は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)

解決方法は?

あなたの 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';

もし、あなたが % というのは、quot;any remote source"であるからです。しかし、すべてのシステムに root 経由で接続させたい場合は % のワイルドカードを使用して、アクセスを許可します。

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

最後にパーミッションを再読み込みすれば、リモートアクセスが可能になるはずです。

FLUSH PRIVILEGES;