アプリケーション開発者は、ローカルサーバー以外のサーバーでホストされているデータベースへの接続で問題が発生する可能性があります。この記事では、ネットワークの外部または別のホストからリモートでMySQLデータベースに接続するときに発生する一般的なエラーを解決します。
SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server
接続要求がMySQLサーバーによって拒否されると、エラーが発生します。
リモート接続を有効にするには、次の手順を実行する必要があります–
- 構成からのリモート接続を有効にする
- 新しいユーザーを作成し、特定のホスト(またはすべてのホスト)からデータベースサーバーに接続できるようにします
- フラッシュ権限
MySQL構成からのリモート接続を有効にする
/etc/mysql/my.cnf
にあります または/etc/my.cnf
または/etc/mysql/mysql.conf.d/mysqld.cnf
。 MySQL構成ファイルの場所は、使用しているMySQLのバージョンによって異なります。これらの場所をすべてチェックして、構成ファイルが見つかるかどうかを確認してください。 Discordサーバーに参加して、構成ファイルがまだ見つからない場合はお知らせください。おそらく私たちはあなたを助けることができます。
設定ファイルが見つかったら、それを開いてコメントアウトします 行bind-address = 127.0.0.1
。
#を追加するだけです コメントアウトする行の前。
# bind-address = 127.0.0.1
新しいMySQLユーザーを作成する
ルートとしてMySQLにログイン–
sudo mysql
Or
mysql -u root -p
選択した方法に応じて、パスワードの入力を求められます。 sudo
を入力します sudo
でログインしている場合のパスワード 。
MySQLコマンドラインに入ったら、新しいユーザーを作成します–
> CREATE USER 'username'@'ip-address' IDENTIFIED BY 'set-password';
「ユーザー名」を置き換えてください ‘と希望のユーザー名‘ set-password ‘強力なパスワード、および‘ ip-address ‘上記のコマンドのリモートIPアドレスを使用します。 新しいユーザーが作成されると、次のメッセージが表示されます–
Query OK, 0 rows affected (0.02 sec)
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'ip-address';
前のコマンドのユーザー名を実際のユーザー名に置き換えてください およびIPアドレス リモートコンピュータのIPアドレス(ホスト)を使用します。 完了したら、変更を有効にするための権限をフラッシュしてください。
> FLUSH PRIVILEGES;
すべてのリモート接続を許可する
前のコマンドと同様に、ip-addressをリモートコンピューターのIPアドレスに置き換えるように指示しました。そのリモートコンピューターからの接続のみが許可されます。ただし、「%」ワイルドカードを使用して、接続がコンピュータからのものであるか、個人的な理由でデータベースにアクセスする必要がある地下室からのものであるかに関係なく、すべての接続を許可することもできます。 😉ただし、データベースにアクセスするには、正しいクレデンシャルを入力する必要があります。
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
ある範囲のIPアドレスからの接続を許可する
リモートサーバーが同じネットワーク上にある場合、複数のMySQLユーザーを必要とせずに、それらのIPアドレスでリモート接続を簡単に許可できます。
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'172.19.0.*';
IPアドレスの最後のオクテットが*に置き換えられていることに注目してください 上記のコマンドで。これにより、そのIPアドレスを持つすべてのサーバーが172.19.0で始まるようになります。