LINUXでNavicatがMySQL8.0版のデータベースに接続できない問題の解決方法

1. プログラムエラー

2. プロジェクトの背景

        MySQL8.0 バージョンのデータベースが Linux システムにインストールされており、Linux ファイアウォールもポート 3306 を開くように設定されていますが、Navicat での接続時​​に引き続きエラーが報告されます。エラー 1130: ホスト '192.168.232.128' は次のとおりです。 「この MySQL サーバーデータベースへの接続は許可されていません」では、接続が許可されません。

3. エラー分析

        この時点で、ポート 3306 を開くようにファイアウォールを設定しましたが、まだ接続できないため、データベースに接続しているユーザーに十分な権限がないのではないかと考えました。新しい MySQL 接続を作成するときに、デフォルトの mysql が存在するためです。データベースにはユーザー テーブル、すべてのユーザーの権限を設定するために使用されます。

         そこで、user テーブルの user フィールドと host フィールドをクエリしたところ、データベースに接続したい root ユーザーの host フィールドには localhost ループバック アドレスのみが含まれている、つまり root ユーザーのみが接続を許可されていることがわかりました localhost または 127.0.0.1 アドレスからデータベースを接続します。この時点で、ワイルドカード文字 % がホストとして使用されている場合、指定されたユーザーは接続を許可されるため、root ユーザーのホスト フィールドを '%' に変更する必要があります。任意のホストから

4. エラーの解決

(1) 最初に Linux ファイアウォールをオフにします

systemctl stop firewalld.service close ファイアウォール コマンド

systemctl start firewalld.service open ファイアウォール コマンド

        しかし実際には Linux ファイアウォールは非常に安全ではなく、外部からの悪意のある攻撃を受けやすいため、Linux ファイアウォールを直接オフにすることはお勧めしません。

(2) Linux ファイアウォールを閉じずに、その中のポート 3306 を開きます。

        firewall-cmd --zone=public --add-port=3306/tcp --permanent

         「success」という文字が表示されれば、正常にオープンされたことを意味しますが、すでにオープンされているため、ここで警告が表示されます。

(3) ファイアウォールを再起動します (非常に重要です。有効にするには更新する必要があります)。

        ファイアウォール-cmd --reload

(4) データベースにログインします(データベースサービスが開いていることが前提です)

        mysql -u root -p

(5) 全ユーザーのホスト欄を表示

        ユーザーからユーザー、ホストを選択します。

         この時点で、root ユーザーのホスト フィールドが localhost であることがわかります。これは、ローカル アドレスのみがデータベースへの接続を許可されていることを意味します。

(6) root ユーザーのホストフィールドを変更します。

        ユーザーを更新します。ホスト = '%' の場合、ユーザー = 'root';

        ワイルドカード % をホストとして使用すると、指定されたユーザーはどのホストからでも接続できます

(7)変更後のリフレッシュ権限

        フラッシュ権限。       

 (8) 再度接続テストを行う

おすすめ

転載: blog.csdn.net/weixin_64709241/article/details/129506994