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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.A simple master-to-slave replication is currently being...
    Kevin关大大阅读 11,248评论 0 3
  • 1,MySQL权限体系 mysql 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有...
    不排版阅读 4,487评论 0 4
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 9,467评论 0 19
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 7,282评论 1 8
  • 一. MySQL密码的恢复方法之一 如果忘记了MySQL的root密码,可以用以下方法重新设置: 1. KILL掉...
    不排版阅读 3,502评论 0 1