Laravelでパスワードを間違える!SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES):原因と解決策


SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
1. エラーの概要
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
というエラーは、Laravelアプリケーションがデータベースに接続しようとした際に発生する一般的なエラーです。このエラーは、データベースユーザーの認証情報が正しくない場合に発生します。次の手順でこのエラーの原因を特定し、修正する方法を解説します。
1.1. .envファイルの確認
Laravelプロジェクトのルートディレクトリにある.env
ファイルにデータベース接続情報が含まれています。このファイルの内容を確認し、正しい認証情報が記載されていることを確認します。(特にパスワード)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=root
DB_PASSWORD=your_password
DB_DATABASE
:データベース名DB_USERNAME
:データベースユーザー名(ここではroot
)DB_PASSWORD
:データベースユーザーのパスワード


2. エラーの検証と修正
SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: YES)というエラーをパスワードを間違えて実際に発生させます。
LaravelでSQLSTATE[42S02] Table ‘database.table’ doesn’t exist:問題と解決策
と似たコードを使用します。


2.1. 検証環境
- PHP 8.1.25
- Laravel 10.48.12
- Windows 11
2.2. プロジェクトの作成
まず、エラー検証を行うためのサンプルプロジェクトを作成します。
composer create-project laravel/laravel SampleProject
2.3. .envファイルの編集
存在しないデータベースを作成するために.envファイルを編集します。今回はDB_PASSWORDでパスワードを指定できるので、適当にdにします。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=d

2.4. コントローラーの作成
次に、`Users` テーブルに登録されているユーザー数をカウントするコントローラーを作成します。ここでは、例として `SampleController` を作成します。
php artisan make:controller SampleController
作成したコントローラーに以下のメソッドを追加します。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class SampleController extends Controller
{
public function index(){
$count = User::count();
return response($count);
}
}
このコードは、User テーブルのレコード数を取得してレスポンスとして返すプログラムです。

2.5. ルーティング
次に、ルーティングを設定します。`web.php` ファイルで以下のようにルーティングを追加してください。
use App\Http\Controllers\SampleController;
Route::get('/', [SampleController::class, 'index']);
この設定により、ブラウザで http://127.0.0.1:8000/
にアクセスすると、SampleController の index メソッドが実行されます。
2.6. エラーの発生と検証
まず、ターミナルで以下のコマンドを実行します。
php artisan serve
次に、ブラウザで http://127.0.0.1:8000/
にアクセスします。すると、”SQLSTATE[HY000] [1049] Unknown database ‘database'” というエラーが発生します。
このエラーは、password が正しくないため発生します。.envファイルに正しいパスワードを入力する必要があります。
したがって、.envファイルを次のように編集します。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=
http://127.0.0.1:8000/
にアクセスして、エラーが解消されたことを確認します。
ということで、何もしていないので登録数が0として表示されました。
2.7. まとめ
SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: YES)エラーは、主にパスワードの間違いの修正によって解決できます。これらを確認し、問題が解決するか試してみてください。