如何从命令行使用MySQL密码不安全?


12

我有一些使用该mysql -e "{command}"功能的BASH工具。每次使用这些工具时都要输入密码,这很麻烦,因此,为了避免将密码和代码一起写入纯文本文件中,我将其存储在内存中(使用read -s),并在运行命令时让BASH对其进行读取。

Mysql仍然认为密码是通过命令行提交的(因为从某种意义上说是这样),并且仍然给我错误“在命令行界面上使用密码可能不安全”。

就我的目的而言,我不需要隐藏此消息。我需要知道的是,它是什么,可能使它不安全?该密码永远不会在物理上可见,因此无法进行同步浏览,甚至有人猜我的SSH密码也无法做到,因为它存储在内存中,而不是脚本本身。中间人攻击或类似的可能吗?


8
将其放在~/.my.cnf 示例中您可以通过执行以下操作来指定每个主机,[client<hostname>]例如,[clientlocalhost]MySQL工具会自动使用它,因此它更容易,更安全
AmazingDreams

bash运行命令时如何阅读?如果您这样做,mysql -p"$pass"那么任何人都可以在中看到它ps
Barmar

Answers:


26

可以看到您的环境变量(包括您运行的程序)的任何人都可以看到该密码。任何可以查看您的进程的人都可以看到用于运行它们的命令行,包括参数。

因此,对于仅由您登录的盒子,风险可能微不足道。但是,对于您个人而言,有针对性的攻击,这在事物的宏伟计划中是微不足道的攻击媒介。


22
以及查看您的人~/.history,等等
ivanivan '17

更不用说HTOP和类似的top-like实用程序,在将它们掩盖之前。许多脚本还基于用户是只读用户或缺少权限而没有使用环境变量$ PASS等。在单个用户上,这似乎无关紧要。
mckenzm

1
这个问题在哪里说关于环境变量?除非导出它们,否则Shell变量不会放入环境中。
Barmar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.