所以我正在为自己设置一个 WordPress 备份指南/制定一个备份计划。
我想每天进行 MySQL 转储,但该命令需要
-p then user input
或者
--password="plain text password"
我可以将其传递给至少经过 MD5 或更好的散列和保护的文件以提高安全性,但使命令不需要用户输入吗?
任何帮助表示赞赏!
作为参考,这里是我要运行的命令
mysqldump -u [username] --password=~/wp_backups/sqldumps/.sqlpwd [database name] > ~/wp_backups/sqldumps/"$(date '+%F').sql"
答案1
您有以下密码选项:
-p
通过选项在命令行上提供密码MYSQL_PWD
通过环境变量提供密码- 将您的配置放在
~/.my.cnf
该[mysqldump]
部分下的文件中
在所有情况下,您的客户端都需要纯文本密码才能进行身份验证。您提到了哈希,但哈希的特点是它是一种单向转换函数(即您无法从哈希中恢复原始密码),因此它不能用作身份验证令牌。
由于据称您是从托管您的 Wordpress 的同一帐户备份 Wordpress 数据库,因此尝试向运行 Wordpress 的用户隐藏密码并没有安全改进(wp-config.php
无论如何都可以轻松地从文件中提取数据库凭据)。
因此,我建议定义以下内容~/.my.cnf
:
[mysqldump]
host = your_MySQL_server_name_or_IP
port = 3306
user = database_user_name
password = database_password
然后确保该文件具有0600权限。这种方式mysqldump
不需要在命令行上指定任何数据库凭据(它们将从文件中读取)~/.my.cnf
。
答案2
这将创建一个文件(可以是操作系统中的任何文件),该文件传递文件中的密码和用户名。即使它被“散列”,如果有人掌握了该文件也不会产生任何影响,他们可以按原样使用它。如果这对我有用,那么对他们也有用。
因此,为了回答我的问题的安全部分, chmod 0600 & sudo chown $USER:nogroup 将防止对创建后的文件进行未经授权的访问。
mkdir ~/wp_backups/sqldumps && touch ~/wp_backups/.sqlpwd && nano ~/wp_backups/.sqlpwd && chmod 600 ~/wp_backups/.sqlpwd && sudo chown $USER:nogroup ~/wp_backups/.sqlpwd
--.sqlpwd 内容
[mysqldump] # NEEDED FOR DUMP
user=username
password=password
[mysql] # NEEDED FOR RESTORE
user=username
password=password
--SQL CLI 语法
mysqldump --defaults-extra-file=~/wp_backups/.sqlpwd [database] > ~/wp_backups/sqldumps/"$(date '+%F').sql"
答案3
你可以看看mysqldump-安全它充当包装脚本mysqldump
,负责密码安全(通过 a defaults-extra-file
),并且还允许您通过非对称加密来加密您的 mysql 数据库。