为 mysql 存储过程批量创建权限

为 mysql 存储过程批量创建权限

是否可以向用户授予权限,使他们可以执行服务器上的所有存储过程(甚至在该服务器上的单个数据库中)。查看授权语法文档(5.5),它说我必须grant execute on procedure <dbname>.<procname> to ....对每个存储过程执行此操作。有没有办法通过操作 mysql db 本身来更轻松地完成此操作?

答案1

grant execute on <dbname>.*

“程序”一词应被删除。

答案2

对于针对数据库定义的任何用户权限,mydb运行以下命令:

UPDATE mysql.db SET execute_priv='Y' WHERE db = 'mydb';
FLUSH PRIVILEGES;

首先,查看是否有任何用户定义mysql.db

SELECT COUNT(1) FROM mysql.db;

如果没有任何用户拥有数据库级权限,则给他们。如果您想授予每个用户针对数据库运行存储过程的能力mydb,请运行此

INSERT INTO mysql.db (Host,db,user,Select_priv,Insert_priv,Update_priv
Delete_priv,Create_priv,Drop_priv,Grant_priv,
References_priv,Index_priv,Alter_priv,Create_tmp_table_priv
Lock_tables_priv,Create_view_priv,Show_view_priv,Create_routine_priv
Alter_routine_priv,Execute_priv,Event_priv,Trigger_priv
SELECT Host,'mydb',user,Select_priv,Insert_priv,Update_priv
Delete_priv,Create_priv,Drop_priv,Grant_priv,
References_priv,Index_priv,Alter_priv,Create_tmp_table_priv
Lock_tables_priv,Create_view_priv,Show_view_priv,Create_routine_priv
Alter_routine_priv,'Y',Event_priv,Trigger_priv
FROM mysql.user;
FLUSH PRIVILEGES;

注意我设置了:

  • Execute_priv 为“Y”
  • db 到 'mydb'

相关内容