export MYSQL_HOST="mydbserver"
export MYSQL_PWD="Xyzzy"
mysql ...other arguments...
型 我并不推荐使用环境变量作为密码,因为任何可以在你的客户端主机上运行ps的人都可以看到mysql客户端进程的环境变量。 关于环境变量的评论: 我接受现代 Linux 上的事实是only the owner of the process can see their environment使用ps或/proc/<pid>/environment。 但在BSD UNIX(包括MacOS)中,ps的工作方式不同,并且将为其他用户显示环境。 即使在Linux上,用户可能会无意中在ps中显示自己的环境,这一事实也足以成为避免使用环境变量获取敏感信息的理由。 不管是什么操作系统,使用环境变量作为密码的功能都不受欢迎。 https://dev.mysql.com/doc/refman/8.0/en/environment-variables.html说: 使用MYSQL_PWD来指定MySQL密码必须被认为是极不安全的,不应该使用。某些版本的ps包括一个显示运行进程的环境的选项。在某些系统上,如果您设置MYSQL_PWD,则您的密码将暴露给任何其他运行ps的用户。即使在没有这样的ps版本的系统上,假设没有其他方法可以让用户检查过程环境是不明智的。 MYSQL_PWD自MySQL 8.0起已弃用;预计在MySQL的未来版本中将其删除。
2条答案
按热度按时间e7arh2l61#
用户@smcjones提到使用.my.cnf文件或mysql_config_editor。这些都是很好的建议,我给予我的+1票给他。
另一种解决方案是将凭据放在您选择的任何文件中,然后在调用MySQL工具时指定该文件:
字符串
最后,为了完整起见,您可以使用环境变量作为某些选项,如主机和密码。但奇怪的是,不能使用用户。参见http://dev.mysql.com/doc/refman/5.7/en/environment-variables.html
型
我并不推荐使用环境变量作为密码,因为任何可以在你的客户端主机上运行
ps
的人都可以看到mysql客户端进程的环境变量。关于环境变量的评论:
我接受现代 Linux 上的事实是only the owner of the process can see their environment使用
ps
或/proc/<pid>/environment
。但在BSD UNIX(包括MacOS)中,
ps
的工作方式不同,并且将为其他用户显示环境。即使在Linux上,用户可能会无意中在
ps
中显示自己的环境,这一事实也足以成为避免使用环境变量获取敏感信息的理由。不管是什么操作系统,使用环境变量作为密码的功能都不受欢迎。
https://dev.mysql.com/doc/refman/8.0/en/environment-variables.html说:
使用
MYSQL_PWD
来指定MySQL密码必须被认为是极不安全的,不应该使用。某些版本的ps包括一个显示运行进程的环境的选项。在某些系统上,如果您设置MYSQL_PWD
,则您的密码将暴露给任何其他运行ps的用户。即使在没有这样的ps版本的系统上,假设没有其他方法可以让用户检查过程环境是不明智的。MYSQL_PWD
自MySQL 8.0起已弃用;预计在MySQL的未来版本中将其删除。fafcakar2#
在MySQL中有几种方法可以处理这个问题。
1.将密码放在运行脚本的用户的主目录中的隐藏
.my.cnf
中。[客户端]用户=用户密码=密码
1.使用
mysql_config_editor
mysql_config_editor set --login-path=client --host=localhost --user=localuser --password
当系统提示您输入密码时,请像平常一样输入密码。
1.我认为这是最糟糕的选择,但为了完整起见,我会添加它。
你总是可以为MySQL创建一个函数 Package 器来附加你设置的密码。
字符串