一.概述
1.多用户数据库
我们知道MySQL是一个多用户数据库,按用户种类分类的话可以分为:
ROOT用户:超级管理员,拥有所有权限
普通用户:被root用户创建的用户,它的权限被root授予
2.什么是用户管理?
简单来说,就是root用户管理普通用户的访问权限和信息以及管理root自身特性
3.什么是权限表?
说到如何管理用户的权限,我们必须要了解权限表:
MySQL服务器通过权限表来控制用户对它的访问,它存放于MySQL自带的名为mysql的数据库中,权限表有多个,分别有:user , db , host , table_priv , columns , procs_priv
1)user表
它的列可分为四类:
a.用户列:host字段(主机名),user字段(用户名),authentication_string(密码)字段,只有这三个字段都匹配时,才允许连接建立
b.权限列:它的字段决定了用户的权限,普通权限用于操作数据库,高级权限用于数据库管理。
c.安全列:其中有6个字段 两个 SSL相关的用于加密,两个X509相关的用于标识用户,两个授权插件用于验证用户身份
d.资源控制列:4个字段,
max_questions(用户每小时允许执行的查询操作次数),
max_updates(用户每小时允许的执行更新的次数),
max_connections(用户每小时允许的执行的连接操作次数),
max_user_connections(用户允许同时建立的连接次数)
2)db表和host表
db表中存储了用户对某个数据库的操作权限,决定用户能从那个主机存取那个数据库。
host表中存储了某个主机对某个数据库的操作权限,配合db权限表,对给定主机上数据库级操作权限做更细致的控制
注意:user表中的权限是针对所有数据库的,如果希望用户只对某个数据库有操作权限,那么需要将user表中对应的权限设置为N,然后再db表中设置对应权限
3)tables_priv表和columns_priv表
前者对表设置操作权限,后者对列设置操作权限
4)procs_priv表
对存储过程和存储函数设置操作权限
二.操作命令
1.创建普通用户
CREATE USER ben IDENTIFIED BY '1234';
2.重命名一个用户账号
RENAME USER ben TO yanjiadou;
3.删除用户账号
DROP USER yanjiadou;
4.查看用户的访问权限
SHOW GRANTS FOR ben;
输出结果显示用户ben有一个权限 USAGE ON . ,这个表示没有任何权限。
5.给用户设置相应的权限
GRANT SELECT|UPDATE|INSERT|DELETE ON database.* TO ben;
这表示ben用户可以在数据库study中进行查询操作
6.撤销权限
REVOKE SELECT|UPDATE|INSERT|DELETE ON database.* FROM ben;
7.更改口令
第一步
update user set authentication_string=’’ where user=‘ben’;
第二步
ALTER USER ‘ben’@’%’ IDENTIFIED WITH mysql_native_password BY ‘newpassword’;
第三步
flush privileges;
更详细的信息请查询相关文档。