将MySQL密码存储在bash脚本中

set*_*voy 4 mysql passwords bash

需要创建简单的mysql-backup脚本.

但是 - 如何在其中存储MySQL用户的加密传递?

我想避免在任何其他文件中以明文类型存储密码.

正如我在MySQL手册中找到的:

MySQL使用自己的算法加密存储在用户表中的密码

所以.没有办法获得hash并将其设置为变量?

我的意思是:

DBHASH="cGFzc3dvcmQ="
DBPASS=`echo $DBHASH | openssl enc -base64 -d`
Run Code Online (Sandbox Code Playgroud)

有没有正确的方法来解决它?谢谢你的提示.

bry*_*ryn 7

如果脚本包含一个明文密码,如果它包含进入MySQL的可重复例程(即自动解密),则无关紧要 - 攻击者也会这样做.如果您可以传递散列/解密密码并进行MySQL比较,那么它就是可重复的(无论如何散列都将起到密码的作用).

所以,简单的答案是:你不能这样做.你有一些选择......

  • 使用凭据设置正确的chmoded(600)〜/ .my.cnf.
  • 创建一个"受限制的"无密码备份帐户,只允许从localhost登录.
  • 在任何一种情况下,只允许来自localhost/backup host的备份登录.
  • 如果您使用的是Debian,您可以使用debian-sys-maint帐户(已经设置了my.cnf凭证)
  • 限制mysql帐户并在脚本纯文本中包含密码,但只允许给定的用户/ root读取脚本(如果你有root,你可以接管mysql).
  • 从外部文件中读取/'源'配置变量(用户名/密码)(正确的chmod - 600)...但是你基本上是在做my.cnf -thing.

请记住,"备份帐户"不需要写权限等...