Alibaba Cloud Server Ubuntu 上の Workbench が MySQL に接続できない問題の解決策 (テスト済み)

Alibaba Cloud Server Ubuntu 上の Workbench が MySQL に接続できない問題の解決策 (テスト済み)

過去 2 日間、ワークベンチが Alibaba Cloud Server に接続できない問題を解決するのに非常に苦労しました。インターネットで見つけたチュートリアルはすべて似ていますが、このチュートリアルは私には機能しません。幸いなことに、最終的には解決しました。この面倒なプロセスを記録しておきます。

使用環境:

システム:

Ubuntu 18.04.2 LTS
MySQL: mysql Ver 14.14 Distrib 5.7.29、Linux (x86_64) 用、EditLine ラッパー使用

MySQL ワークベンチ 8.0CE

1. サーバーに接続できません

初めて接続すると、次のステータスが表示されます。

遭遇した落とし穴の一つ

インターネットで見つかる方法のほとんどはbind_addressの値を変更することです

まず、次のmysqlポートステータスを確認します

netstat -anp | grep mysql

ps: 127.0.0.1:3306 と表示される場合は、変更が必要です。: :3306 の場合、変更する必要はありません。

表示されたステータスは 127.0.0.1:3306 であり、この値であるため、これを変更する必要があります。

インターネットで見つかる設定ファイルの変更パスのほとんどは、**/etc/mysql/my.cnf** にあると書かれていますが、これは古いバージョンの場合のみです。最新バージョンをインストールしたので、このファイルを開いてみると、bind_address 値がありませんでした。後で確認したところ、新しいバージョンは**/etc/mysql/mysql.conf.d/mysqld.cnf**にあることがわかりました。問題を発見したので、それを修正するのは簡単です。次の部分を見つけてコメントアウトします。

# スキップネットワークの代わりに、デフォルトでは、
# 互換性が高く、安全性も低い localhost です。
バインドアドレス = 127.0.0.1

2. mysql.userテーブルの情報を変更する

root ユーザーがデータベースにリモートでアクセスできるようにするには、いくつかの情報を変更する必要があります。

mysql -u ルート -p パスワード
mysql>mysqlを使用する
テーブル名と列名の補完のためのテーブル情報の読み取り
-Aでこの機能をオフにすると起動が速くなります。

データベースが変更されました
mysql> ユーザーからユーザー、ホストを選択します。
+------------------+----------------+
| ユーザー | ホスト |
+------------------+----------------+
| ルート | ローカルホスト |
| debian-sys-maint | ローカルホスト |
| mysql.セッション | ローカルホスト |
| mysql.sys | ローカルホスト |
+------------------+----------------+

上記のホストは、ユーザーがデータベースにアクセスできるアドレスを示します。 localhost なので、ローカルからしかアクセスできません。修正方法は全部で 2 つ見つかりました。1 つは、元のルートに対応するホストを **%** に直接変更するか、リモートからアクセスできる新しいユーザーを追加することです。

方法1:

mysqlデータベースに入った状態で以下のコマンドを実行します

ユーザーを更新し、host='%' を設定します。user='root' です。

方法 2: 新しいユーザーを追加する:

「password」で識別される new_user@'%' に *.* のすべての権限を付与します。

上記のどの方法を使用する場合でも、今すぐ設定を更新する必要があります。

mysql> 権限をフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

両方の方法を試しましたが、まだ機能しませんでした。現在の IP アドレスでは接続が許可されていないと表示されました。

何度も試してみた結果、リモート接続のユーザー名は root であってはならないことがわかりました。再インストールを何度か試みた後、リモート接続を許可するためのルート設定が常に失敗することがわかりました。

3. ファイアウォールをオフにする

# まずデータベースを再起動します
sudo サービス mysql を再起動
# MySQL ポートのステータスが次のとおりであるかどうかを確認します: : :3306
netstat -anp | grep mysql
# ファイアウォールを無効にする
sudo ufw を無効にする
# ファイアウォールの状態を確認する
sudo ufw ステータス

4. ポートを開く

Alibaba Cloud やその他のクラウド サービスのユーザーは、対応するポートを開いて保護するように注意する必要があります。デフォルトの MySQL ポートは 3306 です。

Alibaba Cloudコンソールを開き、セキュリティグループルールを追加します。

セキュリティグループ制限設定があります。受信方向をポート3306を許可するように設定し、以下をお試しください。一瞬で動作します。

Alibaba Cloud ECS MySQLはリモートで接続できません。オンラインのチュートリアルをすべて試しても接続できない場合は、以下を参照してください。

