mysql存储过程权限_Mysql修改存储过程相关权限问题

本文详细探讨了在MySQL中,当用户A创建了一个存储过程后,如何让另一个用户B拥有查看、执行、修改及删除该存储过程的权限。首先,通过GRANT命令分别授予B用户SELECT权限(用于查看存储过程)、EXECUTE权限(执行存储过程)、CREATE ROUTINE和ALTER ROUTINE权限(创建和修改存储过程)。然而,仅凭这些权限,B用户仍无法修改他人定义的存储过程,此时需要SUPER权限。通过实验发现,SUPER权限过于强大,允许访问全局的MySQL,包括系统库,存在安全隐患。最后总结了不同权限的作用,并提出使用DEFINER更新存储过程所有者作为替代方案。
摘要由CSDN通过智能技术生成

Mysql的存储过程相关权限问题

在使用mysql数据库经常都会遇到这么一个问题,其它用户定义的存储过程,现在使用另一个用户却无法修改或者删除等;正常情况下存储过程的定义者对它有修改、删除的权限;但是其它的用户就要相于的授权,不然无法查看、调用;

mysql 中使用用户A创建一个存储过程,现在想通过另一个用户B来修改A创建的存储过程;以下记录就是基于这样的情况产生的;

db5a149bfdd0665d5a57294eaa217a7b.png

用户A对OTO3库的权限:

mysql> show grants for 'a'@'%'; +---------------------------------------------------+ | Grants for a@%                              | +---------------------------------------------------+ | GRANT USAGE ON *.* TO 'a'@'%'               | | GRANT ALL PRIVILEGES ON `OTO3`.* TO 'a'@'%' | +---------------------------------------------------+ 2 rows in set (0.00 sec)

用户B的权限:

mysql> show grants for 'swper'@'%'; +----------------------------------------------------------------------+ | Grants for swper@%                                                   | +----------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'swper'@'%'                                    | | GRANT SELECT, UPDATE, DELETE, DROP, ALTER ON `OTO3`.* TO 'swper'@'%' | +----------------------------------------------------------------------+ 2 rows in set (0.00 sec)

以用户B的身份登陆Mysql操作;

[root@mysql ~]# mysql -h10.0.10.110 -uswper -p123456

查存储过程列表时就提示没有权限了:

mysql> select `name` from mysql.proc where db = 'OTO3' and `type` = 'PROCEDURE'; ERROR 1142 (42000): SELECT command denied to user 'swper'@'mysql' for table 'proc'

以root身份给B用户添加一个查看存储过程的权限:

mysql> grant select on mysql.proc to 'swper'@'%'; Query OK, 0 rows affected (0.00 sec)  mysql> show grants for 'swper'@'%'; +----------------------------------------------------------------------+ | Grants for swper@%                                                   | +----------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'swper'@'%'                                    | | GRANT SELECT, UPDATE, DELETE, DROP, ALTER ON `OTO3`.* TO 'swper'@'%' | | GRANT SELECT ON `mysql`.`proc` TO 'swper'@'%'                        | +----------------------------------------------------------------------+ 3 rows in set (0.00 sec)

再回到B用户里查看存储过程列表:

mysql> select `name` from mysql.proc where db = 'OTO3' and `type` = 'PROCEDURE'; +------------------------+ | name                   | +------------------------+ | proc_cs                | +------------------------+ 1 rows in set (0.00 sec

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值