Navicat が MySql サーバーにリモート接続できない問題の解決策

Navicat が MySql サーバーにリモート接続できない問題の解決策

Navicat が MySql サーバーにリモート接続できない問題の解決策は、先頭に書かれています:

オペレーティング システム: Kylin 4.0 で落札。
データベース: MySQL 5.7.26;
JDK: Kylin システムに付属する openjdk を使用します。
クライアントツール: Navicat;

前提条件:
MySQL サービスがインストールされています。

シーン:

MySQL をインストールすると、ローカル アクセスは正常になりますが、同じ LAN 内のマシンはサーバー上の MySQL データベースにアクセスできなくなります。

理由:

デフォルトでは、MySQL はリモート マシンからアクセスできず、ローカル アクセスのみが許可されます。リモート アクセスは、次の構成で有効にできます。

トラブルシューティングのアイデア:

MySQL のリモート アクセス設定は、主に次の 3 つの側面からテストされます。まず、ネットワークを確認します。2 台のコンピューターが相互に ping できる必要があります。これが基本です。次に、ポート 3306 を確認します。このポートには、ローカル マシンのみがアクセスできます。これを有効にする場所は 2 つあります。1 つは、ローカル マシン アドレスをバインドするように MySQL を構成することであり、もう 1 つはファイアウォールで 3306 を有効にすることです。3 つ目は、MySQL ユーザーのアクセス権の問題です。

アイデアに従って一つずつチェックする

1. ネットワーク検出:

MySQL が配置されているホストの IP アドレスに ping を実行して、ping できるかどうかを確認します。ping できる場合、問題はネットワークにないことを意味します。
ping は通るので、ネットワークの問題ではないことがわかります。

2. ポート検出:

ポート3306を検出:
netstat -ntpl | grep 3306、図に示すように:

ここに画像の説明を挿入

ポート22を確認します:
netstat -ntpl | grep 22、図に示すように:

ここに画像の説明を挿入

上記から、ポート 22 はすべてのアドレスをリッスンしますが、ポート 3306 はローカル アドレスのみをリッスンするため、リモートからはアクセスできないことがわかります。ローカル アクセスのみを許可するポートの場合、有効にする方法は 2 つあります。1 つはファイアウォールで 3306 を有効にすること、もう 1 つは MySQL をローカル アドレスにバインドするように構成することです。 Navicat がリモート MySQL に接続できないという問題が見つかりました。ポート 3306 へのリモート アクセスを許可するだけで済みます。

解決:
一般的には、/etc/mysql/my.cnf 構成ファイルを変更し、my.cnf 構成ファイルの bind-address=127.0.0.1 を bind-address=0.0.0.0 に変更し、skip-networking をコメントアウトするだけです。

しかし、私の my.cnf 構成ファイルには、bind-address=127.0.0.1 と skip-networking のコード行がなかったので、bind-address=0.0.0.0 のコード行を自分で追加しました。これで動作するだろうと思ったのですが、システムを再起動すると、まったく役に立たないことがわかりました。 ! !再度ポート 3306 を確認したところ、やはりローカル アクセスのみが許可されていました。困惑していたところ、設定ファイル内のコメントが目に留まりました。ここには驚きがあり、問題はすぐに解決できました。> . <

次に、/etc/mysql/my.cnf 構成ファイルを調べて、図に示すように、次の文を見つけます。

ここに画像の説明を挿入

「次の設定ディレクトリから .cnf で終わるすべてのファイルをインポートします」、おお、突然何かに気づいたような気がしませんか?つまり、行 address=127.0.0.1 は my.cnf 構成ファイルでは構成されていませんが、これら 2 つのディレクトリ内の構成ファイルの 1 つで構成されている可能性があります。そのため、その行を探してみましょう。いずれにしても、コード行 "address=127.0.0.1" を見つける必要があります。

