Hatena::ブログ(Diary)

たこはちの「へのかっぱ」日記 このページをアンテナに追加 RSSフィード

2015年09月08日(火)

VirtualBoxでHostOSとGuestOSで相互にMySQLに接続してみる。

VirtualBox上で、GuestOS(CentOS)からHostOS(Windows)のMySQLに接続してみる。また逆にHostOS(Windows)からGuestOS(CentOS)のMySQLに接続してみたい。ネットワークは、デフォルトNAT(Network Address Translation)になっていて、IPアドレスやポート番号の置換を行ってくれる。この設定によりGuestOSからただちにインターネットも利用できるが、この設定だけではHostOSからGuestOSへのアクセスができないようだ。NATでは、ゲートウェイ(HostOS側)が 10.0.2.2 で、DNSが 10.0.2.3、GuestOS側のアドレスが 10.0.2.15 になっている。このアドレスは固定らしい。(※変更できるのかもしれないが、触れないことにする)

WindowsからCentOSに接続するには、新たにVirtualBox Host-Only Networkを設定する必要がある。手順をメモしておく。

(1) アダプタにVirtualBox Host-Only Networkを追加する。

# cd /etc/sysconfig/network-scripts
# vi ifcfg-enp0s3
・・・
BOOTPROTO=static
IPV6INIT=no
ONBOOT=yes
・・・

  • そして配下に、ifcfg-eth1 を新規に作成する。ネット情報を参考に以下のようにした。「eth1」ではなく「enp0s8」とするのがCentOS7.0らしいのかもしれない。とりあえず「eth1」としておいた

# cd /etc/sysconfig/network-scripts
# vi ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=08:00:27:21:F5:FD
NAME="Adapter2 eth1"
IPADDR=192.168.56.101
NETMASK=255.255.255.0
NETWORK=192.168.56.0

# systemctl restart network
# systemctl status network

  • IPADDRの101は適当に。1より大きければよさそう。
  • HWADDRは、VirtualBoxマネージャの「設定-->ネットワーク-->アダプタ2-->Macアドレス」で事前に確認しておく。私の環境では、08002721F5FDとなっていた。HWADDRは、08:00:27:21:F5:FDのように指定する。
  • Windowsでifconfigしてみる。

> ifconfig
・・・
イーサネット アダプター VirtualBox Host-Only Network:

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::dcb4:ab27:522c:9b3b%12
   IPv4 アドレス . . . . . . . . . . . .: 192.168.56.1
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .:

Windows(HostOS)側からSSH接続を確認してみた。私はTeraTermインストールしているのでそれを使った。192.168.56.101 にSSH接続して、CentOSログインできた。

(2) ファイアウォールMySQL用ポート=3306を設定する。

ここでちょっと確認しておこう。Adapter1:NATとAdapter2:VirtualBox Host-Only Networkの設定により、IPアドレスは以下のようになった。MySQLでは、これらのIPアドレスホストとして指定して、ポート=3306でHostOSとGuestOS間でアクセスを可能にしたいのだ。

Adapter1:NAT
    Windows(HostOS) = 10.0.2.2          <-- CentOSからアクセスする際に指定する
    CentOS(GuestOS) = 10.0.2.15         <-- 明示的には利用しない
Adapter2:VirtualBox Host-Only Network
    Windows(HostOS) = 192.168.56.1      <-- CentOSからアクセスする際に指定する
    CentOS(GuestOS) = 192.168.56.101    <-- Windowsからアクセスする際に指定する

(3) WindowsMySQLCentOSからアクセスする。

Windows(HostOS)のMySQLには、CentOS(GuestOS)からは、NATを使って 10.0.2.2 でアクセスできる。またVirtualBox Host-Only Networkを使って 192.168.56.1 でもアクセスできる。Windows(HostOS)のMySQLに「dummy」というDBを作っているとしよう。リモートであるCentOS(GuestOS)からrootおよびdummyというユーザーで権限を設定してみよう。まずWindows側でmysqlコンソールを使う。パスワード任意に。

# mysql -uroot -p mysql
mysql> grant all privileges              on dummy.* to  root@'10.0.2.2' identified by 'xxx' with grant option;
mysql> grant DELETE,INSERT,SELECT,UPDATE on dummy.* to dummy@'10.0.2.2' identified by 'xxx' with grant option;
mysql> grant all privileges              on dummy.* to  root@'192.168.56.1' identified by 'xxx' with grant option;
mysql> grant DELETE,INSERT,SELECT,UPDATE on dummy.* to dummy@'192.168.56.1' identified by 'xxx' with grant option;
mysql> flush privileges;
mysql> select host,user,password from user;

リモートのユーザー登録できた。すべてのテーブルに対して、*.* を指定したり、すべてのリモートとして root@'%'や dummy@'%'のように指定してもいいはずだ。ただ私は理解を容易にするために、明示的にDBホストを指定するようにしておく。では、CentOS(GuestOS)から接続を試みよう。

# mysql -h10.0.2.2 -uroot -p dummy
mysql> show tables;
mysql> exit;

# mysql -h192.168.56.1 -uroot -p dummy
mysql> show tables;
mysql> exit;

どちらもうまくいく。NATでもVirtualBox Host-Only NetworkでもWindows(HostOS)のMySQLアクセスできた。

(4) CentOSMySQLWindowsからアクセスする。

今度は、CentOS(GuestOS)のMySQLに「dummy」というDBを作っておく。Windows(HostOS)からアクセスできるようにrootおよびdummyというユーザーで権限を設定してみる。先ほどの逆方向だ。まずCentOS側でmysqlコンソールを使う。Windows(HostOS)からはVirtualBox Host-Only Networkを使って 192.168.56.101 でアクセスできるはずだ。NATでは接続できないので、10.0.2.15 は使えない。

# mysql -uroot -p mysql
mysql> grant all privileges              on dummy.* to  root@'192.168.56.1' identified by 'xxx' with grant option;
mysql> grant DELETE,INSERT,SELECT,UPDATE on dummy.* to dummy@'192.168.56.1' identified by 'xxx' with grant option;
mysql> flush privileges;
mysql> select host,user,password from user;

リモートのユーザー登録できた。CentOSIPは 192.168.56.101 だが、HostOS=192.168.56.1 からのアクセスを許可する。では、Windows(HostOS)から接続を試みよう。GuestOS=192.168.56.101 に HostOS=192.168.56.1 から接続する。

# mysql -h192.168.56.101 -uroot -p dummy
mysql> show tables;
mysql> exit;

うまくいった。VirtualBox Host-Only NetworkでWindowsからCentOSMySQLアクセスできた。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/tacohachi/20150908/p1