MySQL ( MariaDB ) サーバをWebサーバと分離する場合の設定をまとめてみる

最近、私のデフォルト設定となっています。
基本的にWebサーバとDBサーバを同一サーバには置きません。確かに費用として倍必要ですが、安定度が全く違いますし、お互いバックアップを取ることも出来、お勧めです。
というか、実際はDNSサーバとメールサーバも切り離されているのですが・・・その辺りはおいおい。

さて、今回は、MySQLサーバをWebサーバと切り離して設置した場合の設定についてまとめておきます。
意外と全体がまとまってる記事がないので、自分の備忘録も兼ねて、です。

サーバ構成

By: Jim Winstead
「構成」なんて書くほどのものではないのですが・・・
Webサーバ / IP : 192.168.1.1
DBサーバ / IP : 192.168.1.2
ここではIPアドレス、ローカルで書いていますが、実際はグローバルだったりというのがあるかと思いますので、ご自身の環境に合わせて解釈して下さい。
DBはMySQLでもMariaDBでも同じ内容です。

基本はDBサーバ(MySQL/MariaDB)側の設定で終わりです

基本的にはWebサーバ側の設定は不要です。

MySQL/MariaDB上の設定

まずはMySQL(MariaDB)上の設定から。
ちなみに私が使っている環境がMariaDBなので、プロンプトなどはMariaDBのものになっています。
コンソールへログインします。
[bash]# mysql -u root -p
Enter password: ※パスワード入力[/bash]
今回はWebサーバからDBサーバへアクセスしますので、Webサーバで使っているIPアドレスからの接続を許可する必要があります。
WebサーバにphpMyAdminをインストールして、設定をブラウザベースで行う、という前提で、rootユーザの設定を行います。
[bash]MariaDB [(none)]> grant all privileges on *.* to root@"192.168.1.1" identified by ‘password’ with grant option;[/bash]
192.168.1.1からのrootユーザのアクセスを許可します、という内容です。
ちなみに’password’は、ご自身でパスワードを決めて、その内容に変更して下さい。
問題なく変更出来たら、ユーザテーブルをフラッシュしておきます。
[bash]MariaDB [(none)]> flush privileges;[/bash]
フラッシュが終わったら一度コンソールを抜けます。
[bash]MariaDB [(none)]> quit[/bash]
次にiptablesの変更です。
MySQLに対するアクセスを許可する必要がありますので、MySQLにアクセスするためのポート番号”3306″を開いておきます。
“/etc/sysconfig/iptables”を開いて、次の行を追加します。
[bash]-A INPUT -m state –state NEW -m tcp -p tcp -s 192.168.1.1 –dport 3306 -j ACCEPT #追加する行
-A INPUT -j REJECT –reject-with icmp-host-prohibited #この行の前に追加[/bash]
“-s 192.168.1.1″で、ソースとなるIPアドレスを指定します。
“–dport 3306″で、実際に開けるポート番号”3306″を指定します。
買い換えて保存したらiptablesを再起動します。
[bash]# /etc/init.d/iptables restart[/bash]
これで設定完了のはずです。

接続確認

Webサーバの方から接続確認してみましょう。
Webサーバから下記コマンドを入力します。
[bash]mysql -h 192.168.1.2 -u root -p[/bash]
これで通常通り、パスワード入力を促すメッセージが表示されれば問題ありません。
思っているより簡単にできる負荷分散の方法の一つです。
WordPressからも問題なくアクセス出来ますので、負荷に悩まされている方は試してみてはいかがでしょうか?
[tmkm-amazon]4798124230[/tmkm-amazon]

Share this post