質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

artisan

artisanは、PHP Laravelフレームワークのコマンドの事です。 Artisanコマンドを使う事で、DBのテーブルやバンドル等を追加することができるコマンドです。

Q&A

2回答

3270閲覧

【Laravel 初期設定 MySQL】php artisan migrateで、General error: 1449 The user specified as a definer

nakamu

総合スコア82

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

artisan

artisanは、PHP Laravelフレームワークのコマンドの事です。 Artisanコマンドを使う事で、DBのテーブルやバンドル等を追加することができるコマンドです。

0グッド

0クリップ

投稿2021/03/22 05:28

マイグレーションの実行で下記のようなエラーになります。
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Laravelは環境構築段階で躓かないように徹底してるので意味不明なことしてる人は根本的に入門方法を間違えてる。
ドキュメント読むのが先。
https://readouble.com/laravel/8.x/ja/installation.html

brewでインストールしたmysqlを使うことはない。
唯一Valetだけはbrew install mysql@5.7を指定してたけどLaravel8時点ではここも変わった。

https://readouble.com/laravel/8.x/ja/valet.html
https://readouble.com/laravel/7.x/ja/valet.html

投稿2021/03/22 07:13

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakamu

2021/03/22 10:05

今回インストールに関しては、参照記事にあるComposerを使った方法でlaravelのインストールを行い、homebrewでmysqlのインストールをしました。 Laravel sailであれば別でhomebrewなどを使ってのmysqlのインストールが不要でしょうか?
guest

0

Mysql2へのアクセス権限の問題というより、マイグレーション用データに対する参照権限の問題です。
要は他人のデータ(viewの定義ユーザー)を借用しようとして警告食らっているようなもんです。

MySQLのViewのDefinerを変更する

投稿2021/03/22 07:01

FKM

総合スコア3635

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakamu

2021/03/22 10:30

そもそもテーブルをマイグレーションでこれから作るのでviewは存在していないのになぜなのでしょうか?変更もなにもないはずでは
nakamu

2021/03/22 17:57

リンク先のSELECT以下に何を書けばいいのか mysql > に続けてCREATEやALTERを書けばいいのか細かい手順がわからないです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問