MySQL面试之用户管理类问题
整理了一下面试中对于 MySQL 部分,面试官会涉及的一些用户管理类问题
1. 常见问题归纳
- 如何在给定场景下为某用户授权
- 如何保证数据库账号的安全
- 如何从一个实例迁移数据库账号到另一个实例
2. 给定场景下为用户授权
考察内容:
- 如何定义 MySQL 数据库账号
- MySQL 常用的用户权限
- 如何为用户授权
2.1 如何定义 MySQL 账号
用户账号格式:用户名@可访问控制列表
可访问控制列表:
- %:代表可以从所有外部主机访问
- 192.168.1.%:表示可以从 192.168.1 网段访问
- localhost:DB:表示服务器本地访问
创建用户命令:
CREATE USER
2.2 MySQL常用的用户权限
1、Admin:
语句 | 说明 |
---|---|
Create User | 建立新的用户权限 |
Grant option | 为其他用户授权的权限 |
Super | 管理服务器的权限 |
2、DDL:
语句 | 说明 |
---|---|
Create | 新建数据库、表的权限 |
Alter | 修改表结构的权限 |
Drop | 删除数据库、表的权限 |
Index | 建立和删除索引的权限 |
3、DML:
语句 | 说明 |
---|---|
Select | 查询表中数据的权限 |
Insert | 向表中插入数据的权限 |
Update | 更新表中数据的权限 |
Delete | 删除表中数据的权限 |
Execute | 执行储存过程的权限 |
2.3 如何为用户授权
- 遵循最小权限原则
- 使用 Grant 命令对用户授权
grant select,insert,update,delete on db.tb to user@ip;
revoke delete on db.tb from user@ip;
3. 如何保证数据库账号的安全
考察内容:
- 数据库用户管理流程规范
- 密码管理策略
数据库用户管理流程规范
- 最小权限原则
- 密码强度策略
- 密码过期原则
- 限制历史密码重复使用原则
示例:
4. 如何迁移数据库账号
解决思路
- 查看数据库版本是否一致
- 若版本一致:
- 备份 mysql 数据库
- 在目的实例恢复
- 若版本不一致:
- 导出授权语句
- 在目地实例运行
导出用户建立及授权语句:
pt-show-grants u=root,p=123456,h=localhost
CREATE USER IF NOT EXISTS 'dba_test'@'10.102.13.%';
ALTER USER 'dba_test'@'10.102.13%' IDENTIFIED WITH
'mysql_native_password' AS
'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
GRANT USAGE ON *.* TO 'dba_test'@'10.102.13.%';
时间:2019.6.26 20:00