mysql 用户角色管理

  • 用户管理
    • 普通用户
    • 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
          • 不建议,会有残留
      • 设置当前用户密码
        • 5.7
          • Set password = password('新密码')、
        • 8.0
          • Alter user user() inentified by 'new_password'
      • 手动设置密码立即过期
        • Alter user password EXPIRE
          • 设置完成后,可以正常登录,但不能进行查询
        • Default_pasword_lifetime
          • 系统变量建立全局密码过期策略
          • 默认值为0,表示禁用自动密码过期策略
          • 它允许的值是正整数N,表示允许的密码生存期,密码必须每隔N天进行修改
          • Set PERSIST
          • Mysqld

Default_pasword_lifetime = N

  • 密码重用策略
    • Password_history
      • 规定密码重用的数量
    • Password_reuse_interval
      • 规定密码重用的周期
  • 权限管理
    • 查看权限
      • 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

    允许定义用户登录时强制或者激活授权的角色

你可能感兴趣的:(1024程序员节,mysql,数据库)