本篇文章為大家帶來了關於mysql的相關知識,其中主要介紹了關於資料庫角色的相關內容,可以透過角色來實現給使用者授予權限,方便管理擁有相同權限的用戶,下面一起來看一下,希望對大家有幫助。
推薦學習:mysql影片教學
#mysql資料庫的權限的管理,單純的給某一個使用者直接加權限。這樣做有個比較麻煩的地方,就是我們的用戶比較多的時候如果這些用戶的權限還都是一樣的那麼操作起來未免顯得有些冗餘。那我們可以透過角色來實現給使用者授予權限。
# 引入角色的目的是方便管理擁有相同權限的使用者 。 適當的權限設定,可以確保資料的安全性,這是至關重要的
#建立角色
建立角色使用CREATE ROLE 語句,語法如下:
CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...
CREATE ROLE 'manager'@'localhost';
效果如下圖
#給角色賦予權限
GRANT privileges ON table_name TO 'role_name'[@'host_name'];
# 範例:為manager角色授予查看dbtest1資料庫下所有表的權限
##查看角色的權限
#
回收角色的權限
###角色授權後,可以對角色的權限進行維護,並對權限進行新增或撤銷。新增權限使用GRANT語句,與角色 授權相同。撤銷角色或角色權限使用REVOKE語句。 ### #########修改了角色的權限,會影響擁有該角色的帳號的權限。 ### #########撤銷角色權限的SQL語法如下### ###
REVOKE privileges ON tablename FROM 'rolename';
DROP ROLE role [,role2]...
角色创建并授权后,要赋给用户并处于 激活状态 才能发挥作用。给用户添加角色可使用GRANT语句,语 法形式如下:
GRANT role [,role2,...] TO user [,user2,...];
在上述语句中,role代表角色,user代表用户。可将多个角色同时赋予多个用户,用逗号隔开即可。
例子:创建一个用户叫wang5 然后赋予角色manager,操作如下
用wang5登录并操作
赋予wang5角色manager 注意这个是通过root用户实现的
然后通过wang5登录查看数据库
此时还是看不到dbtest1,这是怎么回事呢?原来我们需要激活角色
方式1:使用set default role 命令激活角色
SET DEFAULT ROLE ALL TO 'kangshifu'@'localhost';
现在激活manager角色
然后再通过wang5用户登录查看
激活方式2:将activate_all_roles_on_login设置为ON
默认情况:
设置 SET GLOBAL activate_all_roles_on_login=ON;
这条 SQL 语句的意思是,对 所有角色永久激活 。运行这条语句之后,用户才真正拥有了赋予角色的所有 权限。
那么现在wang5已经被赋予manager角色,我们知道manager角色只是有select的权限。我们做如下操作
REVOKE role FROM user;
比如撤销 wang5的manager角色,通过root用户
再通过wang5登录看效果
推荐学习:mysql视频教程
以上是mysql資料庫角色的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!