42
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(俺得)MySQLに、クライアントでリモート接続する時の設定

Last updated at Posted at 2016-02-03

開発チーム内で仮想サーバが必要になり、Vagrant使って構築した時に、MySQLをGUIクライアントで接続しようとした時に、問題点の特定に苦労したので。

ここで説明する内容

すでに接続先(ここでは、Vagrant&Virtualboxで動いている仮想OS)が存在し、MySQLもSSHも利用できる状態とする。

接続元は、仮想OSを動かしている

  1. MySQLに、外部接続用のユーザ設定を行う。
  2. iptablesの設定。
  3. SequelPro(Mac上のクライアントツール)の接続用の設定。

MySQLに、外部接続用のユーザ設定を行う

仮想サーバ内のMySQLに、ユーザを作成する。

まず、ユーザ一覧を確認してみる

(パスワードは適当です)

ユーザ内容を確認する
mysql> select user, host, password from mysql.user;
+------+-----------------------+-------------------------------------------+
| user | host                  | password                                  |
+------+-----------------------+-------------------------------------------+
| root | localhost             | (秘密)                        |
| root | localhost.localdomain |                                           |
| root | 127.0.0.1             |                                           |
| root | ::1                   |                                           |
+------+-----------------------+-------------------------------------------+

この状態から、rootユーザで、192.168.xxx.yyy (ローカルネットワーク内)から接続できるように設定を変更します。

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"192.168.%" IDENTIFIED BY 'pass' WITH GRANT OPTION;

上記コマンドは、ipv4形式のアドレスで192.168.〜の値を持つもの(192.168.1.10 とか 192.168.20.30とか色々)rootというユーザ名でpassというパスワードでアクセスした場合、すべての権限とオプションを付与する。

という意味合いになります。

(あくまで、ごくごく内輪の開発環境なので、こんな適当な設定にしてますが)

追加されたのを確認した。
mysql> select user, host, password from mysql.user;
+------+-----------------------+-------------------------------------------+
| user | host                  | password                                  |
+------+-----------------------+-------------------------------------------+
| root | localhost             | (秘密)                        |
| root | localhost.localdomain |                                           |
| root | 127.0.0.1             |                                           |
| root | ::1                   |                                           |
| root | 192.168.%             | (秘密)                        |
+------+-----------------------+-------------------------------------------+
5 rows in set (0.00 sec)

ポートも確認しておく

ポートを確認する。
mysql> SHOW VARIABLES LIKE 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.00 sec)

ポートは 3306 です。この後の設定作業で使います。

iptablesの設定

今回は、atlas(公式のbox配布場所?)で公開されているcentos-6.7(64bit) のボックスを使いましたが
https://atlas.hashicorp.com/bento/boxes/centos-6.7

iptablesの設定ファイル
/etc/sysconfig/iptables
は、存在しないので作成する必要があります。(なぜないんだ・・・)

別途使っていた仮想環境の内容をもとに、こんな感じで記述しました。

/etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 8082 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

ここで大事なのは
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

の部分です。MySQLのポート(3306)を許可することが大事。

SequelPro(Mac上のクライアントツール)の接続用の設定。

接続元に戻ります。

SequelProはすでにインストールされているものとします。

接続情報の設定はSSHを選択し

  • 名前        :任意の分かりやすい名前
  • MySQLホスト    :MySQLが稼働しているサーバのIPアドレス
  • ユーザ名      :上記ホストに接続する際のユーザ名
  • パスワード     :上記ユーザのパスワード
  • データベース    :どのデータベースに接続するか?(今回は指定しない)
  • ポート       :接続する際に使用するポート
  • SSHホスト     :SSH接続する際のホスト
  • SSHユーザ     :SSH接続する際のユーザID
  • SSHパスワード   :上記SSHユーザのパスワード または秘密鍵
  • SSHポート     :SSH接続時に使うポート

というわけなので、
ここまでの環境設定で、仮想サーバに割り振るIPが192.168.100.200。SSH接続についてはvagrantのデフォルトユーザを使うとした場合。

  • 名前        :(設定そのもには関係ない)
  • MySQLホスト    :192.168.100.200
  • ユーザ名      :root
  • パスワード     :root
  • データベース    :(指定しないので空欄のまま)
  • ポート       :3306
  • SSHホスト     :192.168.100.200
  • SSHユーザ     :vagrant
  • SSHパスワード   :vagrant
  • SSHポート     :22

この設定で接続する。

注意:SSHユーザは、デフォルト以外の方が良さそう。

42
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?