プログラミング

SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: YES) エラーの解決方法

みなさんこんにちは!ワトスンです。

今回は以下のようなエラーが出たときの対処録を残しておきます。

SQLSTATE[HY000] [1045] Access denied for user 'host名'@'localhost' (using password: YES)

このエラーは、データベースとの接続が拒否された際に表示されるエラーです。

「rootユーザーがlocalhostからアクセスできません(パスワードは大丈夫)」ということです。

データベースにユーザとパスワード、権限を正しく設定しているにもかかわらず、上記のエラーでMysqlに接続できない人向けの記事です。

エラーが出たときの元コード

エラーが出たときは以下のようなコードで実行していました。
$my_nam=htmlspecialchars($_POST["n"], ENT_QUOTES);
$my_mes=htmlspecialchars($_POST["m"], ENT_QUOTES);
$dsn= "mysql:host=localhost;port=3306;dbname=db;charset=utf8";
try{
$db = new PDO($dsn,"root","root");
$db->query("INSERT INTO tb (ban,nam,mes,dat)
VALUES (NULL,'$my_nam','$my_mes',NOW())");
print "書き込みに成功!";
}catch (Exception $e) {
echo $e->getMessage() . PHP_EOL;
}

改善後のコード

$db = new PDO($dsn,"root","root");

この部分を

$db = new PDO($dsn,"root","");

のように変更しました。

PDOについては「PDOとは」をご覧ください。

私の場合は、上記のようにrootを削除しただけで解決しました。

データベースの特権の情報(パスワード)と違いがあったようです。

$db = new PDO('サーバー名', 'ユーザー名', 'パスワード');

サーバー名、ユーザー名、パスワードに間違いがないかもう一度確認してみて下さい。

私の場合はこの解決策で対応できましたが、これでも解決できない場合は「SQLSTATE[HY000] [1045] Access denied for userの解消」も参考にしてみて下さい。

一応どなたかのためになるように記事にしてみました!参考までに。

なにか疑問点がありましたらコメントまたはTwitterのDMでご連絡ください!

以上です。

コメントを残す

メールアドレスが公開されることはありません。

関連記事