artisan tinkerでコマンド打ったら Illuminate/Database/QueryException with message 'SQLSTATE[HY000] [1044] Access denied for user 'xxx'@'localhost' to database 'laravel' (SQL: select * from `laravel`)'

2020-05-01

Laravelでデータベース(MySQL)を使えるように設定してみたが、確認のため以下のコマンドを打つと以下のようになってしまった。

$ php artisan tinker
>>> DB::table('laravel')->get();

■ 返答

Illuminate/Database/QueryException with message 'SQLSTATE[HY000] [1044] Access denied for user 'xxxx'@'localhost' to database 'laravel' (SQL: select * from `laravel`)'

作成したユーザ(xxx)で作成したDB(laravel)へ接続できないらしい。

ユーザのパスワード、データベース名の確認

さっき作ったばかりのユーザ名とパスワード、データベース名を間違えているとは思いたくないが自分を信用できないので確認。

mysql -u ユーザー名 -p;

あれパスワード聞かれずにログインできたぞ。ホスト指定してないから?

mysql -h localhost -u ユーザ名 -p

パスワード聞かれた。さっきのどこにログインしたんだろ。

さらにデータベースがあるか確認。

SHOW DATABASES;

あれ、いない。

■ 返答

+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+

create databaseで作ったと思っていたデータベースが作られていなかったらしい。

ターミナルを確認すると確かに作ったのだが。。。

mysql> create database laravel;
Query OK, 1 row affected (0.02 sec)

あ、その後のGRANT ALLでデータベース名間違えてる。(ちょっと前までLalavalだと思ってた)

Grant ALL on laraval.* to xxx@localhost identified by 'password';

Rootをログアウト(quitで抜ける)し再びrootユーザでログイン。

mysql -u root

正しいDBにGrant ALLでユーザに権限を渡す。

Grant ALL on laravel.* to xxx@localhost identified by 'password';

■ 返答
Query OK, 0 rows affected (0.04 sec)

再度作成したユーザでログイン。SHOW DATABASESでDBの確認。

SHOW DATABASES;

■ 返答

+--------------------+
| Database           |
+--------------------+
| information_schema |
| laravel            |
| test               |
+--------------------+

追加された。

アルチザンtinkerでコマンドを再確認。

$ php artisan tinker
>>> DB::table('laravel')->get();

またなんか言ってる。。。

Illuminate/Database/QueryException with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.laravel' doesn't exist (SQL: select * from `laravel`)'

中身何も入ってないからかな。それもそうか。作っただけだし。Laravelの方もろくに設定してないし。
ひとまず今回の問題は解決。

上記エラーは以下で解決しました。

laravel, MySQL, php, SQL

Posted by Nakamoto