繁体   English   中英

在无人参与的bash脚本中使用Mysql时保护密码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM