在 bash 脚本中执行 root mysql 操作

在 bash 脚本中执行 root mysql 操作

在 bash 脚本中对 mysql 数据库执行 root 操作的良好做法是什么?

例如,我想创建新的数据库并授予权限,我必须使用:

mysql -u $ROOT -p"$ROOTPASS" -e "create database $DBNAME; GRANT ALL PRIVILEGES ON $DBNAME.* T $DBUSER@localhost IDENTIFIED BY $DBPASS";

但这需要在脚本本身中存储 root 用户的 mysql 密码。有没有更安全的方法?
我应该为此创建单独的用户吗?如何设置权限?

单独的事情是如何测试操作是否成功,如果不成功,则恢复成功的更改(交易?)

答案1

与许多程序一样,MySQL(客户端)可以并且将从文件读取凭证,而不是依赖命令行选项或从 STDIN 读取凭证。

推荐的方法是使用以下加密方式存储您的凭证:MySQL 配置编辑器~/.mylogin.cnf

mysql_config_editor 加密 .mylogin.cnf 文件,使其无法以明文形式读取,并且其内容在客户端程序解密后仅用于内存中。这样,密码可以以非明文格式存储在文件中,以后使用时无需在命令行或环境变量中公开。mysql_config_editor 提供了一个打印命令,使用户能够显示文件内容,但即使在这种情况下,密码值也会被屏蔽,以便永远不会以其他用户可以看到的方式显示。

检查手动的以获取确切的位置,但您也可以设置一个~/.my.cnf只有您的用户可读的文件,并将您的明文密码存储在那里:

 [client]
 # The following password will be sent to all standard MySQL clients
 password="my_password"

另外请参阅手册部分密码安全

相关内容