mysql导入存储过程无法使用

存储过程的创建者拥有存储过程的ALTER、CREATE、EXECUTE权限。

通过mysql导入的数据库,当里面有存储过程的时候,导入后存储过程是无法用程序使用了,找了很久原因,最后发现是权限问题。

1、我们要用查看数据库里面的存储过程:在mysql里面输入

 代码如下 复制代码

mysql> show function status;

运行后的结果如图所示:

2、修改对应存储过程的Definer和Security_type这两个字段的值
加入我们程序链接数据库的帐户是leiming,链接数据库的地址是127.0.0.1
我们需要输入

 代码如下 复制代码

mysql> update mysql.proc set Definer='leiming@127.0.0.1';

然后修改Security_type字段:

 代码如下 复制代码

mysql> update mysql.proc set Security_type='INVOKER';

这里这里我们是修改的所有的存储过程,当然你要修改你对应的那个存储过程,只需要加上where条件即可。

时间: 2024-09-23 14:48:48

mysql导入存储过程无法使用的相关文章

mysql导入存储过程的方法

mysql教程导入存储过程的方法 本文章提供二种关于mysql导入存储过程的方法与mysql存储过程导出方法,下面我们先来看看导出存储过程的实例,再看一款详细的导入存储过程方法. 导出mysql里面的函数或者存储过程 语法为: [root@localhost bin]# mysqldump -uroot -p -hlocalhost -p3306 -n -d -t -r dbname > procedure_name.sql 参数说明: -n:   --no-create-db -d:   --

mysql导入存储过程报错问题解决方法

今天向mysql导入存储过程的时候报错,错误如下: you *might* want to use the less safe log_bin_trust_function_creators variable   处理这个问题,只需要进入mysql,然后输入: 解决办法 在my.ini  里搜索[mysqld] 直接在下边加一句话:  代码如下 复制代码 log-bin-trust-function-creators=1 或直接使用  代码如下 复制代码 mysql> SET GLOBAL lo

MYSQL导入存储过程无法执行问题解决办法

通过mysql导入的数据库,当里面有存储过程的时候,导入后存储过程是无法用程序使用了,找了很久原因,最后发现是权限问题. 1.我们要用查看数据库里面的存储过程:在mysql里面输入 mysql> show function status; 运行后的结果如图所示: 2.修改对应存储过程的Definer和Security_type这两个字段的值 加入我们程序链接数据库的帐户是leiming,链接数据库的地址是127.0.0.1 我们需要输入 mysql> update mysql.proc set

关于mysql使用存储过程插入大量数据的问题

问题描述 关于mysql使用存储过程插入大量数据的问题 创建数据库 create database ceshi; use ceshi; 创建表 create table ce( id int not null auto_increment, name varchar(50) default null, pw char(50), primary key(id)); 存储过程 delimiter // create procedure insert_ce(in item int) begin dec

mysql导入.sql文件的问题

问题描述 mysql导入.sql文件的问题 将一个.sql文件编辑,文本中最后加入下面这段代码(部分代码)后,导入这个sql文件就会报错(这段新加代码未能导入) 原因是什么?还有就是应该如何解决这个问题.多谢了! # # Function "fun_getChildList" # DROP FUNCTION IF EXISTS `fun_getChildList`; CREATE FUNCTION `fun_getChildList`(`type` int,`areaid` int,`

四款mysql 分页存储过程实例

mysql测试版本:5.0.41-community-nt /***************************************************** mysql分页存储过程 吴剑 2009-07-02 *****************************************************/ drop procedure if exists pr_pager; create procedure pr_pager(     in     p_table_nam

请问mysql导入数据时,文件名可以用正则表达吗?

问题描述 请问mysql导入数据时,文件名可以用正则表达吗? 我现在有很多iis产生的log文件,想要每天自动导入前一天的log日志到 mysql数据库,现在我只能通过load data local infile '/tmp/ex150801.log'手动导前一天的数据. 如果我要排job自动导出该怎么做? 解决方案 写一个程序定时去跑比较简单,而且灵活. 解决方案二: 用脚本等命令行去调用mysqlimport命令等去加载文件导入数据吧.LOAD DATA语法应该不支持正则

mysql创建存储过程并在php中调用

今天web开发中遇到需要利用php调取mysql的存储过程的,研究了半天终于小有所成,下面将如何使用mysql创建存储过程以及如何使用php调用mysql的存储过程做个记录,以防忘记. 1.在PHPmyadmin中创建一个test1存储过程: create procedure test1(in a int) //create创建:procedure存储过程:test1是存储过程名还管有没有参数都得加上() begin //开始 select * from test where id=a;//这里

MySQL导入导出数据出现乱码的解决办法

  在mysql导入导出数据时经常出现中文乱码的问题,大多是因类导入导出时编码设置不一致所引起的.本文介绍了不同平台下的编码转换方法,供大家参考. 在linux系统中默认的是utf8编码,而windows是gbk编码,如果在这二个系统间导入未经指定编码的数据,就会出现乱码. 首先,确定导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如: mysqldump -uroot -p --default-character-set=u