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

推薦する

MySQL count(1)、count(*)、count(field)の違い

目次1. COUNTの初見2. COUNT(フィールド)、COUNT(定数)、COUNT(*)の違い...

Vueの監視プロパティの詳細な説明

目次Vue モニターのプロパティリスナープロパティとは何ですか?リスニングプロパティと計算プロパティ...

ハイパーコネクションの4つの状態の適用の詳細な説明

ブラウザの問題かもしれないと思うかもしれませんが、スタイル定義の順序が間違っている可能性が高いです。...

CentOS7にPostgreSQL11をインストールする方法

CentOS 7にPostgreSQL 11をインストールする PostgreSQL: 世界で最も先...

JavaScript の非同期処理で待機時間を節約できますか?

JavaScriptで非同期実行の結果を同期的に取得するには、 for ループ内でawaitを使用...

トップに戻るボタンを実装するJavaScript

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Ubuntu 16.4 で完全に分散された Hadoop 環境を構築するための実践的なチュートリアル

序文この記事は主にubantu 16.4 Hadoop完全分散構築に関する関連コンテンツを紹介し、皆...

MySQL における distinct と group by の違い

簡単に言うと、distinct は重複を削除するために使用され、group by は統計を集計するよ...

Linux で MySQL 5.7.19 をアンインストールする方法

1. MySQLが以前にインストールされていたかどうかを確認するコマンド: rpm -qa|grep...

Spark RDD をデータフレームに変換し、それを MySQL に書き込む例

DataframeはSpark 1.3.0で導入された新しいAPIで、Sparkで大規模な構造化デー...

JavaScript Promise の徹底解説

目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...

MySQLユーザー管理操作例の分析

この記事では、MySQL ユーザー管理操作について説明します。ご参考までに、詳細は以下の通りです。こ...

Centos に PHP7.4 と Nginx をインストールする方法

準備する1. 必要なインストールパッケージをダウンロードするhttps://www.php.net/...

vue.config.js パッケージ最適化構成

Baiduの情報は多様すぎて目が回ります。心配しないでください。私はあなたのためにそれを体験しました...