ServersMan@VPSのCentOS5をデータベースサーバーへ_その1
ServersMan@VPSのCentOS5をデータベースサーバーとして利用してみた。
さくらのレンタルサーバーのみでは色々と不都合が出てきたので、
同じ月額500円のVPSを試してみた。http://serversman.com/
試した内容
0.さくらVSサーバーズマンスペック比較 ↓ 1.初期設定(ユーザー追加等) ↓ 2.MYSQLの初期設定 ↓ 3.MYSQLポートの開放 ↓ 4.MYSQLのGUIから接続 ↓ 5.Portforwardigで、SSHを通じたMYSQLへの接続
【0.さくらVSサーバーズマンスペック比較】
さくら root権限× InnoDB利用不可× ServersMan メモリが256で、スワップ等禁止×
という感じで、コストパフォーマンスは一長一短ぽい。
【1.初期設定(ユーザー追加等)】
ServersMan@VPSのCentOS5で最初にする設定を参考にする
http://maeda.farend.ne.jp/blog/2010/04/29/serversman-centos-initial-setup/
不必要なものをアンインストール
# yum erase smadmin serversman # /etc/init.d/httpd restart
http://maeda.farend.ne.jp/blog/2010/04/29/serversman-centos-initial-setup/
CentOSバージョン確認
#less /etc/redhat-release <|| **【2.MYSQLの初期設定】 MYSQLのインストール(既にインストール済の場合は省く) >|| # yum install mysql-server # yum install mysql-cluster
MYSQLにログイン+rootパスワード設定
#mysql -u root SET PASSWORD FOR root@localhost=PASSWORD('*******');
MYSQLへのログイン
#mysql -u root -p <|| ユーザー追加+権限付与 >|| grant all privileges on *.* to 'ユーザーID'@'ドメイン名' identified by 'パスワード'; grant all privileges on *.* to 'ユーザーID'@'%' identified by 'パスワード'; ※権限の付与方法 【グローバル】 grant 権限 on *.* 【データベース】 grant 権限 on データベース名.* 【テーブル】 grant 権限 on データベース名.テーブル名 ※アクセス権限の付与方法 【ローカルホスト】 to ユーザー名@localhost 【すべてのサーバー】 to ユーザー名@'%' %はLIKE演算子と同じ意味 【ホスト、IP】 to ユーザー名@サーバー名 to ユーザー名@IP 【ネットワーク単位】 to ユーザー名@'192.168.1.%' to ユーザー名@'192.168.%' ※権限の確認 select user,host from mysql.user;
【3.MYSQLポートの開放】
外部からMYSQLに接続を可能にするには下記3点が必須。
Z.TELNETで確認
A.MYSQLが外部からの接続待ち受け(LISTEN)をする
B.Netfilter/iptablesで接続制限をかけていないことの確認
C. my.cnfでbind-addressが設定されていないことを確認
D.mysqldの権限で、外部からの接続を許可する
Z.TELNETで確認
[http] telnet 182.163.50.XX 80 >繋がる [ftp] telnet 182.163.50.XX 21 [mysql] telnet 182.163.50.XX 3306 >繋がらない
A.空いているポートを確認。 # netstat -nl # netstat -lanput (どのプログラムから動かしているか確認) B-1.IPテーブルズの起動 # service iptables start # service iptables restart http://wingse.blog57.fc2.com/blog-entry-110.html B-2.IPtablesの確認 # iptables -L >>>ACCEPT tcp -- anywhere anywhere B-3.3306をポートに追加 # iptables -A INPUT -p tcp --sport 3306 -j ACCEPT # service iptables save HTTPの許可。 Apacheサーバを起動している場合、設定。 # iptables -A INPUT -p tcp --dport 80 -j ACCEPT # iptables -A INPUT -p tcp --dport 3306 -j ACCEPT B-4.IPtablesの確認 # iptables -L >>>ACCEPT tcp -- anywhere anywhere tcp spt:mysql B-5.IPtablesを直接確認 /etc/hosts.allowと/etc/hosts.deneyの設定を確認 C. vi /etc/my.cnf bind-addressが設定されていないことを確認
(参考)
>とりあえず、次の条件が必要です。
>
>1. MySQLがTCPでも外部からの接続待ち受けをしていること。
> 確認:netstat -tlpn 等(0.0.0.0:3306 〜 LISTEN xxxx/mysqld の表示があれば)
> ※netstat の -p オプションは root限定なので注意!!
> 手段:設定オプションを色々いじれば…
> 既定:デフォルトではTCPポート3306番でListenしているかと
> 備考:TCPを使用しない場合は、UNIXドメインソケットでのローカル接続のみ
>
>2. Netfilter/iptables で、接続制限をかけていないこと。
> 確認:iptables -t テーブル -vnL 等 (テーブルは主に filter 他に nat,mangle)
> 手段:iptablesコマンドで制限を無効化するなり、mysqlの通信を許可して下さい
> 既定:インストール時のファイアウォール設定によりけり
>
>3. mysqldの権限テーブルで、外部からの接続を許可すること。
> 手段:mysqlユーザの追加方法、GRANTの使用法等
> 原理:アクセス制御の仕組み
【4.MYSQLのGUIから接続】
この辺から落としてね。
http://www.navicat.jp/download.html
http://download2.navicat.com/download/navicat9_lite_jp.exe
【5.Portforwardigで、SSHを通じたMYSQLへの接続】
http://www.onamae-server.com/support/faq/vps/common/common_28.php
のようにVPSによってはポートの開放自体が自由にできないこともあるので、
SSHポートフォワーディングの設定についても調べてみた。
★ポートフォワーディングについてまとめ
http://d.hatena.ne.jp/tashen/20080730/1217439319
http://www.pakunet.jp/ssh_forward_for_putty
http://code.xenophy.com/?p=416#
ssh -L 3306:localhost:3306 admin@182.163.50.81
参考
>「Linuxがクライアントの場合」
>ssh -N -f -L 3306:192.168.1.1:3306 work@192.168.1.1
>
>「Windowsがクライアントの場合」
>puttyでトンネル=>源ポート8081、送り先localhost:8081で追加する
>L8081 localhost:8081
【その他】
メモリの空き状況
# free -m
ディスクの空き状況
# df -h
http://d.hatena.ne.jp/stakizawa/20080324/t1
ダイエットの仕方
http://d.hatena.ne.jp/sh2/20100415