You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本中MySQL命令无结果输出,仅返回用法信息求助

问题原因与解决方案

你的问题出在MySQL客户端的-p参数使用格式上,这是个很容易踩的小坑!

当你用-p $dbpass的时候,MySQL会把-p后面的空格当成“需要交互式输入密码”的信号,而把$dbpass这个字符串当作要连接的数据库名称来处理。这时候你后面又加了$dbname作为参数,MySQL就会因为收到了多余的无法识别的参数,直接输出用法提示,根本不会执行你的SELECT语句。

修正方案有两种:

  1. 把-p和密码直接连写,不要加空格:
    修正后的脚本命令行如下:

    mysql -h $dbhost -u $dbuser -p$dbpass -H -e "SELECT NOW();" $dbname > /home/imperial/.scripts/test.txt
    

    注意这里是-p$dbpass,-p和密码之间没有空格,这样MySQL才会把紧跟在-p后面的内容识别为密码。

  2. 使用更清晰的--password参数(推荐):
    用完整参数名的方式可读性更强,不容易出错:

    mysql -h $dbhost -u $dbuser --password=$dbpass -H -e "SELECT NOW();" $dbname > /home/imperial/.scripts/test.txt
    

额外的安全建议:

脚本里明文写数据库密码是很不安全的做法,建议你把凭证存在~/.my.cnf配置文件里,权限设为600避免其他人读取:

[client]
host=localhost
user=user
password=pass
database=unicentaopos

然后你的脚本可以简化成:

#!/bin/bash
mysql -H -e "SELECT NOW();" > /home/imperial/.scripts/test.txt

这样既避免了参数格式错误,又提升了安全性。

内容的提问来源于stack exchange,提问作者Ryan Gillies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:02:30