mysql高级【6】:mysql用户、角色的管理(单用户多角色等)
讲了这么多可以发现很多的操作都是基于root(最高权限的用户)用户的,但是有的用户是新增的,不可能所有的人都有最高权限嘛,就好比一个公司,市场经理肯定没有审批项目经理的请假的权限吧,项目经理也没有删除公司人员信息的权限吧,等等,其实除了最高权限的管理员,很多的用户和角色都是只有操作使用到或者相关连的权限。这样可以保证系统的安全性。mysql数据库也是这样的,有的用户可能只有查看数据的权利,有的用户只有查看和修改数据的权利,并且能操作的数据库就一两个。首先先讲一下用户,我们一般安装的mysql,一直默认下来就是root用户,root就是mysql的最高权限用户了,这个root用户可以对任何的数据库、数据表、存储过程、触发器、索引等操作。
新建用户的格式:
create user 用户名[@host地址]@ identified by 密码;
新建角色的格式:
create role 角色名;
权限设置的格式:
[code]GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_or_role [, user_or_role] ... [WITH GRANT OPTION] GRANT PROXY ON user_or_role TO user_or_role [, user_or_role] ... [WITH GRANT OPTION] GRANT role [, role] ... TO user_or_role [, user_or_role] ... [WITH ADMIN OPTION] object_type: { TABLE | FUNCTION | PROCEDURE } priv_level: { * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name } user_or_role: { user | role } user: (see Section 6.2.4, “Specifying Account Names”) role: (see Section 6.2.5, “Specifying Role Names”)
案例:
我们再新建一个有root所具有的权限的用户rootone;
[code]create user 'rootone'@'localhost' identified by '123456'; GRANT ALL ON *.* TO 'roottwo'@'localhost' WITH GRANT OPTION;
新建了rootone并且把所用的权限都赋予了它,使用命令mysql -urootone -p 登录到该用户就可以mysql里面的数据都可以操作。
如果用户并且这些用户所拥有的权限都一样,那我们就不必一一去给每个用户赋予权限,我们可以新建一个角色,把权限赋予这个角色,然后把这个角色给这些用户,这样后期也方便管理,维护性提高了。
新建一个角色和两个用户
[code]create role 'roleone'@localhost ; create user 'user1' identified by '123456'; create user 'user2' identified by '123456';
在mysql数据库的user表里面就可以查看到刚才新增的角色和用户:
给roleone赋予所有数据库所有表的修改和查询
[code]grant select,update on *.* to roleone@localhost;
查看roleone角色的权限只有查询和修改。
把角色的权限赋给用户
查看user1的权限,user包含roleone角色的权限
但是有的用户还是多个角色,问题是mysql可以吗?答案是一定可以的
按照上面新建角色再新建一个角色roletwo,并且把对全部数据库的删除操作权限赋予roletwo角色,再把roletwo角色赋予user1,可以查看到,user1 有roleone,roletwo两个角色的权限,所以mysql是具备一个用户多角色的操作的。
撤销用户和角色的权限格式
[code]REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user_or_role [, user_or_role] ... REVOKE ALL [PRIVILEGES], GRANT OPTION FROM user_or_role [, user_or_role] ... REVOKE PROXY ON user_or_role FROM user_or_role [, user_or_role] ... REVOKE role [, role ] ... FROM user_or_role [, user_or_role ] ... user_or_role: { user | role } user: (see Section 6.2.4, “Specifying Account Names”) role: (see Section 6.2.5, “Specifying Role Names”.
把上面的用户user2和角色roletwo的权限撤销:
删除用户和角色:
drop user|role 名称
例如
可以发现不管是用户还是角色都可以使用drop user 和drop role都可以删除成功。我是在mysql8.0尝试的哦。这样的删除都会把依赖删除了,还有一种就是直接删除mysql.user表里面的用户数据,但是依赖是不会自动删除的。建议使用drop哦。
《………………………………………………菜鸟起飞中,请各位走过路过的多多指教……………………………………》
- MySQL 8.0用户和角色管理
- MySql用户角色管理及权限分配(使用MySQLMembershipProvider和MySqlRoleProvider)
- mysql 用户管理和权限设置(总是忘记,重新记录)
- mysql用户管理(开户、权限)
- mysql中的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP的区别及与用户管理的关系
- Maatkit--Mysql的高级管理工具mk-table-checksum
- MySql:局域网和权限用户管理
- Oracle用户、权限、角色管理
- 十三周二次课 2018.01.15 mysql用户管理、常用sql语句、mysql数据库备份恢复
- mysql用户管理总结
- 基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(十)【权限架构生产者(用户管理)】
- MySQL用户管理、常用sql语句、数据库备份
- Oracle用户及角色的权限管理[Oracle基础]
- linux下 mysql用户的管理
- mysql用户管理
- MySQL - 用户及权限管理
- mysql用户管理
- mysql用户管理
- mysql 用户管理
- MySQL - 用户及权限管理