Stored procedures MariaDB:执行存储过程,选择拒绝,通过角色授予特权

Stored procedures MariaDB:执行存储过程,选择拒绝,通过角色授予特权,stored-procedures,mariadb,role,Stored Procedures,Mariadb,Role,我创建了一个具有用户db\u所有者的存储过程(Definer=db\u所有者,SQL安全性Definer)。此过程从表中选择一些数据。db_所有者通过角色对其数据库的所有表具有完全选择权限。执行该过程效果良好,还可以从此表中进行选择。 另一个用户db_connect拥有该过程的执行权限,执行过程也可以正常工作,但我收到一个错误“error 1142(42000):SELECT command denied to userdb_owner'@'host'for table'xxx'” 如果我在不使

我创建了一个具有用户db\u所有者的存储过程(Definer=db\u所有者,SQL安全性Definer)。此过程从表中选择一些数据。db_所有者通过角色对其数据库的所有表具有完全选择权限。执行该过程效果良好,还可以从此表中进行选择。 另一个用户db_connect拥有该过程的执行权限,执行过程也可以正常工作,但我收到一个错误“error 1142(42000):SELECT command denied to userdb_owner'@'host'for table'xxx'”

如果我在不使用该角色的情况下向用户db_所有者授予特权(将db'xxx'上的select授予db_所有者@主机),则该权限有效。有谁有更好的主意吗?我想使用角色


MariaDB 10.3

一个选项可能是使用
角色本身作为存储过程的定义者:
定义者=
。您的解决方案运行良好,非常感谢!现在,该过程以角色的权限运行。