[英]Protect the password when using Mysql in an unattended bash-script
我正在编写一个使用mysql的bash脚本(用于cron作业):
mysql -uusername -ppassword -e 'something;'
我正在寻找一种方法来保持密码在脚本中的使用方便,但是这种方式也可以保证这些信息对该系统上的其他用户不安全。 可以使用ps -ef的用户和可能阅读文本文件的用户......
那么如何保护将在Linux上的自动脚本中使用的密码?
将所有设置放在选项文件中。 您可以使用默认的~/.my.cnf
文件,也可以使用--defaults-file==filename
指定备用文件。 请参阅文档4.2.3.4。 影响选项文件处理的命令行选项
选项文件包含mysql命令的默认设置。 例如,您可以在其中加入以下内容。
[mysql]
user=username
password=password
database=yourdb
使选项文件仅由您可读,因此其他用户无法看到您的密码。
这是MySQL 5.6.6+用户的更新答案
如4.6.6 mysql_config_editor - MySQL配置实用程序中所述 ,现在有一种更安全的方式来存储mySQL密码,它不会在本地配置文件中存储明文密码。
mysql_config_editor实用程序(从MySQL 5.6.6开始提供)使您可以将身份验证凭据存储在名为.mylogin.cnf的加密登录路径文件中。 文件位置是Windows上的%APPDATA%\\ MySQL目录和非Windows系统上的当前用户的主目录。 MySQL客户端程序稍后可以读取该文件以获取用于连接到MySQL服务器的身份验证凭据。
可以通过运行以下命令来创建此文件:
mysql_config_editor set --login-path=client --host=localhost --user=root --password
您可以使用以下命令打印现有设置:
mysql_config_editor print --login-path=client
这将输出当前设置:
[client]
user = root
password = *****
host = localhost
请注意,密码默认是加密的。
在运行cron作业的用户的主目录中创建一个文件~/.my.cnf
。 确保其他用户无法读取( chmod 600 ~/.my.cnf
)
[client]
user=username
password=something
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.