当前位置: 首页 > 知识库问答 >
问题:

Bash脚本MySQL警告:在命令行界面上使用密码可能不安全

茅鸿宝
2023-03-14

嗨,我有一个脚本来划分一些mysql数据库。我们正在从5.5升级到5.6。在测试脚本时,我注意到,在新的5.6版本中,mysql返回警告:在命令行界面上使用密码可能不安全 修复此问题的最佳方法是什么?我读到一个变通方法是2

MYSQL_RESULT=`echo "SET sql_log_bin=0;SET @pdb='$DB',@ptable='$table';CALL maintenance(@pdb,@ptable);SET sql_log_bin=1;"|mysql -uUSER -pPASSWORD database`

共有2个答案

艾俊悟
2023-03-14

如果您使用的是MySQL/5.6.6或更高版本,则可以使用名为MySQL_config_editor的捆绑工具:

mysql\u config\u编辑器实用程序[…]使您能够将身份验证凭据存储在名为的加密登录路径文件中。迈洛金。cnf。文件位置是Windows上的%APPDATA%\MySQL目录,以及非Windows系统上当前用户的主目录。MySQL客户端程序稍后可以读取该文件,以获取连接到MySQL服务器的身份验证凭据。

使用该工具,您可以分配多个命名凭据(“登录路径”):

$ mysql_config_editor set --login-path=backup-user --host=localhost --user=backup --password
Enter password:
$ mysql_config_editor print --all
[backup-user]
user = backup
password = *****
host = localhost

... 支持该功能的客户端(如官方命令行客户端或mysqldump)可以在以后使用:

$ mysql --login-path=backup-user
Welcome to the MySQL monitor.  Commands end with ; or \g.

请注意,这并不是真正加密密码(位于.mylogin.cnf的凭据仅被模糊处理),它只是将它们从脚本中移开。

当然,拥有5.6.6是首先获得“警告:在命令行界面上使用密码可能不安全”的主要原因;-)

养枫涟
2023-03-14

解决这个问题的一种方法是在~/中设置适当的变量。我的cnf文件。类似的东西应该会有所帮助:

[mysql]                                                                                                                                                   
user=my_username                                                                                                                                          
password=my_password

这应该位于执行命令的用户的主目录中。不要忘记对文件设置正确的权限,以避免其他用户读取:chmod 600~/。我的cnf

 类似资料:
  • 我用cPanel创建了一个cronjob。 每隔一段时间,它会运行这个php文件来生成备份: 常量、和存储在文件中。 每次cron运行时,我都会收到以下警告消息: 警告:在命令行界面上使用密码可能不安全。 我以为在那里添加常量是安全的,所以我的问题是: 如何以安全的方式运行cron作业?

  • 问题内容: 当我尝试从Terminal在MySQL上运行以下命令时: 执行工作按预期方式进行,但始终会发出警告: 警告:在命令行界面上使用密码可能不安全。 但是,我必须使用存储我的密码的环境变量()进行上述声明,因为我想在Terminal中从bash脚本中迭代地运行命令,而且我绝对不喜欢等待提示出现的想法并迫使我在一个脚本中输入50或100次密码。所以这是我的问题: 抑制警告是否可行?该命令可以按

  • 问题内容: 对于那些想回复我应该使用SSH密钥的人,请弃权 我试图在bash脚本中使用Expect提供SSH密码。提供密码是可行的,但是我并没有像我应该的那样最终进入SSH会话,它将回溯到bash。 我的剧本: 我的脚本的输出: 我想拥有我的SSH会话,并且只有在退出该会话后才能返回我的bash脚本。我之所以使用bash,是因为我使用了可以选择要连接到的设备的菜单。 谢谢 问题答案: 混合bash

  • 问题内容: 每次我在Debian中使用命令行运行脚本时,都会得到脚本的结果,然后得到脚本的结果。 该脚本可以工作,但是屏幕上总是为每个空行打印一条语句。每个空白行都会导致找不到命令。 我正在从该文件夹运行脚本。 这是脚本: 我通过键入以下命令来运行它: 为什么会发生这种情况? 问题答案: 确保您的第一行是: 输入您的bash路径(如果不是) 尝试运行: 这样会将行尾等从Windows转换为Unix

  • 问题内容: PHP必须正确地转义任何可能引起问题的字符。为BASH模仿此功能的最佳方法是什么? 无论如何,有使用bash做准备好的mysql语句吗?这似乎是最好的方法。 我的大多数变量都不会(不应)具有特殊字符,但是我为用户提供了完全自由的密码密码。它可能包含’和’之类的字符。 我可能正在执行多个SQL语句,所以我想创建一个包含参数并随后运行该语句的脚本。这是我到目前为止的内容: doSQL.sh

  • 问题内容: 我有一个python脚本,该脚本在运行时会在终端上记录信息,我想将此记录信息发送到文本文件, 为了实现这一点,我正在插入文件 在文件末尾,我放入 问题是当它调用第一个命令时,它将终止脚本, 提前感谢我如何做这项工作的任何建议 问题答案: 问题在于,直到退出产生的外壳程序才返回,这时您的Python脚本将恢复。 执行所需操作的最简单方法是使用Python脚本作为参数来调用自身。代替 您将