まず、ファイアウォールを確認します。これは最も基本的なことです。多くのチュートリアルでは、ポート3306を有効にする必要があると記載されています。Alibaba Cloudサーバーのセキュリティグループをチェックして、3306の受信ルールと送信ルールが有効になっているかどうかを確認します。これは本当に落とし穴です。Alibaba Cloud Linuxサーバーにこの機能が搭載されているかどうかはわかりません。Windowsサーバーでのみ利用可能だったと覚えています。それでもツールから接続できない場合があり、SSLに関連しているというメッセージが表示されます。私はIDEAとMySQLワークベンチを使用して接続します。IDEAは接続URLに追加します

useSSl=false

MySQLワークベンチに関しては、接続方法が見つからなかったため、別のオプションとして、サーバー上でSSLを無効にする方法があります。
my.cnfファイルを見つけます。通常は/etc/my.confにあります。
SSLをオフにするには、コンテンツにskip_sslコマンドを追加します。

サービスmysqldを再起動

MySQLを再起動する

すべての IP アドレスをアクセス可能に設定したり、localhost を 127.0.0.1 に変更したりする方法の詳細については説明しません。参考になる記事がオンライン上にたくさんあります。セキュリティ グループや SSL に詳しくない方は、上記の方法を参照してください。

データベースに接続するときのuseSSL=falseの役割

SSLを使用する=偽
MySQLの上位バージョンでは、SSL接続を使用するかどうかを指定する必要があります。

1.trueは接続が必要
2.false 接続は必要ありません

5. やり遂げる

これで記事は終わりなので、基本的にすべて解決しました。

以下もご興味があるかもしれません:
  • MySQL WorkBench 管理操作 MySQL チュートリアル
  • MySQL Workbench の使い方 (画像とテキスト)
  • Mysql Workbench クエリ mysql データベース メソッド
  • Mysql WorkBench のインストールと設定のグラフィックチュートリアル
  • MySQL Workbenchのダウンロードと使用方法のチュートリアルの詳細な説明
  • Ubuntu での MySQL および MySQL Workbench のインストール チュートリアル
  • MySQL5.7+ MySQL Workbenchのインストールと設定方法のグラフィックチュートリアル(MAC)
  • MySQL 5.7.17 とワークベンチのインストールと設定のグラフィックチュートリアル
  • MySQLのワークベンチ例の詳細な説明
  • CentOS での MySQL ワークベンチのインストールと設定のチュートリアル
  • MySQL Workbench の使い方チュートリアルの詳しい説明

<<:  Node.js における path.join() の利点の分析

>>:  VMware ESXi6.7 の簡単なセットアップ(画像とテキスト付き)

推薦する

インデックスは MySQL クエリ条件で使用されますか?

雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...

Zabbix は DingTalk のアラーム機能を画像付きで設定します

実装のアイデア:まず、アラーム情報にはitemidが必要です。これは前提条件です。情報に渡されるパラ...

node.js グローバル変数の具体的な使用法

グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...

CSS3 境界効果

CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...

CSSスタイルは、テキストが長すぎる場合に省略記号を表示する問題を解決します

1. CSSスタイルは、テキストが長すぎる場合に省略記号を表示する問題を解決します1. 一般的なスタ...

Nuxt.jsプロジェクトのDockerデプロイメントの実装

Docker 公式ドキュメント: https://docs.docker.com/ Docker は...

JavaScript データ プロキシとイベントの詳細な分析

目次データブローカーとイベントObject.defineProperty メソッドのレビューデータブ...

Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明

まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...

NginxにLuaモジュールを追加する方法

luaをインストールする http://luajit.org/download/LuaJIT-2.0...

DockerでRedisをデプロイして起動する方法

DockerでRedisをデプロイするまずLinuxにDockerをインストールし、次にDocker...

mysql 結合クエリ (左結合、右結合、内部結合)

1. MySQLの一般的な接続INNER JOIN (内部結合、または等価結合): 2 つのテーブ...

JavaScriptは4桁のランダム検証コードの生成を実装します

この記事の例では、JavaScriptで4桁のランダムな検証コードを生成する具体的なコードを参考まで...

div要素に丸い境界線を追加する方法

以下のように表示されます。 CSSコードコンテンツをクリップボードにコピー分割{境界線: 2px 固...

MySQL InnoDB のロック機構の詳細な説明

前面に書かれたデータベースは本質的に共有リソースであるため、同時アクセスのパフォーマンスを最大化する...

HTMLのインライン要素とブロックレベル要素とは何か、またそれらの違いは何ですか

以前の就職面接で面接官が尋ねた質問を覚えています。「インライン要素とは何ですか。ブロックレベル要素と...