MySQL OCP888题解077-mysqldump做一致性备份所需权限

1、原题

1.1、原题

1.2、答案

D

2、题目解析

2.1、题干解析

本题考察mysqldump做一致性备份时所需的权限。

2.2、选项解析

  1. 用mysqldump导出一个数据库时,如果使用–single-transaction选项,则只需要该数据库的SELECT权限及全局的PROCESS权限,不需要该数据库的LOCK TABLES权限。所以选项D正确。

3、知识点

3.1、知识点1:PROCESS权限

  • PROCESS权限控制对服务器内执行的线程信息的访问(即关于会话正在执行的语句的信息)。拥有PROCESS权限可以使用SHOW PROCESSLIST语句、mysqladmin processlist命令、INFORMATION_SCHEMA.PROCESSLIST表和Performance Schema processlist表获得线程信息。
  • 通过PROCESS权限,用户可以访问所有线程的信息,甚至是属于其他用户的线程。
  • 如果没有PROCESS权限,非匿名用户可以访问自己的线程信息,但不能访问其他用户的线程,而匿名用户不能访问线程信息。

官方参考文档

3.2、知识点2:mysqldump所需权限

  • mysqldump对于转储的表至少需要SELECT权限。
  • 用mysqldump导出一个数据库时,如果不使用–single-transaction选项,则需要该数据库的SELECT和LOCK TABLES权限,及全局的PROCESS权限。
  • 用mysqldump导出一个数据库时,如果使用–single-transaction选项,则只需要该数据库的SELECT权限及全局的PROCESS权限,不需要该数据库的LOCK TABLES权限。
  • 对于转储的视图需要SHOW VIEW权限,对于转储的触发器需要TRIGGER权限。
  • 要重新加载一个转储文件,你必须有执行它所包含的语句所需的权限,例如对这些语句所创建的对象有适当的CREATE权限。

官方参考文档

4、实验

4.1、实验1

4.1.1、实验目的

验证mysqldump所需的权限。

4.1.2、实验前准备

已安装并运行的MySQL5.7。

4.1.3、实验步骤

  1. 会话1(root用户):假设已存在待导出的数据库test1。先创建导出用户dump1,对其授予test1数据的SELECT权限:
mysql> CREATE USER dump1 IDENTIFIED by 'dump1';
mysql> GRANT SELECT ON test1.* TO dump1;
  1. 会话2(dump1用户):启动一个新会话,用dump1用户导出test1库,先不使用–single-transaction选项,发现报错,缺少LOCK TABLES权限:
$ mysqldump -udump1 -p test1  > test1.sql
Enter password: 
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
mysqldump: Got error: 1044: Access denied for user 'dump1'@'%' to database 'test1' when using LOCK TABLES
  1. 会话1(root用户):对dump1授予LOCK TABLES权限:
mysql> GRANT LOCK TABLES ON test1.* TO dump1;
  1. 会话2(dump1用户):再次导出,发现提示缺少PROCESS权限:
[root@localhost ~]# mysqldump -udump1 -p test1  > test1.sql
Enter password: 
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
  1. 会话1(root用户):再授予dump1用户PROCESS权限,注意PROCESS是全局权限,不能只在某个数据库上授予:
mysql> GRANT PROCESS ON *.* TO dump1;
  1. 会话2(dump1用户):再次导出,发觉可以成功:
$ mysqldump -udump1 -p test1  > test1.sql
Enter password: 
$ ls
test1.sql
  1. 会话1(root用户):将dump1的PROCESS和LOCK TABLES权限都删除:
mysql> REVOKE PROCESS ON *.* FROM dump1;
mysql> REVOKE LOCK TABLES ON test1.* FROM dump1;
mysql> SHOW GRANTS FOR dump1;
+------------------------------------------+
| Grants for dump1@%                       |
+------------------------------------------+
| GRANT USAGE ON *.* TO 'dump1'@'%'        |
| GRANT SELECT ON `test1`.* TO 'dump1'@'%' |
  1. 会话2(dump1用户):使用single-transaction选项导出,发觉错误,提示缺少PROCESS权限:
$ mysqldump -udump1 -p --single-transaction  test1  > test1.sql
Enter password: 
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
  1. 会话1(root用户):再授予dump1用户PROCESS权限:
mysql> GRANT PROCESS ON *.* TO dump1;
  1. 会话2(dump1用户):这时发现使用single-transaction选项可以导出成功:
$ mysqldump -udump1 -p --single-transaction  test1  > test1.sql
Enter password: 

4.1.4、实验结论

  1. 用mysqldump导出一个数据库时,如果不使用–single-transaction选项,则需要该数据库的SELECT和LOCK TABLES权限,及全局的PROCESS权限。
  2. 用mysqldump导出一个数据库时,如果使用–single-transaction选项,则只需要该数据库的SELECT权限及全局的PROCESS权限,不需要该数据库的LOCK TABLES权限。

5、总结

  1. mysqldump导出表时至少需要SELECT权限。
  2. 用mysqldump导出一个数据库时,如果不使用–single-transaction选项,则需要该数据库的SELECT和LOCK TABLES权限,及全局的PROCESS权限。
  3. 用mysqldump导出一个数据库时,如果使用–single-transaction选项,则只需要该数据库的SELECT权限及全局的PROCESS权限,不需要该数据库的LOCK TABLES权限。
  4. 对于视图的导出需要SHOW VIEW权限,对于触发器的导出需要TRIGGER权限。
  5. 导入转储文件时,必须有执行它所包含的语句所需的权限,例如对这些语句所创建的对象有适当的CREATE权限。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 8 OCP (Oracle Certified Professional)1Z0-908是一套关于MySQL数据库的考试题库。MySQL是一种流行的开源关系型数据库管理系统。此考试题库旨在评估考生对MySQL数据库的知识、技能和能力。 MySQL 8 OCP 1Z0-908题库包含了多个主题,涵盖了MySQL数据库的各个方面。主要的考题包括: 1. MySQL 8的新功能和改进:考核考生对于MySQL8版本中新增的新功能和改进的理解和应用。 2. 数据库设计和建模:考核考生在设计和建模数据库时的能力,包括定义和优化表、索引、视图、存储过程和触发器等数据库对象。 3. 查询和数据操作:考核考生编写和优化SQL查询和数据操作的能力,包括基本查询、多表联接、子查询、聚合函数和事务处理等。 4. 数据库安全和性能优化:考核考生在数据库安全性和性能优化方面的知识和实践,包括用户和权限管理、备份和恢复、性能调优和查询优化等。 5. 数据库监控和维护:考核考生对于数据库监控和维护的能力,包括定期备份、日志分析、故障排除和性能调优等。 通过MySQL 8 OCP 1Z0-908的考试,考生可以证明自己在MySQL数据库管理方面的专业能力和水平。对于数据库管理员、开发人员和其他与数据库相关工作的人员来说,持有MySQL OCP认证可以提升职业竞争力,获得更好的工作机会。因此,掌握和熟悉MySQL 8 OCP 1Z0-908题库中的内容对于有意考取MySQL OCP认证的人来说是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值