DEFINER 通常指创建存储过程的用户,这只能是一个用户。
如果 Mary 想要查看 Bob 的存储过程,她可以调用:
SHOW CREATE PROCEDURE proc_name
要查看该过程的代码。她也可以调用以下方法来查看代码:
SELECT ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE SPECIFIC_NAME='proc_name'
以下是“如何使Mary能够通过MySQL-Workbench访问存储过程视图”的翻译:
以下是如何使Mary能够通过MySQL-Workbench访问存储过程视图的方法:
默认情况下,Mary无法向SQL-Editor发送创建语句。但这只是一个权限问题。Mary只需要在mysql.proc
表中具有基本的SELECT
权限即可。为此,可以通过命令行或直接在Workbench中运行以下SQL语句:
GRANT SELECT ON mysql.proc TO 'mary'@'%'
此命令允许Mary从所有主机访问Create-Statement。如果您想将其限制为特定主机,则可以执行以下操作:
GRANT SELECT ON mysql.proc TO 'mary'@'192.168.2.1'
如果Mary有SELECT权限,她应该可以在执行“Send to SQL Editor -> CREATE statement”之后看到存储过程。
注意:为了运行GRANT命令,您需要以具有授予权限的用户身份登录(例如root用户)。
编辑:有一种“快速且简单”的方法可实现此目标,适用于大量用户而无需为每个用户编写新的命令以授予权限:(确保使用具有通过Workbench插入行的权限的用户执行此操作)
1. 在Workbench中打开一个新的SQL选项卡
2. 输入“SELECT * FROM mysql.tables_priv;”并运行它
3. 在结果网格上方应该有一个小按钮,允许您从csv文件导入数据。
4. 创建一个类似于以下内容的CSV文件:
%,mysql,jane,proc,root@localhost,"2016-02-19 22:51:47",Select,
%,mysql,max,proc,root@localhost,"2016-02-19 22:51:47",Select,
%,mysql,steve,proc,root@localhost,"2016-02-19 22:51:47",Select,
%,mysql,greg,proc,root@localhost,"2016-02-19 22:51:47",Select,
%,mysql,jamie,proc,root@localhost,"2016-02-19 22:51:47",Select,
...更多用户
jane、max、steve等是您的用户。 其他列保持不变。
5. 导入您的csv文件
6. 在SQL窗口中运行“FLUSH PRIVILEGES”(重新加载特权表中的特权)
7. 完成! 您的所有用户现在都可以访问存储过程。
GRANT SELECT ON mysql.proc TO 'user'@'%'
。现在我可以从mysql workbench客户端打开/读取SP了。 - Sohel Pathan