レンタルサーバー上(xserver)にあるMySqlからデータを取得するphpプログラムを実行したところ
以下のエラーが発生しました。
SQLSTATE[HY000] [1130] Host 'sv8180.xserver.jp' is not allowed to connect to this MariaDB server
以下、実行したphpのソースとなります。
<?php try { $ini = parse_ini_file('./db.ini', FALSE); $db = new PDO('mysql:host='.$ini['host'].';dbname='.$ini['dbname'].';charset=utf8', $ini['dbusr'], $ini['dbpass']); $sql = $db->prepare('SELECT * FROM test'); $sql->execute(); } catch(PDOException $e) { die('エラーメッセージ:'.$e->getMessage()); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>dbの中身を見てみよう</title> </head> <body> <h1>testテーブルの情報</h1> <table border="1"> <tr> <th>id</th><th>name</th><th>department</th> </tr> <?php while ($row = $sql->fetch()) { ?> <tr> <td><?php print($row['id']); ?></td> <td><?php print($row['name']); ?></td> <td><?php print($row['department']); ?></td> </tr> <?php } ?> </table> </body> </html>
今回発生したエラーを解決するには、対象のMySqlのユーザーに権限を付与する必要があるようでした。
ssh -l サーバーID -I 鍵名 サーバーID.xsrv.jp -p 10022
でssh接続を行い、
mysql -h ホスト名 -u ユーザー名 -p データベース名
でMySqlにログイン。
grant all privileges on . to ユーザー名@"sv8180.xserver.jp" ;
で権限を与えようとしたところパスワードが間違えているかユーザーが存在しない旨のエラーが発生しました。
Access denied for user 'ユーザー名'@'sv8180.xserver.jp' (using password: YES)
grantコマンドではパスワードを入力する場面はそもそもなかったためユーザーがいないのかと考え、
SELECT user,host,password FROM mysql.user;
でユーザーを確認しようとしたところまたしても権限がないとのエラー。
SELECT command denied to user 'ユーザー名'@'sv8180.xserver.jp' for table 'user'
rootでログインすれば実行できると考えられるのですが、xserverではroot権限を提供していないとのことでした。
xserverに問い合わせて権限を付与してもらうしか方法はないのでしょうか。
ご教授頂ければ幸いです。
回答2件
あなたの回答
tips
プレビュー