まず、最初のディレクトリ /etc/mysql/conf.d に移動し、図に示すように cnf.d ファイルを確認します。

ここに画像の説明を挿入

「address=127.0.0.1」は存在しません。

2 番目のディレクトリ /etc/mysql/mariadb.conf.d/ に移動し、図に示すように、50-client.cnf、50-mysql-clients.cnf、50-mysqld_safe.cnf、50-server.cnf、my.cnf という 5 つの .cnf で終わるファイルがあることを確認します。

ここに画像の説明を挿入

頭を使って推測してください。どのファイルを調べればよいかもおわかりでしょう。はい、「50-server.cnf」ファイルをロックし、中を調べたところ、「address=127.0.0.1」というコード行が見つかりました。図に示すように、これを「address=0.0.0.0」に変更しました。

ここに画像の説明を挿入

次に、コンピューターを再起動します (ここでコンピューターを再起動する必要があることに注意してください。mysql を再起動しても無駄です。私の場合、mysql を再起動しても無駄です)。次に、次のようにポートを確認します。

ここに画像の説明を挿入

満足ですか? ついに修正できました。MySQL について不満があります。構成ファイル内の構成を確認するだけでなく、構成ファイル内のコメントも無視できません。わあ、納得しました~~ 教訓を得ました!

ただし、ポート検出の手順はまだ終了していません。MySQL 構成ファイルを確認しましたが、ファイアウォール ポート 3306 が開いているかどうか、確認する必要があることがもう 1 つあります。

ファイアウォール検出:
表示: iptable --list
確認したところ、ファイアウォールがオンになっていないことがわかりました。ファイアウォールがある場合は、ファイアウォールのポート 3306 をオンにするか、ファイアウォールをオフにする必要があります。

これまでのところ、ポート 3306 の検出に問題はありません。

3.MySQLユーザーのアクセス権:

mysqlデータベースに入ります: mysql -uroot -p
mysql を使用します。
ユーザーのアクセス権を照会します:
図に示すように、user から host,user を選択します。

ここに画像の説明を挿入

MySQL でユーザーを作成するときに、ホストを指定します。デフォルトは 127.0.0.1 (localhost) で、ローカル マシンからのみアクセスできます。他のマシンがこのユーザー アカウントを使用してアクセスすると、権限がないことを示すメッセージが表示されます。すべてのマシンがアクセスできるようにするには、ホストを "%" に変更します。 (すべてのマシンからアクセスできるように変更しました)
変更されたステートメントは次のようになります: grant all on . to 'root'@'%' identified by 'root用戶的密碼' with grant option;
flush privileges;

もう一つ注目すべき点は、「冗長ユーザー」を削除する必要があることです。たとえば、以前は次のように 2 つの root ユーザーがいました。
ユーザーホスト
根 %
ルート 127.0.0.1
この時のミスを避けるために、127.0.0.1 の root ユーザーを削除しておくと良いでしょう(私はここで落とし穴にハマりました。パスワードを変更したときにこの落とし穴にハマりました。%root のパスワードを変更しました。その結果、127.0.0.1 の root でログインし続けてしまい、ログインできなくなってしまいました、、、);

要約する

まとめると、MySQL へのリモート アクセスを設定する問題は解決されました。要約すると、MySQL へのリモート アクセスを設定することは、主に次の 3 つの側面から検出されます。1 つ目は、ネットワークを確認することです。2 台のコンピューターは互いに ping を実行できる必要があります。これが基礎です。2 つ目は、ポート 3306 を検出することです。このポートでは、ローカル アクセスのみが許可されます。有効にする場所は 2 つあります。1 つは、MySQL をローカル アドレスにバインドするように構成することです (MySQL 構成ファイルを変更する (my.cnf である必要はありません ~ 構成ファイルの内容を注意深く読むこと ~) bind-address=0.0.0.0)。もう 1 つは、ファイアウォールで 3306 を有効にすることです (ファイアウォールを検出)。3 つ目は、MySQL ユーザーのアクセス権の問題です。

