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) 再度接続テストを行う