- 投稿日: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を実行してパスワードを入力すると入れました。
感想
ほんと一つずつうまく行かなくて全然進まない。
なんか他の環境を使えばもっと楽になるらしいですが、しっかり理解したいので、ローカル環境を使おうと思っているけど、
- バージョンごとの違い
- ディレクトリの違い
などでとにかくつまづく。でもその辺りの違いをしっかり理解していなければ、状況ごとに柔軟に対処できなくなると思うので、なんとか解決しながら進みたい!と決意。