MySQL 使用 show tables 時出現 ERROR 1449 (HY000) 問題

cornflower發表於2020-11-23

一、問題出現

在安裝完 MySQL 後,使用 SHOW TABLES 時,發現一直出現 ERROR 1449 (HY000):The user specified as a definer (‘mysql.infoschema‘@’localhost’) does not exist 。具體去網上搜尋,給的答案都是用 mysql_upgrade ,事實上 mysql_upgrade 功能在 mysql8.0 之後版本已經停用了。在經過多方查詢後,找到如下解決方案。

mysql> use goblog
Database changed
mysql> show tables;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

二、解決方案

總體辦法就是給 mysql.infoschema 使用者新增許可權。
MySQL8.0 之後,不支援使用 grant 時隱式地建立使用者,必須先建立使用者,再授權。程式碼如下:

mysql> create user 'mysql.infoschema'@'%' identified by '密碼';
Query OK, 0 rows affected (0.01 sec)
mysql> create user 'mysql.infoschema'@'%' identified by '密碼';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on *.* to 'mysql.infoschema'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

再使用 show tables ,就能出現結果了。

mysql> show tables;
+------------------+
| Tables_in_goblog |
+------------------+
| articles         |
+------------------+
1 row in set (0.01 sec)
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章