首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MySQL要通过套接字连接,即使我指定了主机和端口?

问为什么MySQL要通过套接字连接,即使我指定了主机和端口?
EN

Server Fault用户
提问于 2017-04-12 12:03:20
回答 2查看 4.5K关注 0票数 5

当试图连接到本地主机上3306端口上运行的MySQL数据库时(使用命令行工具mysql),我得到了错误:

错误2002 (HY000):无法通过套接字'/tmp/mysql.sock‘连接到本地MySQL服务器(2)

下面是我使用的命令:

代码语言:javascript
复制
> mysql -h localhost -P 3306
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

指定用户和密码也不起作用:

代码语言:javascript
复制
> mysql -h localhost -P 3306 -u dbuser -p
Password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

当我指定主机和端口时,为什么它试图使用UNIX套接字文件(就像在这里所做的那样)?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2017-04-12 12:03:20

您需要使用127.0.0.1而不是localhost:

代码语言:javascript
复制
> mysql -h 127.0.0.1 -P 3306
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8347701
Server version: 5.6.35-80.0-log Percona Server (GPL), Release 80.0, 
Revision f113994f31
...

你加入了!

票数 4
EN

Server Fault用户

发布于 2020-07-19 21:01:01

MySQL客户端从提供的主机推断协议。

对于给定的连接,如果未显式指定传输协议,则隐式确定传输协议。例如,与本地主机的连接导致Unix和类Unix系统上的套接字文件连接,而TCP/IP连接则导致连接到127.0.0.1。

来源:MySQL文档

为了避免这种情况,您可以自己指定协议:

代码语言:javascript
复制
> mysql -h localhost -P 3306 --protocol TCP

你应该能够登录:D。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/844103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档