首页 > 解决方案 > 更改程序或函数失去权限

问题描述

我正在使用 DBForge 和 MariaDB10,正在发生的事情是我正在使用角色来控制对数据库的访问。

当我对过程或功能代码进行一些更改时,角色失去了我之前授予的权限,所以我需要再次授予访问权限。

这很糟糕,因为每次我更改代码时,用户都会失去访问权限,我需要再次授权。

任何人都可以帮助我或给我一些启示?

标签: mysqldelphimariadbdbforge

解决方案


MySQL 和 MariaDB(直到最新版本 10.7+)都不支持更改存储过程或函数。这就是为什么必须删除并重新创建它们,从而导致完全失去对过程/函数的所有授予权限。

但是,MariaDB 10.1.3+ 支持CREATE OR REPLACE PROCEDURE ...保留所有授予权限的子句:

https://mariadb.com/kb/en/stored-routine-privileges/#dropping-stored-routines

一些商业 UI 供应商还支持自动重新创建权限。然而,dbForge for MySQL 有一个错误,即当您使用“应用更改”时,权限将丢失(从版本 9.0.791 开始)。而是单击“脚本更改”。生成的代码将包含权限的重新生成。


推荐阅读