Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’解决

本文介绍了在Linux环境下解决MySQL启动失败及远程连接问题的方法,包括处理socket文件权限问题、配置文件修改、服务重启等步骤。

启动mysql 报错:

 

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

 

1、先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.

 

2、确定你的mysql.sock是不是在那个位置,
mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock

 

3、试试:service mysqld start

 

4、如果是权限问题,则先改变权限 #chown -R mysql:mysql /var/lib/mysql

 

[root@localhost ~]# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
[root@localhost ~]# mysql -uroot -p

 

 

 

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
   原因是,/var/lib/mysql 的访问权限问题。

shell> chown -R mysql:mysql /var/lib/mysql

接着启动服务器

shell> /etc/init.d/mysql start

服务器正常启动后察看 /var/lib/mysql 自动生成mysql.sock文件。

但是我的问题仍然没有得到解决。

问题终于解决:
方法:    修改/etc/my.conf:
[mysqld]
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/usr/local/mysql

 

If there is not currently a section called [client], add one at the bottom of the file and copy the socket= line under the [mysqld] section such as:

 

[client]
socket=/var/lib/mysql/mysql.sock


发现依旧如此,运行/etc/init.d/mysql start报错:    Starting MySQLCouldn't find MySQL manager or server
是mysqld服务没启,运行/usr/local/mysql/bin/mysqld_safe &

 

----------------------------------------------------------------------

1、rpm安装
    以指定路径–prefix=/usr/local/mysql
    --data默认放在:/var/lib/mysql
    ---mysql默认安装在了:/usr/share/mysql中
   
2、可以使用ps -ef|grep mysql    
root     17659     1  0  2011 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid  
mysql    17719 17659  0  2011 ?        03:14:57 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock
usr/bin/mysql 是指:mysql的运行路径
var/lib/mysql 是指:mysql数据库文件的存放路径
usr/lib/mysql 是指:mysql的安装路径
   
linux下卸载mysql方法

a. 查找已安装的myslq 版本:
#rpm  -qa | grep  mysql (注意大小写,如果mysql 不行就换MySQL)

显示:
[root@localhost ~]# rpm  -qa | grep  mysql
mysql-5.0.77-4.el5_4.2
mysql-server-5.0.77-4.el5_4.2
php-mysql-5.2.13-1.el5.art
复制代码
在屏幕上将显示已安装的mysql包名如:mysql-5.0.77-4.el5_4.2 ;
将搜索出的包名卸载:
#rpm -e  –nodeps mysql-5.0.77-4.el5_4.2  (nodeps表示强制删除)
提示
error: package –nodeps is not installed
error: package mysql-.0.77-4.e15_.2 is not installed

 

 

-----------------------------------------------------------------------------

最近在Linux上装了个MySQL数据库,可是远程连接MySQL时总是报出erro 2003: Can't connect to MySQL server on '211.87.***.***' (111),昨天查了好几个小时才找到解决方案,如下:

1.sudo gedit /etc/mysql.my.cnf

找到bind-address      =127.0.0.1

修改为bind-address   =0.0.0.0

2.sudo /etc/init.d/ mysql restart

在这种情况下如果再尝试远程连接,则会报出ERROR 1130 (HY000): Host '211.87.***.***'is not allowed to connect to this MySQL server提示信息,不能远程连接数据库。

在MySQL host上按如下命令操作

mysql -u root -ppassword    //进入mysql控制台

mysql>use mysql;

mysql>update user set host = '%' where user = 'root';    //这个命令执行错误时可略过

mysql>flush privileges;

mysql>select host, user from user; //检查‘%’ 是否插入到数据库中

mysql>quit

 

3、其它

mysqladmin -u root password 123           //改密码  
 在/ety/my.cnf中加入skip-grant-tables        //跳过mysql访问控制

