MySQL サーバーに接続できない!? エラーメッセージ "Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server" の原因と解決方法
エラーメッセージ "Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server" の解説
原因
このエラーメッセージが表示される原因は、主に以下の2つです。
- 接続元のホストが、MySQL サーバーのアクセス許可リストに登録されていない
- MySQL サーバーの設定が、外部からの接続を許可していない
解決方法
このエラーメッセージを解決するには、以下の方法を試してください。
接続元のホストのアクセス許可を確認する
MySQL サーバーに接続するホストが、アクセス許可リストに登録されていることを確認します。アクセス許可リストは、MySQL サーバーの設定ファイル (my.cnf
) で設定できます。
アクセス許可リストを確認する手順
- MySQL サーバーの設定ファイル (
my.cnf
) を開きます。 bind-address
という設定項目を探します。
0.0.0.0
: すべてのホストからの接続を許可します。- その他のIPアドレス : 指定されたIPアドレスからの接続のみ許可します。
bind-address
の値を、接続を許可したいホストのIPアドレスに設定します。- MySQL サーバーを再起動します。
MySQL サーバーの設定が、外部からの接続を許可していない可能性があります。MySQL サーバーの設定ファイル (my.cnf
) で、skip-external-locking
という設定項目を確認します。
skip-external-locking 設定項目
ON
: 外部からの接続を許可します。
その他の解決方法
上記の方法で解決しない場合は、以下の方法も試してみてください。
- ファイアウォールの設定を確認する
- MySQL サーバーのバージョンを確認する
- MySQL のログを確認する
エラーメッセージ "Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server" は、接続元のホストが、MySQL サーバーへのアクセス許可を持っていないことが原因です。上記の方法を参考に、問題を解決してください。
import mysql.connector
# 接続情報
host = "xxx.xx.xxx.xxx"
user = "username"
password = "password"
database = "database_name"
# 接続
try:
connection = mysql.connector.connect(
host=host,
user=user,
password=password,
database=database,
)
except mysql.connector.Error as e:
print(f"接続エラー: {e}")
exit()
# クエリ実行
cursor = connection.cursor()
cursor.execute("SELECT * FROM テーブル名")
# 結果取得
for row in cursor:
print(row)
# 接続クローズ
cursor.close()
connection.close()
このコードを実行するには、以下の準備が必要です。
- Python 3 がインストールされていること
- MySQL Connector for Python がインストールされていること
pip install mysql-connector-python
コードの説明
host
: 接続先のMySQL サーバーのホスト名またはIPアドレスuser
: 接続するユーザー名password
: 接続するユーザーのパスワードdatabase
: 接続するデータベース名connection
: MySQL サーバーへの接続オブジェクトcursor
: クエリを実行するためのオブジェクトexecute
: クエリを実行するfetchone
: 1件分の結果を取得するclose
: 接続を閉じる
コマンドラインツール
MySQL サーバーに接続するには、mysql
コマンドラインツールを使用できます。
mysql -h host -u user -p password database
GUI ツール
MySQL Workbench の使い方
- "MySQL Connections" タブで、"Add" ボタンをクリックします。
- 接続情報を設定します。
- "Test Connection" ボタンをクリックして、接続を確認します。
- "OK" ボタンをクリックして、接続を保存します。
- Python などのプログラミング言語から接続する
- Webブラウザから接続する
MySQL サーバーに接続するには、様々な方法があります。自分に合った方法を選択して、接続してください。
mysql mysql-error-1130