web-dev-qa-db-ja.com

更新後にMySqlがmysql.infoschemaを見つけることができません

今朝、私のmySQLは私のシステムでバージョン5.7から8.0.11に自動的に更新されました。

この後、データベースを表示したり、phpMyAdminでコマンドを実行したりできなくなりました。私がやろうとしていることはすべて、_mysql.infoschema_テーブルに関連するエラーの結果です。

私が得るエラーのほとんどはこれです:#1449 - The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

エラーを検索し、コマンドを実行してユーザー_GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password'; FLUSH PRIVILEGES;_を作成しようとしました( this answerに見られるように)。しかし、構文エラーが発生し続けます。

バージョン5.7および8.0.11に関連する重大な問題を検索した後、これで確認しました site システムテーブルがInnoDBに移動されました。

MySQL用の最初のストレージエンジン-MyISAMであり、これまでMySQLで利用可能でした。 MySQL 5.7は、MySQLスキーマのMySQL特権テーブルに引き続きMyISAMを使用しますが、MySQLではそれらはInnoDBに移動されます。

バージョン8.0.11の新規インストールを試したので、データベースをインポートできましたが、rootとしてログインしようとすると同じ#1449エラーが発生します。

追伸私はFedora28を使用しています。

8
Rafael

MySQLをアップグレードするたびにmysql_upgradeを実行する必要があります。

これは、特定のアップグレードまたはダウングレード後にテーブルが変更され、いくつかの特権を(再)作成する必要があるためです。

mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql_upgrade -u root -p

mysql_upgradeは、MySQLServerの現在のバージョンとの非互換性についてすべてのデータベースのすべてのテーブルを調べます。 mysql_upgradeは、システムテーブルもアップグレードして、追加された可能性のある新しい特権または機能を利用できるようにします。

20
Timmetje