MySQL:--password命令行选项失效但-p交互式输入可成功连接
问题原因及解决方法
你的问题核心是命令语法错误,并非隐藏安全设置阻止命令行输入密码。
错误原因
你使用的命令参数-password='password'格式错误:
- MySQL的密码选项分两种写法:
- 短选项
-p:若要直接指定密码,要么-p后直接跟密码(无空格),比如-ppassword;要么-p后加空格和密码,比如-p 'password' - 长选项:必须用双横线开头,比如
--password='password'或者--password 'password'
- 短选项
你用了单横线的-password,MySQL会把它解析成多个短选项的组合(-p、-a、-s等),导致实际传递的密码完全不符合预期,因此触发Access denied错误。
正确命令示例
试试这两个有效格式:
# 短选项直接指定密码 mysql -h localhost -P 3306 --protocol=tcp -u root -ppassword # 长选项指定密码 mysql -h localhost -P 3306 --protocol=tcp -u root --password='password'
补充说明
错误信息里的root@172.24.0.1,大概率是因为你的MySQL服务运行在Docker容器中,宿主机IP被容器识别为172.24.0.1。但既然你用-p交互式输入密码能成功,说明root用户已经允许从这个IP访问,只要修正命令语法就能正常连接。
内容的提问来源于stack exchange,提问作者kevzettler
相关产品推荐
相关产品推荐

