博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Err] 1449 - The user specified as a definer ('rybhe'@'%') does not exist
阅读量:6873 次
发布时间:2019-06-26

本文共 815 字,大约阅读时间需要 2 分钟。

转载:

最近在做一个项目,由于服务器切换,所以需要将原有服务器的mysql数据表以及存储过程导入到另一个服务器的mysql数据库中。导入完成之后以为一切是那么的简单,却没有想到总还是出现了一些莫名其妙的问题。

我在用程序调用存储过程时,总是提示错误:

1 The user specified as a definer ('test'@'%') does not exist 1449

查看了自己mysql的用户表后,发现确实没有test这个用户,但是我程序用的是root登录的,所以感觉有些莫名其妙。

后来通过查资料发现,是由于自己存储过程设置的安全性为definer,而当时的那个数据库存在test这个用户且用的test用户创建的存储过程。

所以解决方法主要有以下两种:

保持definer安全性

1)在navicat上进行修改

将定义者从test改为在该服务器存在的用户(一般每个服务器都有root@localhost)

2)通过sql语句修改

1 mysql>update mysql.proc set DEFINER='root@localhost' WHERE NAME='' AND db='mydb';

其中,mysql.proc是固定的,definer即要改为的用户名,name为存储过程名,db为数据库名

 

将安全性修改为invoker

1)在navicat上进行修改

2)通过sql语句进行修改

1 ALTER PROCEDURE proc_name SQL SECURITY INVOKER 2 ALTER PROCEDURE proc_name SQL SECURITY DEFINE

 

补充:对于Linux,mysql等工具,操作都需要用户权限,之所以在大多数操作时,没有出现问题是因为默认是root用户,root用户具有最高权限可以操作。

但当操作某些专有的东西功能时,需要登录对应的用户信息才可以操作。

 

你可能感兴趣的文章
C/C++程序员应聘常见面试题剖析(经典)
查看>>
ASP.net Web API综合示例
查看>>
ie6下a标签使用location.href 不跳转的解决办法
查看>>
向量样本【模式识别】感知器 Perceptron
查看>>
委托杂谈
查看>>
《Android内核剖析》读书笔记 第7章 理解Context
查看>>
IOS开发之UILabel动态高度设置方法
查看>>
儿子购买的书
查看>>
让Android中的webview支持页面中的文件上传
查看>>
hbase regionserver挂掉的问题
查看>>
延迟段创建的学习-实验
查看>>
C/C++ 内存对齐
查看>>
php 在函数内引用全局变量 讲解引用
查看>>
数据结构和算法系列1 线性表之顺序表
查看>>
项目经理的指导
查看>>
android蓝牙开发---与蓝牙模块进行通信
查看>>
HDU 3537 Daizhenyang's Coin(博弈,翻硬币)
查看>>
数据结构和算法系列5 七大排序之冒泡排序和快速排序
查看>>
2013年8月3日第31周六
查看>>
Android使用隐藏api的方法(使用被@hide的api)
查看>>