Mysql-用户管理和权限的问题

问题一: mysql 版本问题?

  • 发行版 - 从 5.7 到了 mysql 8.0

    • version 8.0 的新特性
    • 功能:
      • 所有的元数据使用 InnoDB 引擎存储, 没有 frm 文件来存储元数据

      • 系统表采用 InnoDb 存储并采用独立的表空间 mysql_idb

      • 支持定义资源管理组(目前仅支持 CPU 资源)新功能

      • 使用资源管理组

        • 定义资源组

          create resource group name type=user vcpu=0 thread_priority=10;

        • 查看

          select * from infomation_schema.resource_groups;

        • 查看进程信息; 获取进程 ID

          select * from threads limit 1; -- => 85

        • 为进程设置资源组

        set resource group name for 85

        • 支持不可见索引和降序索引, 支持直方图优化, 在 Oracle 上早就支持
        • 支持窗口函数
        • 支持在线修改全局的参数持久化
  • 用户安全

    • 默认使用 caching_sha2_password 认证插件
    • 原来的加密方式; 只要是使用的相同的密码;加密出来的就是一样的; 新的加密方式 => 即使是相同的密码加密出来的密文也是不一样的;
    • 新增支持定义角色(role); 不需要一直创建用户, 只需要定义一个角色, 然后将账户定义成这个角色就好了
    • 优化 InnoDB
      • InnoDB DDL 语句支持原子操作, 如果执行不成功就回滚, 要么全部执行成功, 不会执行一半就奔溃
      • 支持在线修改 UNDO 表空间
      • 新增管理视图用户监控 InnoDB 表状态
      • 新增 innoDB_deticated_server 配置项
  • 问题: 答案见上面
  • 使用什么版本; 是否要升级 mysql 版本, 如何进行升级 ?
  • 最新的 mysql 版本有什么; 特性是什么?

问题二: Mysql 用户管理类问题

  • 如何为用户授权 ???

    • 如何定义一个 Mysql 的账户 ???
      • user_name@可访问控制表 用户名是有长度限制的

      • user_name 设置

        • 有长度的限制
      • 可访问控制表

        • %: 表示可以从所有外部主机访问
        • 192.....%: 表示可以从 192... 网段访问
        • localhost: DB 服务器本地访问
      • 建立用户 \h create user 查看语法帮助

        create user user_name

    • mysql 常用的用户权限 ???

      • Admin(服务管理权限):
        • create user
        • grant option 为其他用户授权的权限
        • super 管理服务器的权限
      • DDL 权限
        • create 新建数据库
        • alter 修改表结构权限
        • drop 删除数据库和表的权限
        • index 建立和删除索引的权限
    • DML 权限(数据控制语句); 比较常见的权限

      • select 查看
      • insert 插入
      • update 更新
      • delete 删除
      • execute 执行存储过程的权限
    • 查看当前 mysql 支持的权限

    show privileges;

    • 如何为用户授权 ???
      • 遵循最小权限原则

      • 使用 grant 命令对用户授权, context 为 db.tb 表

        grant select, insert, update, delete, on db.tb to user@ip;

      • 收回权限

        revote delete on db.tb from user@ip

  • 如何保证数据库账户安全 ???`

    • 数据库用户管理流程规范
    • 最小权限原则;

    • 密码强度的策略;

    • 密码过期原则; 5.7 中设置密码过期, 8.0 中限制历史密码重用原则

    • create user test@'localhost' identified by '123456' password history 1; -- 设置新密码不能和之前的密码相同

    • select * from mysql.user;

    • alter user test@'localhost' password expire; -- 设置密码过期, 新连接的用户会受影响, 已经连接的不受影响

    • 违反密码重用, 必须更新密码

      > alter user user() identified by '123456'
    
  • 如何迁移数据库账号 ?

    • 数据库版本
      • 是: 备份数据库, 在目的实例恢复
      • 否: 导出授权语句, 在目的实例中执行
    • 导出用户建立及授权语句

    pt-show-grants u=user_name, p=password, h=localhost

你可能感兴趣的:(Mysql-用户管理和权限的问题)