Mysql

允許多個使用者更改 MySQL 中的函式

  • July 17, 2015

我想創建多個使用者並允許他們在同一個數據庫中更改過程、函式和触發器。必須有devel開發人員和admin管理員使用者,都可以更改開發人員數據庫,但管理員不是root,即他不能更改所有內容,只能更改一些數據庫。使用者admin具有以下權限:

GRANT ALL PRIVILEGES ON some_db_prefix%.* TO 'admin'@'%' WITH GRANT OPTION

除了觸發器和過程中的定義器之外,一切都很好。如果我將數據庫中的定義器設置為devel@'%',我不能將程序編輯為admin,但root使用者當然可以。如何允許修改觸發器、函式和程序給多個使用者?

**UPD:**我無法編輯程序,admin即使定義器是%`@`%.

UPD2: MySQL 版本: Server version: 5.6.23-ndb-7.4.5-cluster-gpl-log MySQL Cluster Community Server (GPL)

**UPD 3:(**移至新問題允許多個使用者查看程序和功能

**UPD 4:**手冊說,改變程序主體的唯一方法是刪除它並創建新的。所以,我可以做到,我的問題是不正確的,我不僅想使用不同的使用者更改函式/程序,還想查看函式/程序的主體(程式碼)。這就是我創建新問題的原因。

正如MySQL 的文件所說:

ALL 或 ALL PRIVILEGES 特權說明符是簡寫。它代表“在給定特權級別上可用的所有特權”(GRANT OPTION 除外)。例如,在全域或表級別授予 ALL 將授予所有全域權限或所有表級權限。

只需使用:

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

測試:

mysql> CREATE USER 'admin'@'%' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE USER 'devel1'@'%' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON test.* TO 'admin'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON test.* TO 'devel1'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'devel1'@'%';
+-------------------------------------------------------------------------------------------------------+
| Grants for devel1@%                                                                                   |
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'devel1'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'devel1'@'%'                                                      |
+-------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'admin'@'%';
+------------------------------------------------------------------------------------------------------+
| Grants for admin@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'admin'@'%'                                                      |
+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

引用自:https://dba.stackexchange.com/questions/107185