マイグレーションの実行で下記のようなエラーになります。
SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('mysql.infoschema'@'localhost') does not exist (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')
laravelの.envにもrootで設定しており、mysql.infoschemaこのユーザーは必ず作るお決まりなのか?rootでできないのかわかりません。
【バージョン】
mysql バージョン(Ver 8.0.23 for osx10.16 on x86_64 (Homebrew))
PHP バージョン PHP 7.3.24-(to be removed in future macOS) (cli)
【MySQLのインストールからの手順】
・Homebrewでインストール後
参照Qiita 1
MySQL
1// アクセスが拒否られる 2$ mysql -u root 3// 一旦停止 4$ mysql.server stop 5// 権限を回避してアクセス 6$ mysqld_safe --skip-grant-tables 7// mysqlにアクセス 8$ mysql -u root 9 10mysql> use mysql; 11Database changed 12// userテーブル削除 13mysql> truncate table user; 14Query OK, 0 rows affected (0.00 sec) 15mysql> flush privileges; 16Query OK, 0 rows affected (0.01 sec) 17 18// ルートユーザーを作成し、権限付与 19mysql> create user 'root' identified by 'password'; 20Query OK, 0 rows affected (0.04 sec) 21mysql> SELECT user, host FROM mysql.user; 22+------+------+ 23| user | host | 24+------+------+ 25| root | % | 26+------+------+ 271 row in set (0.01 sec) 28 29mysql> grant all privileges on *.* to 'root'; 30Query OK, 0 rows affected (0.01 sec) 31mysql> flush privileges; 32Query OK, 0 rows affected (0.00 sec) 33mysql> quit; 34 35// mysqlidのプロセス終了 36$ ps 37 PID TTY TIME CMD 38 508 ttys000 0:00.55 -bash 3976932 ttys001 0:01.19 -bash 4098076 ttys001 0:00.04 /bin/sh /usr/local/opt/mysql@8.0/bin/mysqld_safe --skip-grant-tables 4198176 ttys001 1:03.36 /usr/local/opt/mysql@8.0/bin/mysqld --basedir=/usr/local/opt/mysql@8.0 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql@8.0/lib/plugin --skip-grant-tables --log-e 4281032 ttys002 0:00.36 -bash 43$ KILL 98076 44$ KILL 98176 45 46// mysql再起動 47mysql.server start 48$ mysql -u root -p 49Enter password:
この後、下記エラーが出たため認証方式の変更を行う
The server requested authentication method unknown to the client [caching_sha2_password]
参照Qiita 2
MySQL
1mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; 2 3[mysqld] 4/usr/local/etc/my.cnfの最後に下記追加 5# デフォルトの認証方式を変更(デフォルトは「caching_sha2_password 」) 6default-authentication-plugin=mysql_native_password
この後、下記エラーが出たため、コマンドを実行
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist
参照リンク 3
MySQL
1$ mysql -u root -p 2mysql> SET GLOBAL innodb_fast_shutdown = 1; 3mysql> exit
結局、このエラーで変わらず。
SQLSTATE[HY000]: General error: 1449 The user specified as a definer
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/22 10:05