Mysql Error 1449: the User Specified as a Definer Does Not Exist

ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

This error occurs when there is any view / trigger in that database (mysql in your case) that has a definer (in other words a user) that is a definer for the view but then the user itself doesnt exists. A fresh install of mysql should have that user

mysql> select user,host from mysql.user where user='mysql.infoschema';
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
+------------------+-----------+
1 row in set (0.00 sec)

With the permissions :

mysql> show grants for 'mysql.infoschema'@'localhost';
+-------------------------------------------------------+
| Grants for mysql.infoschema@localhost |
+-------------------------------------------------------+
| GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost` |
+-------------------------------------------------------+
1 row in set (0.00 sec)

For some reason that user is missing / deleted in your users list and is why when you list tables its also checking for views in it and complaining about its missing definer.

Solution :

Simply create the user with the permissions above and that should stop showing the error.

Create user:

mysql> CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

Grant permissions:

mysql> GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost`;
Query OK, 0 rows affected, 1 warning (0.00 sec)

The user specified as a definer does not exist - unknown user

I had to set a password for the mysterious user:

UPDATE user SET `authentication_string` = PASSWORD('******') WHERE `User` = 'usaarbit';

...and then grant:

GRANT ALL ON *.* TO 'usaarbit'@'%' IDENTIFIED BY '******'; FLUSH PRIVILEGES;

Solved.



Related Topics



Leave a reply



Submit