mysql - 无法更改 mysql 中的例程

标签 mysql

问题:无法改变惯例。

我使用的是 mysql 5.1.47。我创建了一个名为“testuser”的用户和一个名为“abc1,abc2,abc3”的数据库。

一开始我尝试过

GRANT ALL ON *.* TO 'testuser'@'%';(also::> GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%';)

同花顺特权;

也尝试过这个

GRANT ALL ON *.* TO 'testuser'@'%' IDENTIFIED BY 'passwd';
FLUSH PRIVILEGES;

这工作正常,用户 testuser 能够创建、更改例程。

然后我撤销了所有权限,甚至删除了用户testuser并再次创建了testuser。然后我尝试了:

GRANT ALL ON abc1.* TO 'testuser'@'%';

也尝试过这个

GRANT ALL ON abc1.* TO 'testuser'@'%' IDENTIFIED BY 'passwd';
GRANT ALTER ROUTINE ON abc1.* TO 'testuser'@'%';
FLUSH PRIVILEGES;

通过使用上述方法(特别是 Db),我无法更改例程。我尝试了所有主机,例如 localhost、%、127.0.0.1、本地 ip。我尝试使用工作台更改例程,但它是空白的,没有任何错误。

但是 testuser 能够创建例程并能够编辑 testuser 创建的例程。但是由其他用户创建的其他例程无法由 testuser 编辑(两个例程都在同一个数据库中)。

但是当我授予对所有数据库的访问权限时:

GRANT ALL ON *.* TO 'testuser'@'%'; 
FLUSH PRIVILEGES;

然后 testuser 就可以编辑所有例程了。请帮我解决这个问题。

谢谢。 维贾伊

最佳答案

我遇到了类似的问题,我通过 SQL Workbench 为初级开发人员创建了一个新帐户,该帐户对特定模式具有以下权限:更改、更改例程、创建、创建例程、删除、执行、插入、选择、显示 View 、更新

我还从工作台执行了刷新权限,以确保应用最新的权限,但每次他都会右键单击存储过程并选择“发送到Sql编辑器”->过程调用什么也不会出现。我们尝试更改各种选项,但仍然无法让它显示出来。

他能够创建新过程,然后编辑这些过程,但除了调用其他用户编写的现有过程之外,无法编辑或执行任何操作。仅供引用,我要补充一点,他没有分配任何数据库管理角色。

经过一番摆弄和研究后,我想到了尝试在 mysql 模式上提供权限,因为该模式具有 proc 表中存储过程的定义。我首先授予所有权限,然后将其缩减为仅对此模式的“选择”权限,之后,开发人员能够右键单击过程并“发送到 Sql 编辑器”-> 过程调用以及改变程序。

我不能 100% 确定这是否完全解决了您的问题,但它确实解决了一些问题。

我还要补充一点,我们的安全策略是为用户有效地完成工作提供尽可能少的权限,因此减少提供的权限数量是需要仔细考虑的事情。

关于mysql - 无法更改 mysql 中的例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10123518/

相关文章:

mysql - 表有成对匹配的记录,只需选择和更新一条记录

php - 此 php 代码中是否存在任何漏洞/可能的优化以检测是否需要验证码?

php - 事件调度程序计算结果的 if 条件

php - 对 php 数组对象中的结果进行排序

php - MySQL 中的 NPV 计算

php - 在 PHP 中高效地缓存和分页大型 MySQL 结果集

mysql - dbWriteTable 删除 MySQL 中的主键和索引

mysql - 系统崩溃后 XAMPP MySQL 无法启动

php - 在 PHP 中如何将函数用作 IF 语句的参数?

mysql - 无法在 Mac 上使用 mysql 启动 Hive