2020年1月12日日曜日

MySQL8サーバへ外部から接続


192.168.11.10のPCにMySQL(サーバとクライアント)をインストールして、
「Command Line Client」で接続しているのですが、別のホスト(192.168.11.15)から接続したくなりました。

現状、192.168.11.10から
①OK:「Command Line Client」で「パスワード」
②NG:コマンドプロンプトで「mysql -u root -p」
③NG:コマンドプロンプトで「"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -h 192.168.11.10 -u root -p」
④OK:コマンドプロンプトで「"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p」

という状態で、「mysqlのパスが通っていない」、「localhostしか接続が許可されてない」状態のようです。

■パスを通す
Windows10の場合、コンパネのシステムプロパティから「環境変数」の「Path」に新規に
「C:\Program Files\MySQL\MySQL Server 8.0\bin」を設定すればOKです。
コマンドプロンプトで「mysql --version」と実行してエラーがなければOKです。

■現状確認

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

rootはlocalhostからしかアクセスできない(らしい)

■localhost以外からの接続を許可する
mysql>create user 'root'@'192.168.11.%' identified by 'パスワード';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.11.%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

※mysql8.xはググってヒットする内容と設定方法が変わって糞ハマりました。。
「grant all privileges on *.* to user1@"192.168.1.%" identified by 'パスワード' with grant option;」
上記は古いMySQLのコマンドなので、エラーが出ます。

'パスワード'は現状と違うパスワードを入れると、ローカル接続とリモートパスワードが異なるのでこれもハマりポイントでした。。参照したサイトが'root'と記載していた。。

mysql> select user,host from mysql.user;
+------------------+-----------------+
| user             | host            |
+------------------+-----------------+
| root             | %               | ←間違えてrootをパスワードとして追加してしまった
| root             | 192.168.11.0/24 | ←間違えてrootをパスワードとして追加してしまった
| mysql.infoschema | localhost       |
| mysql.session    | localhost       |
| mysql.sys        | localhost       |
| root             | localhost       |
+------------------+-----------------+

その場合、ややこしいのでユーザ設定を削除しましょう。
mysql> drop user 'root'@'192.168.11.0/24';
Query OK, 0 rows affected (0.01 sec)

mysql> drop user 'root'@'%';
Query OK, 0 rows affected (0.01 sec)

これで、やっと接続できるようになりました。
・192.168.11.10からC:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -h 192.168.11.10 -u root -p
・192.168.11.15からは「HeidiSQL」というソフトを使って接続できています

はーーーー、、、、疲れた。。


0 件のコメント:

コメントを投稿