- 投稿日:2020-07-22T16:32:01+09:00
SQLSTATE[HY000] [1045] Access denied for user 'test'@'localhost' (using password: YES)の対処
自作したログイン機能でログインしようとした時に"SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)"が出てきたのでメモ代わりに投稿します。
前提:権限を付与するとエラーが出る
grant all privileges on database_name.* to 'root'@'localhost';"ERROR 1034 (HY000): Index for table 'db' is corrupt; try to repair it"というエラーが出ました。
①テーブルを修復
repair table user;という調子でデータベース内のテーブル全てを修復します。
②もう一度権限を付与
grant all privileges on database_name.* to 'root'@'localhost';これで私の場合はうまくいきました。どなたかのお役に立てると幸いです。
- 投稿日:2020-07-22T12:26:30+09:00
仮想環境でLaravelのmigrateができない場合の解決方法
php artisan migrateが実行できない場合の解決方法
環境
MAC
Homebrew 2.4.8
MySQL Ver 8.0.21 for osx10.15 on x86_64 (Homebrew)
PHP 7.3.11 (cli) (built: Jul 5 2020 03:23:39) ( NTS )原因
configのキャッシュが残っている
MySQLのversionが8.0以降の場合、envファイルへの追記が必要。解決方法
下記コマンドでconfigのキャッシュを消去後、再度migrate実行
php artisan config:clear別のエラーが出ている場合 エラーコード
Illuminate\Database\QueryException : SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from information_schema.tables where table_schema = laravel-course and table_name = migrations and table_type = 'BASE TABLE') at /Applications/MAMP/htdocs/laravel-course/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669 665| // If an exception occurs when attempting to run a query, we'll format the error 666| // message to include the bindings with SQL, which will make this exception a 667| // lot more helpful to the developer instead of just the database's errors. 668| catch (Exception $e) { > 669| throw new QueryException( 670| $query, $this->prepareBindings($bindings), $e 671| ); 672| } 673| Exception trace: 1 PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)") /Applications/MAMP/htdocs/laravel-course/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel-course", "root", "root", []) /Applications/MAMP/htdocs/laravel-course/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 Please use the argument -v to see more details.エラー解決方法
1 MySQLに'データベース'を作成
2 作業用ユーザーの作成
3 env .database.phpの情報を合わせる.envの情報を以下にする
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE='データベース'
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock4
php artisan config:clear
php artisan migrate
で完了
- 投稿日:2020-07-22T00:40:37+09:00
【超初心者用】【MySQL 】ERROR 1044 (42000)とERROR 1064 (42000)
ERROR 1044 (42000)必要な権限がないエラー
ERROR 1044 (42000): Access denied for user 'user'@'localhost' to database 'dotinstall_db'ちゃんと教材通りに書いたのに・・・
ERROR 1064 (42000)構文エラー
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'test'' at line 1ちゃんと教材通りに書いたのに・・・
バージョンによって構文が変わるの?と思って調べて行きました。結局
ERROR 1064 (42000)
をそのまんまググりつつ、ユーザの追加
についてMySQL 5.6 リファレンスマニュアル
がヒットするのでそれを参照https://dev.mysql.com/doc/refman/5.6/ja/
ドットインストールの通りにやったのに・・・
mysqlの使い方をドットインストールで勉強していましたがうまく行きませんでした。
バージョンの確認
自分のバージョン
// phpのバージョン確認 $ php -v PHP 7.4.8 // mysqlのバージョン確認 $ mysql --version mysql Ver 8.0.19 for osx10.15 on x86_64 (Homebrew)ドットインストールのバージョン
PHP 5.6.11 mysql 14.14 Distrib 5.5.44, for Linux (x86_64) using readline 5.1ERROR 1064 (42000)は構文エラー
mysqlのバージョンがドットインストールのバージョンと違うことによるのか、ドットインストールのコマンドを使っても発生していた。
- ユーザの追加
ドットインストールでは
mysql> grant all on dotinstall_db.* to username@localhost identified by password自分のバージョンでは
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; (これだけじゃ足りなて、次の権限の付与が別で必要)
all
かall privileges
かの違いがあるよう。
また、with grant option
というのも必要らしい。https://www.postgresql.jp/document/8.0/html/sql-grant.html
これによるとWITH GRANT OPTIONが指定されると、権限受領者はその後、他のユーザにその権限を与えることができます。 グラントオプションがないと、受領者はこれを行うことができません。 現時点では、グラントオプションは個々のユーザに対してのみ与えることができ、グループやPUBLICには与えることができません。
ということらしい。
とりあえず書いといた方が良いということかしら。
- 権限の付与
mysql> grant all privileges on dotinstall_db.* to 'username'@'localhost' -> with grant option;上記二つ、つまり
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; mysql> grant all privileges on dotinstall_db.* to 'dbuser'@'localhost' -> with grant option;これらを実行することで、
$ mysql -u username -pを実行してパスワードを入力すると入れました。
感想
ほんと一つずつうまく行かなくて全然進まない。
なんか他の環境を使えばもっと楽になるらしいですが、しっかり理解したいので、ローカル環境を使おうと思っているけど、
- バージョンごとの違い
- ディレクトリの違い
などでとにかくつまづく。でもその辺りの違いをしっかり理解していなければ、状況ごとに柔軟に対処できなくなると思うので、なんとか解決しながら進みたい!と決意。