首页 > 解决方案 > MySQL 角色在 Delphi 应用程序中不起作用

问题描述

我将 MariaDB10 与 DBForge 一起使用并创建了一个 Delphi 项目,我创建了一个角色来管理权限,但效果不佳。

1 - 在 DbForge 面板上创建一个具有过程权限的角色myprocedure

2 - 使用代码在我的 Delphi 项目中添加 Tmyqueryset default role myrole

3 - 添加一个afterConnect调用创建的查询的过程

4 - 设置disconnectedMode = trueMyConnection 选项

有时这个过程有效,但大多数时候我收到一个错误:Acess denied to user XX for routine myprocedure

这发生在我尝试控制权限的例程、函数和表中

除此之外,每次我授予角色权限并在编辑程序后,该角色都会失去我之前授予的权限

Obs:角色在 DbForge 面板上正常工作只是当我试图把它放在 Delphi 上时

标签: mysqldelphirolesdbforgemydac

解决方案


如果用户还没有访问该角色的权限,那么他们正在运行set default role myrole并不会将其授予他们。

SET DEFAULT ROLE 需要以下权限:

为另一个用户设置默认角色需要全局 CREATE USER 权限,或者 mysql.default_roles 系统表的 UPDATE 权限。

为自己设置默认角色不需要特殊权限,只要您希望作为默认角色的角色已授予您。


推荐阅读