暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql error1449解决方法

原创 敖子🍖 2024-10-30
158

上一次进行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 -p

lucifer [(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; 


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论