上一次进行mysql5.7升级mysql8.0之后就没有做操作了,然后今天想使用数据库的时候报错提示error 1449 The user specified as a definer ('mysql.infoschema'@'localhost') does not exist,而mysql.infoschema提供的是对数据库元数据的访问,有关 MySQL 服务器,例如数据库或表的名称、数据 type 或访问权限。是每个 MySQL 实例,用于存储有关所有 MySQL 服务器维护的其他数据库。该数据库包含多个 只读表。它们实际上是视图,而不是基表,因此 没有与之关联的文件,并且不能设置 触发器。
报错如下:

更新完后没有权限不知道是怎么回事
解决:
启动数据库服务,mysql -uroot -p 输入密码进入进入数据库设置GLOBAL innodb_fast_shutdown为1;使用mysql_upgrade 升级程序刷新权限
退出执行mysql_upgrade -u root -p,等待刷新
[root@mysql5 soft]# /soft/mysql/support-files/mysql.server start
Starting MySQL SUCCESS!
[root@mysql5 soft]# /soft/mysql/support-files/mysql.server status
SUCCESS! MySQL running (2318)
[root@mysql5 soft]# mysql -uroot -plucifer [(none)]>SET GLOBAL innodb_fast_shutdown = 1;
Query OK, 0 rows affected (0.00 sec) ---这里提示0 rows affected表示设置无效,没关系直接退出执行mysql_upgrade
lucifer [(none)]>quit
[root@mysql5 soft]# mysql_upgrade -u root -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Upgrading system table data.
Checking system database.
mysql.columns_priv OK
mysql.component OK
mysql.db OK
mysql.default_roles OK
mysql.engine_cost OK
mysql.func OK
mysql.general_log OK
mysql.global_grants OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.password_history OK
mysql.plugin OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.role_edges OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Found outdated sys schema version 1.5.2.
Upgrading the sys schema.
Checking databases.
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
然后再次进入进行操作就正常啦
mysql -uroot -p
lucifer [(none)]>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
由于我现在的数据库是8.0.0 由于mysql在8.0.16以后废除了mysql_upgrade程序,所以在8.0.16以上数据库碰到mysql.infoschema权限消失问题,可以直接创建mysql.infoschema用户赋权
创建用户
CREATE USER 'mysql.infoschema'@'%' IDENTIFIED BY 'password';
赋权
grant all privileges on *.* to 'mysql.infoschema'@'%';
刷新权限
flush privileges;




