【面试】MySQL面试之用户管理类问题

MySQL面试之用户管理类问题

整理了一下面试中对于 MySQL 部分,面试官会涉及的一些用户管理类问题

1. 常见问题归纳

  • 如何在给定场景下为某用户授权
  • 如何保证数据库账号的安全
  • 如何从一个实例迁移数据库账号到另一个实例

2. 给定场景下为用户授权

考察内容:

  1. 如何定义 MySQL 数据库账号
  2. MySQL 常用的用户权限
  3. 如何为用户授权

2.1 如何定义 MySQL 账号

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

  1. %:代表可以从所有外部主机访问
  2. 192.168.1.%:表示可以从 192.168.1 网段访问
  3. 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. 如何迁移数据库账号

解决思路

  1. 查看数据库版本是否一致
  2. 若版本一致:
  3. 备份 mysql 数据库
  4. 在目的实例恢复
  5. 若版本不一致:
  6. 导出授权语句
  7. 在目地实例运行

导出用户建立及授权语句:

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

你可能感兴趣的:(数据库)