<think>好的,我现在需要解决用户在Linux中遇到的MySQL连接问题,错误信息是“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'”。首先,我得理清可能的原因,然后逐步排查。 用户提到了几个引用,其中引用[1]、[2]、[3]都描述了相同的错误,引用[4]提到修改my.cnf文件来指定socket路径。看来常见的原因包括MySQL服务未启动、socket文件路径错误或权限问题,或者配置文件中的设置不正确。 首先,我应该检查MySQL服务是否运行。如果服务没启动,自然无法连接。用户可以通过systemctl status mysql或者service mysql status来查看状态。如果服务未运行,启动它可能解决问题。如果启动失败,可能需要查看日志,比如/var/log/mysql/error.log,找找启动失败的原因,比如端口占用、配置错误等。 其次,确认socket文件是否存在。默认路径是/var/lib/mysql/mysql.sock,如果不存在,可能是因为MySQL没有正确安装,或者配置文件中指定的路径不同。用户可以使用find或locate命令搜索mysql.sock的位置。如果路径不一致,可能需要调整客户端配置,比如在/etc/my.cnf或~/.my.cnf中指定正确的socket路径,如引用[4]中的例子所示。此外,检查是否有权限问题,确保mysql用户有权限访问socket文件和所在目录。 另外,有时用户可能误用了localhost连接,这会强制使用socket连接,而如果MySQL配置的是网络端口,可能需要使用127.0.0.1代替localhost,这时会走TCP/IP连接而不是socket。可以建议用户尝试mysql -h 127.0.0.1 -u 用户名 -p,看看是否能连接,这样可以绕过socket的问题,确认是否是socket配置的问题。 还有可能是磁盘空间不足,导致MySQL无法创建socket文件或写入数据。用df -h检查磁盘使用情况,特别是/var/lib/mysql所在的分区。 如果配置文件被修改过,比如引用[4]中的情况,用户需要确认[client]、[mysqld]等部分中的socket路径是否一致,并且重启服务使配置生效。如果修改了socket路径,所有客户端工具都需要知道新的路径,否则会报错。 权限方面,/var/lib/mysql目录和mysql.sock文件的权限是否正确?通常应该是mysql用户和组,权限为660或755。如果权限不对,可以用chown和chmod调整。 最后,如果以上步骤都无效,可能需要重新安装MySQL或者恢复备份的配置文件,或者寻求更深入的日志分析。 在回答时,需要分步骤说明,引导用户逐一排查,确保每个可能的点都覆盖到,并给出具体的命令和操作建议,同时提醒用户注意备份配置文件,避免操作失误。需要结合用户提供的引用内容,尤其是引用[4]中的配置方法,指导用户正确修改配置文件,并重启服务。这样用户能系统地解决问题,而不仅仅是尝试一种方法。</think>### 逐步解决方案 以下是解决Linux中MySQL无法通过socket连接的详细步骤: --- #### **步骤1:检查MySQL服务状态** 首先确认MySQL服务是否正在运行: ```bash systemctl status mysql # 或 service mysql status ``` - **若未运行**:尝试启动服务 ```bash systemctl start mysql # 或 service mysql start ``` - **若启动失败**:查看日志定位问题(日志路径通常为`/var/log/mysql/error.log`)[^2][^3]。 --- #### **步骤2:确认socket文件是否存在** 检查默认socket文件路径`/var/lib/mysql/mysql.sock`: ```bash ls -l /var/lib/mysql/mysql.sock ``` - **若文件不存在**: 1. 确认MySQL配置文件`/etc/my.cnf`或`/etc/mysql/my.cnf`中是否指定了其他路径[^4]。 2. 使用`find`搜索文件位置: ```bash find / -name mysql.sock 2>/dev/null ``` 3. 若路径不一致,需同步客户端和服务的socket配置(见步骤4)。 --- #### **步骤3:尝试TCP/IP连接** 临时绕过socket连接,使用TCP/IP验证服务是否可用: ```bash mysql -h 127.0.0.1 -u 用户名 -p ``` - **若连接成功**:说明问题仅与socket配置相关。 - **若连接失败**:需排查服务是否监听端口(默认3306): ```bash netstat -tuln | grep 3306 ``` --- #### **步骤4:修改配置文件** 编辑MySQL配置文件(通常为`/etc/my.cnf`): ```bash vim /etc/my.cnf ``` 添加以下内容确保socket路径一致: ```ini [mysqld] socket=/var/lib/mysql/mysql.sock # 服务端socket路径 [client] socket=/var/lib/mysql/mysql.sock # 客户端socket路径 ``` 保存后重启服务: ```bash systemctl restart mysql ``` --- #### **步骤5:检查文件权限** 确保MySQL用户拥有socket文件及目录权限: ```bash chown -R mysql:mysql /var/lib/mysql chmod 755 /var/lib/mysql chmod 660 /var/lib/mysql/mysql.sock ``` --- #### **步骤6:处理磁盘空间不足** 检查磁盘剩余空间: ```bash df -h /var/lib/mysql ``` - 若空间不足,清理日志或迁移数据目录。 --- #### **步骤7:重装MySQL(终极方案)** 若以上步骤无效,备份数据后重装: ```bash apt purge mysql-server # Debian/Ubuntu yum remove mysql-server # CentOS/RHEL rm -rf /var/lib/mysql # 谨慎操作! apt install mysql-server ``` --- ### 关键操作示意图 ``` 服务状态 → Socket文件 → 配置同步 → 权限修复 → 磁盘检查 ``` ### 相关问题 1. 如何查看MySQL错误日志的具体路径? 2. 如何修改MySQL的默认数据存储目录? 3. 为什么使用`127.0.0.1`可以连接而`localhost`失败? --- 通过上述步骤,可覆盖90%以上的socket连接问题。若仍报错,请提供具体日志信息进一步分析[^1][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值