mysql.sock 2_Mac mySql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/t...

本文介绍了在Mac上遇到MySQL错误2002(HY000)时的解决方法。问题源于mysql.sock文件的位置不正确,可以通过创建软链接从/tmp目录指向/var/mysql目录来解决。同时解释了mysql.sock文件的作用,它是用于在同一服务器上使用localhost进行连接的套接字文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的环境:Mac 10.11.6 ,mysql  5.7.14  。

mac mySql 报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

这个错是链接时报的错,要链接必须启动。修复的时候首先要启动mysql。

首先来了解一下 mysql.sock的作用:

Mysql有两种连接方式:

(1),TCP/IP

(2),socket

对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用。

例如你无须定义连接host的具体IP得,只要为空或localhost就可以。

在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。

因为你在my.ini中或my.cnf中改变端口后,mysql.sock是随每一次 mysql server启动生成的。已经根据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更。

那么对于外部连接,必须是要变更port才能连接的。

mysql有两种连接方式:

1、TCP/IP

2、socket

mysql.sock的作用是server和client在同一台服务器,并且使用localhost进行链接的时候,就会使用socket来进行连接——仅此而已

也就是:为主机名为localhost建立的MySQL连接,该连接过程通过一个套接字文件mysql.socket实现的。所以该文件被删后,用localhost用户是连接不到MySQL服务器的。

必须建立一条tcp/ip连接,即使用127.0.0.1而不是localhost作为-h的参数去连接MySQL服务器,如:mysqladmin -h 127.0.0.1 -u root -p shutdown,强制地建立一条tcp/ip连接;

关闭MySQL服务器,再重新以localhost为主机名启动MySQL服务器,它就会重新创建一个套接字文件。

注意:mysql.sock是一个临时文件,启动mysql后才会生成。

报错的原因:MySQL将其放在/tmp目录,而OSX将其放在/var/mysql目录。所以我们只需要创建一个软链接,输入以下两个命令即可:

如果/var/下没有mysql目录,则需创建

创建目录:sudo mkdir /var/mysql

创建软链接:sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

如果提示:  ln: creating symbolic link `/data/mysqldata/mysql.sock' to `/tmp/mysql.sock': File exists

删除之前的mysql.sock文件

参考文章:http://www.jianshu.com/p/2fb9a3bb12f6,http://blog.csdn.net/sarahhuangzht/article/details/51508112

一下内容来自:http://blog.itpub.net/28602568/viewspace-1797619/

mysql.sock的作用2015-09-11 22:16:00

分类: MySQL

注释:

前段时间出现过一种情况,localhost本地登录mysql数据库提示不能连接mysql.sock,第三方工具sqlyog可以登录,具体原因如下。

mysql有两种连接方式:

1、TCP/IP

2、socket

mysql.sock的作用是server和client在同一台服务器,并且使用localhost进行链接的时候,就会使用socket来进行连接——仅此而已

也就是:为主机名为localhost建立的MySQL连接,该连接过程通过一个套接字文件mysql.socket实现的。所以该文件被删后,用localhost用户是连接不到MySQL服务器的。

必须建立一条tcp/ip连接,即使用127.0.0.1而不是localhost作为-h的参数去连接MySQL服务器,如:mysqladmin -h 127.0.0.1 -u root -p shutdown,强制地建立一条tcp/ip连接;

关闭MySQL服务器,再重新以localhost为主机名启动MySQL服务器,它就会重新创建一个套接字文件。

对上文加以测试深入了解;

查看mysql.sock具体路径:

[root@Wonhigh-Test16 ~]#ps -ef | grep mysql.sock|grep -v "grep"

mysql    31108 30650  0 Sep10 ?        00:03:17 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/Wonhigh-Test16.err --pid-file=/var/lib/mysql/Wonhigh-Test16.pid --socket=/var/lib/mysql/mysql.sock --port=3306

[root@Wonhigh-Test16 ~]#

转移套接字文件 mysql.sock

[root@Wonhigh-Test16 ~]# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql1.sock

确认本地登录情况

[root@Wonhigh-Test16 ~]# mysql -uroot -p123456

Warning: Using a password on the command line interface can be insecure.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

[root@Wonhigh-Test16 ~]#

尝试127.0.0.1 tcp/ip连接(第三方工具远程连接都可以‘连接属性会显示为TCP/IP ’)

[root@Wonhigh-Test16 ~]# mysql -uroot -p123456 -h127.0.0.1

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 127

Server version: 5.6.19-log

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

恢复本地连接

[root@Wonhigh-Test16 ~]# mv /var/lib/mysql/mysql1.sock /var/lib/mysql/mysql.sock

[root@Wonhigh-Test16 ~]# mysql -uroot -p123456

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 121

Server version: 5.6.19-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit

Bye

[root@Wonhigh-Test16 ~]#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值