在bash脚本中执行mysql数据库的根操作的最佳做法是什么?
例如,我想创build新的数据库和授予权限,我必须使用:
mysql -u $ROOT -p"$ROOTPASS" -e "create database $DBNAME; GRANT ALL PRIVILEGES ON $DBNAME.* T $DBUSER@localhost IDENTIFIED BY $DBPASS";
但是这需要在脚本本身中存储root用户的mysql密码。 有没有更安全的方法?
我应该为此创build单独的用户吗? 如何设置权限?
单独的事情是如何testing操作是否成功,如果不成功,则恢复成功的更改(事务?)
像许多程序一样,MySQL(客户端)可以并且将从文件中读取证书,而不是依赖命令行选项或从STDIN读取证书。
推荐的方法是在~/.mylogin.cnf存储使用MySQLconfiguration编辑器encryption的凭证
mysql_config_editor对.mylogin.cnf文件进行encryption,使其不能被读取为明文,其内容仅在内存中使用。 通过这种方式,密码可以以非明文格式存储在文件中,以后可以不必在命令行或环境variables中公开。 mysql_config_editor提供了一个打印命令,使用户能够显示文件的内容,但即使在这种情况下,密码值也被屏蔽,从不以其他用户可以看到的方式显示。
检查手册的确切位置,但也可以设置一个文件~/.my.cnf ,它只能由用户读取,并在那里存储明文密码:
[client] # The following password will be sent to all standard MySQL clients password="my_password"
另请参阅有关密码安全性的手册部分