これは私が以前陥った落とし穴ですが、注目に値すると思います。いわゆる経験とは、より多くの落とし穴に足を踏み入れ、より多くの問題に遭遇し、それらを解決して落とし穴から飛び出すことに他なりません。そうすれば経験が得られます。経験を積み、踏み込んだすべての落とし穴から始めて、絶えず自分自身を改善してください。さあ!

Navicat がリモートで MySql サーバーに接続できない問題を解決する方法についての記事はこれで終わりです。Navicat がリモートで MySql サーバーに接続できない問題の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • VMwareのCentosシステムでNavicatがMySQLサーバーに接続できない問題を解決します
  • dockerにmysqlをインストールした後にNavicatが接続できない問題に対する完璧な解決策
  • Navicat が MySql データベースにゆっくり接続する問題について
  • Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル
  • Navicat Premiumを使用してMySQLデータベースにリモート接続する方法
  • NavicatでMySQLにリモート接続する際のエラー10038の問題を解決する
  • Navicat for MySQL 11 登録コード\アクティベーションコードの概要
  • Navicat の MySQL へのリモート接続が遅い理由の詳細な説明
  • Navicat PremiumはMySQLデータベースを操作します(SQL文を実行します)
  • Navicat を仮想マシン MySQL に接続する際によくあるエラーと解決策
  • Navicat Premium がデータベースに接続すると、次のエラー メッセージが表示されます: 2003 ''localhost'' の MySQL サーバーに接続できません (10061)
  • NavicatでMySqlスケジュールタスクを作成する方法の詳細な説明
  • Navicatを使ってMySQLを操作する方法

<<:  Linux での中国語入力方法の問題を素早く解決する

>>:  Vue はアップロードした画像に透かしを追加できるようになりました (アップグレード版)

推薦する

役に立つメタ設定方法(必読)

<meta name="viewport" content="...

MySQLはフィールドからカンマ区切りの値を取り出して新しいフィールドを形成します

1例: 図1のフィールドを図2に分割するには アカウントIDを選択、 サブストリングインデックス(サ...

in() の ID の順序に従った Mysql クエリ結果の順序の詳細な説明

in() の ID の順序に従った Mysql クエリ結果の順序の詳細な説明コード例: <se...

Linux で ffmpeg をインストールするための詳細なチュートリアル

1. CentOS Linuxにffmpegをインストールする1.ダウンロードして解凍する http...

HTMLタグのフルネームと機能の紹介

アルファベット順DTD: このタグが許可される XHTML 1.0 DTD を示します。 S=厳密、...

jsは赤い封筒の順序と量を指定するアルゴリズムを実装します

この記事では、指定された赤い封筒の順序と金額を実装するためのjsの具体的なコードを共有します。具体的...

Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明

背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...

JavaScript のマクロタスクとマイクロタスクの詳細

目次1. マイクロタスクとは何ですか? 2. マクロタスクとは何ですか? 3. 事例3.1 結論4....

JS ベースの Ajax 同時リクエスト制御を実装する方法

目次序文Ajax シリアルおよびパラレルAjaxの同時リクエスト制御のための2つのソリューションPr...

実践で遭遇するフロントエンドの基本(HTML、CSS)

1. div css マウスの手の形は cursor:pointer; です。 2. HTML の相...

Dockerを使用して外部からアクセス可能なMySQLを構築する詳細な説明

MySQL 8.0をインストールする docker run -p 63306:3306 -e MYS...

Vue3 での watchEffect の使用に関する簡単な分析

序文誰もが vue2 の watch API に精通している必要があります。vue2 の vue イ...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...

NginxはLua+Redisを使用してIPを動的にブロックします

1. 背景日常的なウェブサイトのメンテナンスでは、このような要件に頻繁に遭遇します。特定のクローラー...