暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL8.0版本的新特性及用户管理

零点小思随笔 2021-05-07
275

1、当前最新的 MySQL 版本有什么特性比较吸引你

1.1、服务器功能

  • 所有元数据使用 InnoDB 引擎存储,无 frm 文件
  • 系统表采用 InnoDB 存储并采用独立表空间
  • 支持定义资源管理组(目前仅支持 CPU 资源)
  • 支持不可见索引和降序索引,支持直方图优化
  • 支持窗口函数
  • 支持在线修改全局参数持久化

1.2、用户及安全

  • 默认使用 caching_sha2_password 认证插件
  • 新增支持定义角色(role)
  • 新增密码历史记录功能,限制重复使用密码

1.3、功能类别

  • InnoDB DDL 语句支持原子操作
  • 支持在线修改 UNDO 表空间
  • 新增管理视图用于监控 InnoDB 表状态
  • 新增 innodb_dedicated_server 配置项

2、MySQL 用户管理

2.1、如何在给定场景下为某用户授权?

1、 定义一个数据库账号

格式:用户名@可访问控制列表

- oscar@% :可以从所有外部主机访问
- oscar@192.168.1.% :可以从192.168.1.%网段访问
- oscar@localhost:DB服务器本地访问

复制

使用create user 命令建立用户。

# 获取帮助
mysql> \h create user

复制

2、 MySQL 常用的用户权限

Admin(数据库管理):

语句说明
create user建立新的用户权限
grant option为其他用户授权的权限
super管理服务器的权限

DDL(数据定义):

语句说明
create新建数据库,表的权限
alter修改表结构的权限
drop删除数据库和表的权限
index建立和删除索引的权限

DML(数据操作)

语句说明
select查询表中数据的权限
insert向表中插入数据的权限
update更新表中数据的权限
delete删除表中数据的权限
execute执行存储过程的权限

示例:

# 查询 MySQL 支持的权限列表
mysql> show privileges;
# 新建用户
create user test@'localhost' identified by 'Oscar@666' password history 1;
# 设置密码过期
 alter user test@'localhost' password expire;

复制

3、 为用户授权

一般遵循最小权限原则。

grant 命令对用户授权;revoke 命令收回用户权限。

mysql> grant select,insert,update,delete on db.tb to user@ip;
mysql> revoke delete on db.tb from user@ip;

复制

2.2、如何保证数据库账号的安全?

  • 数据库用户管理流出规范
    • 最小权限原则
    • 不要使用%授权
    • 不要让外网访问,如果需要,请使用 ssl 加密访问
  • 密码管理策略
    • 密码过期原则
    • 限制历史密码重用原则
password_option: {
    # 密码过期设置
    PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]
  | PASSWORD HISTORY {DEFAULT | N}
  | PASSWORD REUSE INTERVAL {DEFAULT | N DAY}
  | PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]
  | FAILED_LOGIN_ATTEMPTS N
  | PASSWORD_LOCK_TIME {N | UNBOUNDED}
}

复制

2.3、如何从一个实例迁移数据库账号到另一个实例?

解决思路:检查目的实例和源实例数据库是否一致

  • 一致:备份 MySQL 库,最后在目的实例恢复。
  • 不一致:导出授权语句,在目的实例执行 导出用户建立及授权语句
pt-show-grants u=test,p=Oscar@666,h=localhost;

复制


文章转载自零点小思随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论