非所有者用户无法通过Workbench界面编辑或执行商店程序

问题描述 投票:0回答:1

我们的数据库中有几个存储过程,它们是使用 root 用户作为定义者创建的。目前,所有用户都可以使用CALL方法成功调用并执行这些存储过程。然而,非 root 用户在尝试通过 Workbench 或 Navicat 等图形界面访问这些过程时会遇到问题。

具体来说,非 root 用户无法通过 Workbench 或 Navicat 界面与程序进行交互。尽管向我们的用户授予了例程所需的所有必要权限,但他们在通过这些图形工具处理过程时仍然面临限制。用户可以毫无问题地对表和视图执行各种操作,但在尝试使用过程时会遇到限制。

我们还尝试过使用不同的非root用户创建测试程序,在这些情况下,只有root用户和创建程序的用户可以通过Workbench界面访问和操作程序。

如果有人可以提供帮助,请告诉我。非常感谢!

mysql mysql-workbench google-cloud-sql
1个回答
0
投票

创建

PROCEDURE
时,包含
SQL SECURITY
子句。您似乎拥有
SQL SECURITY DEFINER
并以“root”身份进行创建。需谨慎;这很危险,因为过程中的错误可能会导致严重损坏。

请提供

SHOW CREATE PROCETURE ...

还有调用者的

GRANT
EXECUTE
特权。否则用户无法
CALL
过程。

请提供

SHOW GRANTS FOR ...
示例:

SHOW GRANTS FOR forest@localhost;
+------------------------------------------------------------+
| Grants for forest@localhost                                |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO `forest`@`localhost`                 |
| GRANT ALL PRIVILEGES ON `forest`.* TO `forest`@`localhost` |
+------------------------------------------------------------+
© www.soinside.com 2019 - 2024. All rights reserved.