GNU/Linux >> Linux の 問題 >  >> Linux

[修正済み]ホストはこのMySQLサーバーに接続できません

アプリケーション開発者は、ローカルサーバー以外のサーバーでホストされているデータベースへの接続で問題が発生する可能性があります。この記事では、ネットワークの外部または別のホストからリモートでMySQLデータベースに接続するときに発生する一般的なエラーを解決します。

SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server 接続要求がMySQLサーバーによって拒否されると、エラーが発生します。 デフォルトでは、MySQLサーバーはローカルホストからの接続のみを受け入れ、他のホストからの接続は受け入れません。

リモート接続を有効にするには、次の手順を実行する必要があります–

  1. 構成からのリモート接続を有効にする
  2. 新しいユーザーを作成し、特定のホスト(またはすべてのホスト)からデータベースサーバーに接続できるようにします
  3. フラッシュ権限

MySQL構成からのリモート接続を有効にする

nanoなどのお気に入りのテキストエディタを使用して、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ユーザーを作成する

ローカルで使用するためにホストを「localhost」としてmysqlユーザーを作成しますが、リモート接続用のユーザーを追加する場合は、localhostをIPアドレスに置き換える必要がありますリモートコンピュータの。

ルートとしてMySQLにログイン–

sudo mysql

Or

mysql -u root -p

選択した方法に応じて、パスワードの入力を求められます。 2番目の方法を使用している場合は、MySQLrootユーザーのパスワードまたは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で始まるようになります。


Linux
  1. Ubuntu 20.04、Mysql 8、Ubuntu 20.04、NginxでWordPressをホストする

  2. 公開鍵の取得は許可されていません–WSO2MySQLエラー

  3. クラウドサーバーに接続する

  1. [修正済み]ユーザー名がsudoersファイルにない

  2. MySQLデータベースにリモートで接続する

  3. 404 が見つかりません。要求された URL <<url name>> がこのサーバーの wordpress に見つかりません

  1. [修正済み]ホストはこのMySQLサーバーに接続できません

  2. Tmuxは.tmux.confを調達していませんか?

  3. データベースに接続できません。ユーザーはデータベースに存在しますが、サーバーレベルには存在しません