- 用户管理
- 普通用户
- root用户
- 登录mysql服务器
- Mysql -h hostname|hostip -P prot -u username -pdatabasename -e 语句
- 创建用户
- Create user 用户名 IDENTIFIED BY 密码
- 修改用户
- Update user set user = ‘用户名’ where user = ‘原名’
- 刷新数据库
- Flush privilege
- 删除用户
- Drop user ‘用户名’
- 默认host 为 %
- Delete
- 不建议,会有残留
- Drop user ‘用户名’
- 设置当前用户密码
- 5.7
- Set password = password('新密码')、
- 8.0
- Alter user user() inentified by 'new_password'
- 5.7
- 手动设置密码立即过期
- Alter user password EXPIRE
- 设置完成后,可以正常登录,但不能进行查询
- Default_pasword_lifetime
- 系统变量建立全局密码过期策略
- 默认值为0,表示禁用自动密码过期策略
- 它允许的值是正整数N,表示允许的密码生存期,密码必须每隔N天进行修改
- Set PERSIST
- Mysqld
- Alter user password EXPIRE
Default_pasword_lifetime = N
- 密码重用策略
- Password_history
- 规定密码重用的数量
- Password_reuse_interval
- 规定密码重用的周期
- Password_history
- 权限管理
- 查看权限
- Show Privileges
- 权限分布
-
权限分布
可能设置的权限
表权限
select、insert、update、delete、create、drop、grant、references、alter、index
列权限
selete、insert、update、references
过程权限
execute、alter routine、grant
-
- 原则
- 只授予满足需求的最小权限
- 创建用户时限制用户的登录主机、一般限制成指定IP或内网ip
- 为每个用户设置满足密码复杂度的密码
- 定期清理不需要的用户
- 授予权限
- 两种方式
- 角色赋予用户给用户授权
- 直接给用户授权
- 授权命令
- GRANT 权限1,权限2,权限n on 数据库名称.表名称 to 用户名@用户地址 [inebtified by '密码口令']
- Grant权限
- 添加参数
- With grant option
- 添加参数
- 横向分组、纵向分组
- 横向:数据库、表
- 纵向:select、update..等
- 两种方式
- 查看权限
- 查看当前用户权限
- Show grants
- Show grants for current_user
- 查看某用户的全局权限
- Show grants for 'user'@'主机地址'
- 查看当前用户权限
- 收回权限
- Revoke
- 在将用户账户从user表删除之前、应该收回相应用户的所有权限
- 收回权限命令
- Revoke 权限1,权限2 on 数据库名称.表名称 from 用户名@用户地址
- 需用户重新登录才能生效
- 查看权限
- 权限表
- MySQL通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中,mysql数据库会根据这些权限表的内容来赋予相对应的权限,这些权限表中最重要的是user表、db表、table表、colemn表、proc表,在mysql启动时,服务器会先将数据库表中的权限信息读入到内存中
- 访问控制
- user表 —> db表 —> tables表 —> columes表
- 角色管理
- 角色是权限的集合,可以为角色添加或移除角权限
- 引入角色的目的是方便管理具有相同权限的用户,恰当的设定,可以保证数据的安全性,这是至关重要的
- 创建角色
- Create role 名称@地址
- 给角色赋予权限
- Grant privileges on 表名 to 角色名@地址
- 删除角色
- Drop role 角色名
- 赋予角色
- Grant 角色名 to 用户名@地址
- 激活角色
- Set default role 角色名 to 用户名
- 撤销角色
- Revoke 角色名@地址 from 用户名@地址
- 设置角色默认激活状态
- Set global activate_all_oles_on_login = on
- 设置强制角色
- 强制角色是给每个创建账户的默认角色,不需要手动设置,强制角色无法被revoke或者drop
- 方式一:服务器启动前设置
[mysqld]
Mandatory_roles=role1,role2@地址
- 方式二;运行时设置
- 重启系统后仍然有效
- Set persist mandatory_roles = '角色1,角色2'
- 系统重启后失效
- Set global mandatory_roles = '角色1,角色2'
- 重启系统后仍然有效
-
语句
作用
Create role、drop role
创建和删除角色
grant、revole
给角色或用户分配权限
Show grants
显示账户、角色所拥有的权限和角色
Set defaule role
设置用户默认使用什么样的角色
Set role
改变当前会话的角色
Current_role()
显示当前会话的角色
Mandatory_roles\activate_roles_on_login
允许定义用户登录时强制或者激活授权的角色