質問
- phpのPDOでMySqlに接続できない
-
本文:
現在の状況は以下です。全てウェブクロウでの質問です。
・FTPでphpファイル(PDO接続する)をアップロード済み。
・Mysqlでデータベース名作成済み。db名はaa_db。
・dbユーザー名も作成済み。ユーザー名はaa_user。パスワードはaaaa。
・aa_dbの「権限設定ユーザー」にaa_userを割り当て済み。
・phpMyAdminでログインできることを確認済み。
以下のように、関数に必要な値を与えてPDOによる接続を行っています。
(ちなみにローカル環境での開発時ではエラーが出ていない関数です。)
function pdo() {
$DB_HOST = "mysql1.webcrow-php.netowl.jp";
$DB_DATABASE = "aa_db";
$DB_USERNAME = "aa_user";
$DB_PASSWORD = "aaaa";
$PDO_DSN = "mysql:dbhost=".$DB_HOST."; dbname=" . $DB_DATABASE . ";charset=utf8";
$pdo = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $pdo;
}
しかし、これで実際にウェブクロウにアップしたphpファイルをブラウザで見ると以下のエラーが出ます。
SQLSTATE[28000] [1045] Access denied for user 'aa_user'@'localhost' (using password: YES)
引数の誤字確認がない事は確認しました。
エラーをググってみると「ユーザー名が間違っている」か「アクセス権限がない」とでます。
ユーザー名は合っているので「アクセス権限がない」可能性があるかもと思ったのですがウェブクロウのMysqlの設定画面では「権限ユーザー設定」以外はそれらしいものが見当たらず、phpadminにもそれらしきものを見つけられませんでした。
Mysqlに関してはあまり知識がないので、もし、Mysql自体をコマンドプロントで操作し権限設定が必要な場合は具体的にどうすればよいか教えていただけないでしょうか。
それとも、他に原因があるのでしょうか?どなたか助けてください。 - 緊急度:緊急投稿者:湖春さん投稿時間:2017/03/20 00:49
回答 No.5823
-
本文:
ご指摘いただいたところを修整すると無事つながりました!
ありがとうございます。
調べてみると、ローカルの場合はdbホスト名は省略できる事を知りました。
それに気づかず引数ばかりに気をとられ関数内の構文の確認が甘くなっていました。お恥ずかしい限りです。
今回は先入感に捕らわれてはいけないという勉強になりました。
本当に助かりました。ありがとうございました。 - 投稿者:湖春さん 投稿時間:2017/03/20 21:24
回答 No.5818
この回答がベストアンサーです
> $PDO_DSN = "mysql:dbhost=".$DB_HOST."; dbname=" . $DB_DATABASE . ";charset=utf8";
$PDO_DSN = "mysql:host=".$DB_HOST."; dbname=" . $DB_DATABASE . ";charset=utf8";