在mysql下创建存储过程,一直提示如下信息:
刚开始我给该用户授予create routine权限,但是还是不能创建,后来才发现在存储过程中也有select,insert等其他操作,并看到一篇日志如下
首先,在mysql存储过程出现的同时,用户权限也增加了5种,其中和存储过程有关的权限有 三种:
ALTER ROUTINE 编辑或删除存储过程
CREATE ROUTINE 建立存储过程
EXECUTE 运行存储过程
在使用GRANT创建用户的时候分配这三种权限。 存储过程在运行的时候默认是使用建立者的权限运行的。
需要注意的是在一个用户拥有建立存储过程的权限时,如果其没有对于select、update或delete等权限的话,虽然操作数据的存储过程可以建立,但调用存储过程的话仍是无法成功的,会返回权限错误,就算拥有运行存储过程的权限也一样。所以,如果有人给你建立了一个没有select、update、delete权限只有CREATE ROUTINE权限的用户,骂他吧,他是故意的。
当然这样的用户建立的存储过程倒并不是完全不能使用,创建存储过程中有一个特征子句可以让存储过程使用运行者的权限,在建立存储过程后只要加上
SQL SECURITY INVOKER
特征子句就可以了。如下。 CREATE PROCEDURE p() SQL SECURITY INVOKER 这样的话就可以分配两批人,一批给与创建存储过程的权限,作为开发者,一批给与运行存储过程和select、update、delete权限,作为测试者。(脑筋秀逗了) 有了这种权限分配,mysql的安全性完全不需要在功能层去保护了,我通过root用户建立的存储过程,但是在功能层用一个只拥有运行存储过程权限的用户来调用。那么,你就算从功能层上得到数据库的用户名和密码,并且模拟了ip,也不能得到你想要的任何东西。 有了权限,我们可以放心大胆的使用存储过程,不用担心安全问题了
我给用户授权,是指定数据库的
grant all privileges on unisoftdb.* to
unisoft@'192.168.0.10'
identified by
'unisoft@a1b2c3$4'
;
还是没有这些权限
再次授权:
grant all privileges on *.* to
unisoft@'192.168.0.10'
identified by
'unisoft@a1b2c3$4'
;
这样才可以。
一个指定库,一个没指定库,查询结果就不一样,而且第二次授权后就可以创建存储过程了。
如果大家指定原因,欢迎留言,如有不对的地方,欢迎指正。
1、如果用户有create routine
权限
那么他就可以
创建
procedure | function 。
2、如果用户
创建
了procedure | function 那么
mysql
会自动赋予它对procedure | function 的alter routine和execute
权限
。
3、例子:
用户root用户
创建
一个spuser@’localhost’用户并对它赋予create procedure
权限
grant create routine on tempdb.* to spuser@'localhost' identified by '123456';
用spuser@
文章转载地址:https://www.cnblogs.com/bao-bei/p/13201747.html
现考虑要分库分表了。每个月初先备份以sys_oper_log为前缀,日期年月为后缀的数据库表,比如:sys_oper_log_202007,然后再
创建
一张以sys_oper_log数据库表。
实现思路:
Mysql
如何每月自动建表?
一、新建事件每月调用
存储
过程
二、
存储
过程
里面建表
1、如果用户有create routine
权限
那么他就可以
创建
procedure | function 。2、如果用户
创建
了procedure | function 那么
mysql
会自动赋予它对procedure | function 的alter routine和execute
权限
。3、例子:用户root用户
创建
一个spuser@'localhost'用户并对它赋予create proce...
1、如果用户有create routine
权限
那么他就可以
创建
procedure | function 。
2、如果用户
创建
了procedure | function 那么
mysql
会自动赋予它对procedure | function 的alter routine和execute
权限
。
3、例子:
用户root用户
创建
一个spuser@'localhost'用户并对它赋予create procedure
权限
存储
过程
和函数是事先经过编译并
存储
在数据库中的一段SQL语句的集合。
调用
存储
过程
和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
存储
过程
和函数的区别:
函数必须有返回值,
存储
过程
没有
存储
过程
的参数可以使用IN、OUT、INOUT类型,而函数的参数只能是IN类型。
如果有函数从其他类型的数据库迁移到
MySQL
,可能因此需要将函数改造成
存储
过程
。
确认用户是否具有相应的
权限
。
创建
存储
过程
和函数——cr
1、如果用户有create routine
权限
那么他就可以
创建
procedure | function 。2、如果用户
创建
了procedure | function 那么
mysql
会自动赋予它对procedure | function 的alter routine和execute
权限
。3、例子:用户root用户
创建
一个spuser@'localhost'用户并对它赋予create proce...
格式:grant
权限
on 数据库.* to 用户名@登录主机 identified by "密码";
例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能。需要在
mysql
的root用户下进行
mysq..
要
创建
、修改和删除tablespace,必须拥有CREATE TABLESPACE
权限
。
tablespace表空间是针对innodb引擎来说的。每个表可以拥有独立的表空间。
但是我们可以使用CREATE TABLESPACE语句
创建
共享表空间。
MySQL
存储
过程
及函数:
创建
存储
过程
:delimiter //create procedure
存储
过程
名称--begin--sql语句1--语句2.....--end//delimiter ;其中:参数为: [IN|OUT|INOUT] parameter_name type 其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以...
2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作
3. 可以限制用户登录的IP或域名
4. 可以限制用户自己的
权限
是否可以授权给别的用户
一、用户授权
mysql
> grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;
添加
权限
(和已.
2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作
3. 可以限制用户登录的IP或域名
4. 可以限制用户自己的
权限
是否可以授权给别的用户
一、用户授权
mysql
> grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;
all pri