目录
用户和权限介绍
密码策略
修改密码策略
用户权限管理
赋予权限
收回权限
用户和权限介绍
所有用户的信息都保存在mysql.user 数据表中 可使用desc 查看数据表结构
user 常用字段
部分字段解析
完整的账户 | 包含host和user,都是char型 都没有默认值 |
---|---|
host char(255) | 代表允许访问的客户端ip地址或主机地址,如果为 *表示都可以访问 |
user char(32) | 代表用户的名称 |
关于权限的参数以_priv结尾的字段 | 权限都是enum("N","Y")型并且默认值都是N |
---|---|
Select_priv | select权限 |
Insert_priv | insert插入权限 |
Updata_priv | updata更新权限 |
Delete_priv | delete删除权限 |
Create_priv | create创建权限 |
Drop_priv | drop删除权限 |
Reload_priv | reload重新加载权限 |
Shutdown_priv | shutdown关闭服务器权限 |
Process_priv | process进程管理权限 |
file_priv | file文件权限 |
Grant_priv | grant授权管理权限 |
安全身份认证传输协议 | 字段简单介绍 |
---|---|
ssl_type | 代表传输类型 ,数据类型enum("","any","x509","specified") 分别代表空,任意类型,x509证书,specified 无默认值 |
以下数据类型都是blob 二进制 无默认值 | 字段简单介绍 |
ssl_cipher | 保存安全加密连接的特定密码 |
x509_issuer | 保存x509证书 |
x509_subject | 保存x509证书 |
以max_开头的字段 类型都是 int(11) unsigned 默认值都是 0 | 字段简单介绍 |
max_questions | 每小时的最大查询数 |
max_updates | 每小时时的最大更新数 |
max_connections | 每小时时的最大建立连接数 |
max_user_connections | 同时的用户的最大连接数 |
关于密码的字段 | 字段简单介绍 |
---|---|
plugin | 加密密码插件, 类型:char(64) 默认值:mysql_native_password |
authentication_string | 查看上面的, 类型:text 默认值:NULL |
password_expired | 密码是否到期, 类型:enum('N','Y') 默认值: N |
password_last_changed | 密码最后一次修改的时间, 类型:TIMESTAMP 默认值:NULL |
password_lifetime | 密码存活周期 ,类型:smallint(5) unsigned 默认值:NULL |
account_locked | 用户锁定, 类型:enum('N','Y') 默认值:N |
注意:mysql 中不包含password 字段 用plugin和authentication_string默认加密插件作为代替
密码策略
查看数据库当前密码策略
SHOW VARIABLES like "%password%";
查看密码插件
SHOW VARIABLES LIKE 'validate_password%';
可见现在对于密码的要求:
1.至少8位
2.至少一个大写字母
3.至少一个数字
4.密码策略等级中
5.至少一个特殊字符
修改密码策略
可以临时修改密码策略 重启后不生效
set global validate_password_policy=0;
即使修改了密码策略,密码策略在某些程度还是有保留,比如密码长度至少为4
即使修改到1,2,3还是会保留4
用户权限管理
语法格式:
grant 权限列表 on 库名.表名 to 用户名@'客户端主机'
[identified by '密码' with option参数];
赋予权限
grant select on testdb.* to common_user@'%'
grant insert on testdb.* to common_user@'%'
grant update on testdb.* to common_user@'%'
grant delete on testdb.* to common_user@'%'
grant select, insert, update, delete on testdb.* to common_user@'%'
grant create on testdb.* to developer@'192.168.0.%';
grant alter on testdb.* to developer@'192.168.0.%';
grant drop on testdb.* to developer@'192.168.0.%';
grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库
show grants; -- 查看当前用户(自己)权限
show grants for dba@localhost;
grant all on *.* to dba@localhost;
收回权限
# revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可
revoke all on *.* from dba@localhost;