是否有可能授予用户权限,以便他们可以执行服务器上的所有存储过程(甚至在该服务器上的单个数据库中)。 看看授予语法文档(5.5),它说,我必须grant execute on procedure <dbname>.<procname> to ....以每个存储过程。 有没有办法通过操纵mysql数据库本身来减less聚集?
grant execute on <dbname>.*
应该省略“程序”一词。
对于针对数据库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;
注意我设置了: