问题一: 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
for85
- 支持不可见索引和降序索引, 支持直方图优化, 在 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 建立和删除索引的权限
- Admin(服务管理权限):
-
DML 权限(数据控制语句); 比较常见的权限
- select 查看
- insert 插入
- update 更新
- delete 删除
- execute 执行存储过程的权限
查看当前 mysql 支持的权限
show privileges;
- 如何为用户授权 ???
遵循最小权限原则
-
使用 grant 命令对用户授权, context 为 db.tb 表
grant select, insert, update, delete, on
db.tb
touser@ip
; -
收回权限
revote delete on
db.tb
fromuser@ip
- 如何定义一个 Mysql 的账户 ???
-
如何保证数据库账户安全 ???`
- 数据库用户管理流程规范
最小权限原则;
密码强度的策略;
密码过期原则; 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
- 数据库版本