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 はアップロードした画像に透かしを追加できるようになりました (アップグレード版)

推薦する

Ubuntu システムログで /var/log/messages を設定する方法

1. 問題の説明今日、システム ログ ファイルを確認する必要がありますが、/var/log/mess...

mysql binlog (バイナリログ) を表示する方法

たとえば、新しいテーブルを作成したり、既存のテーブルのデータを更新したりすると、これらのイベントは、...

Nginx Rewrite の使用シナリオとコード例の詳細な説明

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

Vue シングルファイルコンポーネントの実装

最近、vue について読みました。これまで基本的に見落としていた単一ファイル コンポーネントを見つけ...

Docker Swarmの概念と使用法の詳細な説明

Docker Swarm は、Docker によって開発されたコンテナ クラスター管理サービスです。...

HTML テーブル セルの幅と高さを設定する方法

Web ページを作成するときに、テーブルの幅が揃っていないという問題に遭遇することがよくあります。 ...

Linuxにログインする際の文字セットの問題を解決する方法

文字セットエラーは常に存在するロケール: LC_CTYPE をデフォルト ロケールに設定できません:...

CentOS7にMariaDB 10.2.4をインストールする方法の詳細な説明

CentOS 6 以前のバージョンでは、MySQL サーバー/クライアント インストール パッケージ...

HTML の div と span の違い (共通点と相違点)

共通点: DIV タグと SPAN タグは、コンテンツ全体を非表示にしたり、コンテンツ全体を移動した...

mysql bin-log ログファイルを sql ファイルに変換する方法

mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...

XHTML タグのネスト規則の分析

XHTML 言語では、ul タグに li が含まれ、dl タグに dt と dd が含まれることは誰...

Web開発でボックスを中央に配置するいくつかの方法

1. ボックスを中央に配置するいくつかの方法を記録します。 1.0、マージン幅固定、高さ中央配置。 ...

MYSQL の解凍版における中国語の文字化け問題の解決方法

MYSQLの解凍バージョンがインストールされます1: 解凍後、my.ini ファイルをコピーし、バイ...

ウェブサイトの再設計はどの家族にとっても難しい作業です

<br />どの家庭にもそれぞれの問題があり、改訂はどの IT 企業にとっても問題の 1...

Linux スレッド間の同期と排他制御の知識ポイントのまとめ

スレッドが同時に実行される場合、スレッドがリソースを競合してデータの曖昧さが生じるのを防ぐために、重...