mysqldump:在 ~/.my.cnf 中指定每个用户的数据库名称

mysqldump:在 ~/.my.cnf 中指定每个用户的数据库名称

我正在运行一个有多个用户的共享服务器。每个用户在 MySQL 中都有自己的数据库和相关凭据。我创建了一个模板 systemd 计时器和服务(即。[电子邮件保护]&[电子邮件保护]) 跑步mysqldump每天备份每个用户的数据库。用户特定信息由mysqldump来自.my.cnf每个用户的主目录中的文件。

然后我可以为特定用户运行 systemd 计时器/服务(即。[电子邮件保护])来备份该用户的数据库。

但是,我找不到指定数据库名称的方法.my.cnf。我看过--数据库选项,但这只是一个标志,而不是指定数据库或数据库集的方法。

我可以想到几种不同的方法来解决这个问题:

  1. 创建用户特定的 systemd 计时器/服务——但这不能很好地扩展
  2. 将 .db-name 文件放入用户主目录并在调用 mysqldump 时读取它(类似于 mysqldump $(cat .db-name) > backup.sql)-但现在我需要一个额外的文件
  3. 与 #2 类似,但解析每个用户的wp-config.php(该数据库适用于 Wordpress)
  4. 确保数据库名称始终与用户名相同

这些都不像使用 MySQL 现有的.my.cnf选项文件。

有没有办法指定默认数据库名称.my.cnf

答案1

每个用户都有权访问他被授予访问权限的数据库,因此如果您指示mysqldump转储所有数据库:--all-databases,则只会备份此用户的数据库,当然还有他有权访问的所有常规数据库。通常只有information_schema。事实上,这并不会使转储大小变大 - 不会转储该架构中的任何信息 - 因为那里是动态信息。
因此,通过确保每个用户的权限 - 您可以通过转储“所有数据库”来备份这些用户的数据库,这是一个简单的解决方案。

相关内容