Mysql
允許多個使用者更改 MySQL 中的函式
我想創建多個使用者並允許他們在同一個數據庫中更改過程、函式和触發器。必須有
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)