2011年5月19日木曜日

MySqlを外部接続するための設定

今更な気もしますが、忘れっぽいので・・・・

A.com と B.comがあって
A.comを外部データベースサーバーとして使用する。
B.comはA.comからのデータを取得して閲覧のみ。

A.comのmy.confの中にある
bind-address=127.0.0.1をコメントにする
↓↓↓↓↓↓↓↓↓↓
# bind-address = 12.0.0.1
(bind-addressは外部からの接続を許可しない時に使用します。)

次に、A.comにssh接続する
(phpMyAdminの特権ところでも確認やSQL文を発行して追加する事はできますがROOT権が無かったらエラーになるので、今回はターミナルなどのソフトでSSH接続で行います。)

ssh接続完了したら
mySqlへ移動します
> mysql -u root -p

mysql > となったらOK
次に、GRANTで発行する。

mysql> GRANT ALL PRIVILEGES ON *.* TO user@'%' IDENTIFIED BY '任意のパスワード';


「*.*」だと、全部のテーブルを見れる設定になってしまうので
「TABLE_NAME.*」とすると、見れるテーブルを指定できます。
「user@%」になっている「%」の所を外部のIPアドレスにする事で、指定されたIPからしか接続出来ない様にする。(セキュリティ強化の為)
「user」となってる所は接続用のUSER名かな?(ここらへん解らん)

あまり、私も詳しく理解してないので自己責任でお願いします。

上記QUERYを発行して、OKだったら

Query OK, 0 rows affected (0.00 sec)
でます。エラーだと何らかのエラー文が出ると思います。
あとは接続ですが


$hostname = ホストのIPアドレス;
$database = TABLE_NAME;
$dbuser = 設定したuser名;
$dbpass = 設定したパスワード;

$con = mysql_connect($hostname, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($database,$con) or die(mysql_error()); 
PHPで書くとこんな感じだとおもいますが

これで、接続できたらOKですね。

0 件のコメント:

コメントを投稿