mysql 定义者_MySQL错误1449:指定为定义者的用户不存在?mysql-问答-阿里云开发者社区-阿里云...

当将视图/触发器/过程从一个数据库或服务器导出到另一个数据库或服务器时,通常会发生这种情况,因为创建该对象的用户不再存在。

您有两种选择:

1.更改定义 通过DEFINER从转储中删除任何语句,这在最初导入数据库对象时最容易做到。

稍后更改定义器比较棘手:

如何更改视图的定义器 运行此SQL生成必要的ALTER语句

SELECT CONCAT("ALTER DEFINER=youruser@host VIEW ", table_name, " AS ", view_definition, ";") FROM information_schema.views WHERE table_schema='your-database-name'; 复制并运行ALTER语句

如何更改存储过程的定义器 例:

UPDATE mysql.proc p SET definer = 'user@%' WHERE definer='root@%' 注意,因为这将更改所有数据库的所有定义器。

2.创建丢失的用户 如果在使用MySQL数据库时发现以下错误:

The user specified as a definer ('someuser'@'%') does not exist` 然后,您可以使用以下方法解决此问题:

GRANT ALL ON . TO 'someuser'@'%' IDENTIFIED BY 'complex-password'; FLUSH PRIVILEGES; 从http://www.lynnnayko.com/2010/07/mysql-user-specified-as-definer-root.html

这就像一种魅力-只需更改someuser为丢失用户的名称即可。在本地开发服务器上,您通常可以使用root。

还要考虑您是否实际上需要授予用户ALL权限,或者他们是否可以减少权限。来源:stack overflow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值