##前提
・mariadbサーバーとphpサーバーがあるとする。
・mariadbサーバーにはmariadb(ポート番号3306を開放しておいてください),phpサーバーにはphpがインストールされている
・mariadbサーバーには接続確認のため、任意のテーブルを作成し、データを入れておいてください。
#これからやること
mariadbサーバー側はデフォルトで、localhostしか参照できないようになっているので、
許可したいユーザーと接続元サーバの作成をして、
「このサーバー(今回でいうとphpサーバー)のこのユーザーからのアクセスは許可します」という設定が必要。
##ユーザーと接続元サーバの作成
まずは許可したいユーザー(username)と接続元サーバ(192.168.10.1)の作成。
パスワードを指定したければ、IDENTIFIED BY "パスワード"で指定してください。
mysql>CREATE USER username@192.168.10.1 IDENTIFIED BY "passwd";
##作成できているのかを確認
ちゃんと作成できているのかを確認。以下のコマンドで、作成したuserが出てくればOK。
mysql>SELECT User,Host FROM mysql.user;
##権限を付与
mysql>GRANT [権限種別] ON [データベース名].[テーブル名] TO [ユーザ名]@[接続元ホスト];
権限種別は外部記事を参考にしてください。
以下の例は、
「接続元「192.168.10.1」のユーザー名「username」には、testdbというデータベースのtesttableというテーブルに全ての権限(selectとかdeleteとか諸々全部)を与える」
という意味です。
mysql>GRANT ALL ON testdb.testtable TO username@192.168.10.1;
##PHPから接続
次にphpのあるサーバー(この例だと、192.168.10.1のはずです。)からpdoを用いて接続します。
phpファイルを作成し、接続を確認しましょう。
<?php
//ここのhostは接続先(mariadbサーバー)を指定.
//dbnameは作成したdb
$dsn = 'mysql:host=192.168.10.31;dbname=testdb';
//許可したいユーザー
$user = 'username';
$password = 'passwd';
try{
$dbh = new PDO($dsn, $user, $password);
$sql = 'select * from staffname';
foreach ($dbh->query($sql) as $row) {
print($row['id'].',');
print($row['name']);
print('<br />');
}
}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}
$dbh = null;
?>
ここでinsertしておいたデータが表示され、接続できていることが確認できればOK