
mysql中独立的用户bak,只做备份,需要什么权限?
5.7 和8.0

MySQL 5.7
在MySQL 5.7中,为备份用户授予的权限主要取决于你希望备份的内容和范围。
1、全局权限:
SELECT:此权限允许用户从任何数据库和任何表中读取数据。
SHOW VIEW:此权限允许用户查看视图定义。
如果需要备份存储过程、触发器等对象,则可能还需要SHOW PROCEDURE STATUS、SHOW TRIGGERS等权限。
2、数据库级别权限:
如果你要备份特定的数据库,可以为该用户授予该数据库的SELECT权限。
3、对象级别权限:
通常情况下,全局的SELECT权限应该足够了,但如果你只想为特定的表或列授予权限,那么可以为该用户授予相应的SELECT权限。
4、其他考虑:
你可能还需要确保backup_user用户具有访问mysql系统数据库的权限,以便能够查询如information_schema等数据库中的元数据。
MySQL 8.0
在MySQL 8.0中,权限管理的方式与5.7相似,但可能有一些细微的差别。
1、全局权限:
同样需要SELECT和SHOW VIEW权限。
如果需要备份存储过程、触发器等对象,则还需要相应的权限。
2、数据库级别和对象级别权限:
与MySQL 5.7相同,你可以为backup_user授予特定数据库或表的SELECT权限。
3、其他考虑:
在MySQL 8.0中,你可能还需要注意密码验证插件和密码策略的设置,确保backup_user的密码符合你的安全要求。
创建备份用户并授予权限的示例命令:
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT SELECT, SHOW VIEW ON *.* TO 'backup_user'@'localhost'; -- 如果需要备份存储过程,可以添加 EXECUTE 权限 -- GRANT EXECUTE ON your_database.PROCEDURE your_procedure TO 'backup_user'@'localhost'; FLUSH PRIVILEGES;
复制


在MySQL 5.7和8.0版本中,如果您想创建一个专门用于备份的独立用户(假设用户名为bak),这个用户至少需要以下权限:
SELECT权限:允许用户查询数据库中的数据,这是进行备份的基础。
LOCK TABLES权限:在备份过程中,锁定表可以确保数据的一致性。
PROCESS权限:允许用户查看当前的进程列表,这对于监控备份过程可能有用。
如果您使用的是逻辑备份工具(如mysqldump),还可能需要RELOAD权限,以便在备份时刷新特权表。
请注意,具体需要的权限可能取决于您使用的备份工具和备份策略。如果您计划使用物理备份工具(如XtraBackup),可能不需要SELECT和RELOAD权限。
以下是授予这些权限的示例SQL命令:
CREATE USER 'bak'@'localhost' IDENTIFIED BY 'your_password_here'; GRANT SELECT, LOCK TABLES, PROCESS ON *.* TO 'bak'@'localhost'; FLUSH PRIVILEGES;
请将your_password_here替换为您为bak用户选择的密码,并根据您的实际情况调整主机部分(这里是localhost)。最后,运行FLUSH PRIVILEGES;命令以使权限更改生效。
在实施之前,请确保您已经充分理解每个权限的含义,并根据您的具体需求和安全政策来决定是否授予这些权限。


官网有备份权限的描述的:
mysqldump requires at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, LOCK TABLES if the --single-transaction option is not used, PROCESS (as of MySQL 8.0.21) if the --no-tablespaces option is not used, and (as of MySQL 8.0.32) the RELOAD or FLUSH_TABLES privilege with --single-transaction if both gtid_mode=ON and gtid_purged=ON|AUTO. Certain options might require other privileges as noted in the option descriptions.
To reload a dump file, you must have the privileges required to execute the statements that it contains, such as the appropriate CREATE privileges for objects created by those statements.
mysqldump output can include ALTER DATABASE statements that change the database collation. These may be used when dumping stored programs to preserve their character encodings. To reload a dump file containing such statements, the ALTER privilege for the affected database is required.
SELECT
权限导出表SHOW VIEW
权限导出视图TRIGGER
权限导出触发器- 如果没加
--single-transaction
的话, 还要LOCK TABLES
权限 - 如果没有使用
--no-tablespaces
选项的话, 还要PROCESS
权限(8.0.21开始) - 如果数据库开启了gtid, 且导出没加
--set-gtid-purged=off
, 且导出时有--single-transaction
则要求RELOAD
或者FLUSH_TABLES
权限(8.0.32开始)


