Mysql8.0 データベースはリモート接続できない(mysql リモート接続設定方法) 'root'@'localhost' および 'root'@'%' (mysql リモート接続できない、mysql 接続が拒否される)

ステップ

1. MySQL サービスの実行ステータスを確認する

Ubuntu サーバーで、systemctl status mysqlコマンドを使用して MySQL が実行されているかどうかを確認します。

図に示すように、次のように実行されます。
ここに画像の説明を挿入します

2. MySQL がリッスンしている IP アドレスとポートを確認します。

MySQL がすべてのネットワーク インターフェイス (0.0.0.0) でリッスンしているか、ローカル ループバック インターフェイス (127.0.0.1) でのみリッスンしているかを確認するために使用しますsudo netstat -plnt | grep mysql127.0.0.1 でのみリッスンしている場合は、他のインターフェースからの接続を受け入れられるように MySQL 構成ファイルを変更する必要があります。通常、この構成ファイルが置かれている場所で/etc/mysql/mysql.conf.d/mysqld.cnfbind-addressこのエントリを見つけて、 に変更します0.0.0.0次に、mysql サービスを再起動しますsudo systemctl restart mysql

図に示すように、次のことを確認する必要があります0.0.0.0
ここに画像の説明を挿入します

3. ファイアウォール設定を確認する

Ubuntu サーバー上で実行してsudo ufw statusファイアウォールのステータスを表示します。ファイアウォールが有効で、ポート 3306 (デフォルトの MySQL ポート) が許可されていない場合は、このポートを許可するルールを追加する必要があります。これはコマンドを使用して実現できますsudo ufw allow 3306

図に示すように、ファイアウォールは閉じられているように見えますが、ポート 3306 をブロックしているファイアウォールではありません。
ここに画像の説明を挿入します

4. MySQL ユーザー権限を確認する

root ユーザーにローカルホスト以外からログインする権限があることを確認してください。MySQL にログインし、次の SQL コマンドを使用してユーザー権限を表示できます。まずログインしmysql -u root -p、次に mysql データベースに切り替えてuse mysql;表示しますSELECT User, Host FROM mysql.user;root ユーザーのホストフィールドが localhost の場合は、root ユーザーが任意のホストからログインできるように権限を変更する必要があります。

図に示すように、root ユーザーのホスト フィールドは localhost であり、要件を満たしていません。
ここに画像の説明を挿入します

変更しましょう:

まずユーザーのホスティング設定を変更し、次にユーザーのパスワードを更新する必要があります。次の手順に従ってください。

  1. 任意のホストからのログインを許可する root ユーザーを作成します。

    CREATE USER 'root'@'%' IDENTIFIED BY '123';
    

    注: 上記のパスワードは単純すぎるため許可されません。次のようなより複雑なパスワードを使用してください。

    CREATE USER 'root'@'%' IDENTIFIED BY 'YourNewComplexPassword';
    

    (私は qing************123 を使用しています)

    さらに、パスワードを変更したい場合は、以下を使用できます。

    ALTER USER 'root'@'%' IDENTIFIED BY 'YourNewComplexPassword';
    
  2. 新しいユーザーにすべての権限を付与します。

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

    ここに画像の説明を挿入します

  3. 権限を更新します (更新しなくても機能するようです):

    FLUSH PRIVILEGES;
    

    ここに画像の説明を挿入します

    表示 ユーザー権限を表示:
    ここに画像の説明を挿入します

    もう 1 つあることが'root'@'%'正常にわかります。

    MySQL では、ユーザーの ID はユーザー名とホスト名で構成されるため、「 」root'@'localhost'と「 」'root'@'%'は 2 つの異なるアカウントです。
    'root'@'localhost'MySQL にローカルでのみ接続できることを示します。
    'root'@'%'任意のリモート ホストから MySQL に接続できることを示します。
    新しいユーザー 'root'@'%' が正常に作成されました。これは、root ユーザーが Windows マシンを含む任意のホストから MySQL サーバーに接続できることを意味します。
    一方、「root」@「localhost」はまだ存在しており、Ubuntu サーバーからのローカル接続のみが許可されます。localhost はメンテナンス タスクやバックアップなどのシステム内部操作によく使用されるため、このような構成は通常、セキュリティを向上させるために行われます。「root」@「localhost」ユーザーを削除したい場合は、このコマンドを使用できますが、これを行う前に、「root」@「%」が正しく動作し、「root」@「localhost」ユーザーが正常に動作できることを確認してください
    DROP USER 'root'@'localhost';必要ありません。

注: root ユーザーに任意のホストからのリモート ログインを許可すると、セキュリティ リスクが生じる可能性があるため、運用環境では通常、リモート アクセスに必要な権限を持つ新しいユーザーを作成します。

5. Windows コンピュータでネットワーク接続をテストする

Windows コンピューターで、次のping 192.168.200.212コマンドを使用して、コンピューターが Ubuntu サーバーにアクセスできることを確認します (独自の mysql ホスト IP に変更します)。その後、Telnet または同様のツールを使用して、サーバーの MySQL ポートに接続できるかどうかを確認できますtelnet 192.168.200.212 3306

通常は次のように表示されます。
ここに画像の説明を挿入します

6. データグリップ構成を確認する

Datagrip のデータベース接続が正しく構成されていることを確認してください。IP アドレス、ポート、ユーザー名、パスワードを含めます。

上記の手順により、問題を特定して修正できるはずです。それでも問題が解決しない場合は、MySQL エラー ログなどの詳細なログ情報を確認する必要がある場合があります。通常は にあります/var/log/mysql/error.log

上記の手順をすべて確認して正しく設定すると、リモートからアクセスできるようになります。

datagrip を使用して をクリックするTest Connectionと、接続が成功したことが示されました。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/Dontla/article/details/133213538