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

MySQL 5.6命令行直接带密码连接失败,手动输入可正常连接求助

解决MySQL命令行带密码连接失败的问题

我来帮你搞定这个问题,你遇到的情况其实很常见,咱们一步步拆解原因和解决方案:

问题根源

你输入的密码Admin@1234里包含了特殊字符@,Bash会把@后面的内容当成主机地址来解析,导致实际传递给MySQL的密码只有Admin,自然就会触发Access denied的错误。而手动输入密码时,Shell不会解析这些特殊字符,所以密码能完整传递,连接就成功了。

可行解决方案

方案1:用单引号包裹密码(快速临时解决)

把密码用单引号括起来,让Shell不解析里面的特殊字符。注意-p和单引号之间不要加空格,否则MySQL会把单引号当成密码的一部分:

mysql -u root -p'Admin@1234'

方案2:使用配置文件(推荐,安全又方便)

把登录信息存在用户专属的配置文件里,既避免命令行密码的安全风险,又不用每次输入密码:

  1. 在你的用户主目录下创建/编辑.my.cnf文件:
    vi ~/.my.cnf
    
  2. 写入以下配置内容:
    [client]
    user=root
    password=Admin@1234
    host=localhost
    
  3. 修改文件权限,防止其他用户读取(非常重要):
    chmod 600 ~/.my.cnf
    

之后直接输入mysql就能自动连接,还能消除命令行密码的安全警告。

方案3:通过环境变量传递(不推荐)

可以用MYSQL_PWD环境变量传递密码,但这个方法不够安全,因为环境变量可能被其他进程读取到:

MYSQL_PWD='Admin@1234' mysql -u root

另外提一句,那个Using a password on the command line interface can be insecure的警告,是因为命令行输入的密码会出现在进程列表(比如ps命令)里,所以方案2是最稳妥的选择。

内容的提问来源于stack exchange,提问作者Parag Deshmukh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:30:23