mysql - 更改程序或函数失去权限
问题描述
我正在使用 DBForge 和 MariaDB10,正在发生的事情是我正在使用角色来控制对数据库的访问。
当我对过程或功能代码进行一些更改时,角色失去了我之前授予的权限,所以我需要再次授予访问权限。
这很糟糕,因为每次我更改代码时,用户都会失去访问权限,我需要再次授权。
任何人都可以帮助我或给我一些启示?
解决方案
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 开始)。而是单击“脚本更改”。生成的代码将包含权限的重新生成。
推荐阅读
- c++ - Vanilla Vulkan Compute Shader 未写入输出缓冲区
- sql - Oracle sql没有读取整个字符串
- node.js - 我可以通过 Node.js 使用服务帐户从 Google 驱动器下载图像的分步过程吗
- javascript - 当我在地图上拖动鼠标时,鼠标悬停事件就会触发
- linux - Fluent Bit 中连续重试之间的时间
- reactjs - 使用自定义分页操作在类组件上实现 Material-UI 表
- javascript - 使用ngFor的角度数组循环获取数组计数并显示值
- flutter - Flutter 中的终端显示错误“版本解决失败。发布失败”
- mysql - MYSQLQuery 获取特定用户的所有聊天消息?
- firebase - React Native 状态 console.log