外部サーバのmariadbにphpで接続する方法
前提
・mariadbサーバーとphpサーバーがあるとする。
・mariadbサーバーにはmariadb(ポート番号3306を開放しておいてください),phpサーバーにはphpがインストールされている
・mariadbサーバーには接続確認のため、任意のテーブルを作成し、データを入れておいてください。
これからやること
mariadbサーバー側はデフォルトで、localhostしか参照できないようになっているので、
許可したいユーザーと接続元サーバの作成をして、
「このサーバー(今回でいうとphpサーバー)のこのユーザーからのアクセスは許可します」という設定が必要。
ユーザーと接続元サーバの作成
まずは許可したいユーザー(username)と接続元サーバ(192.168.10.1)の作成。
パスワードを指定したければ、IDENTIFIED BY "パスワード"で指定してください。
mysql>CREATE USER [email protected] 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 [email protected];
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
Author And Source
この問題について(外部サーバのmariadbにphpで接続する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/wjtnk/items/1c4cce6d5906b69f21d6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .