Can't connect to local MySQL server through socket 解决方法

本文记录了Ubuntu系统中MySQL数据库重装后遇到的连接问题及解决过程,包括配置文件my.cnf的调整、mysql.sock文件的位置错误修正及数据库启动时的错误排查。

 

最近我的ubuntu系统sudo装的数据库出现问题,迫于无奈重装,重装启动后用mysql命令客户端连接,出现如下提示:

Ruby代码    收藏代码
  1. [LING mysql]$ <span style="">mysql -u root -p</span>  
  2.   
  3. Enter password:   
  4. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)  

 我的my.cnf如下:

Python代码    收藏代码
  1. [mysqld]  
  2. datadir=/var/lib/mysql  
  3. <span style="color: #ff0000; font-size: x-small;">socket=/var/lib/mysql/mysql.sock</span>  
  4.   
  5. user=mysql  
  6. # Default to using old password format for compatibility with mysql 3.x  
  7. # clients (those using the mysqlclient10 compatibility package).  
  8. old_passwords=1  
  9.   
  10. [mysqld_safe]  
  11. log-error=/var/log/mysqld.log  
  12. pid-file=/var/run/mysqld/mysqld.pid  
  13. port=3307  

 进入/var/lib/mysql下,发现mysql.sock存在,但/var/run/mysqld下没有mysqld.sock,灵机一动,可以通过软链接的方式使用/var/lib/mysql/mysql.sock:

Shell代码    收藏代码
  1. [ROOT mysqld]$ <span style="">ln -s /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock</span>  
  2.   
  3. [ROOT mysqld]$ mysqld_safe --log-error=/var/lib/mysql/error.log &  

 做链接并启动mysql,查看error.log,如下:

Java代码    收藏代码
  1. [ROOT mysql]$ <span style="color: #ff0000;">more error.log </span>  
  2.   
  3. InnoDB: The log sequence number in ibdata files does not match  
  4. InnoDB: the log sequence number in the ib_logfiles!  
  5. 100313 10:48:12  InnoDB: Database was not shut down normally!  
  6. InnoDB: Starting crash recovery.  
  7. InnoDB: Reading tablespace information from the .ibd files...  
  8. InnoDB: Restoring possible half-written data pages from the doublewrite  
  9. InnoDB: buffer...  
  10. 100313 10:48:12  InnoDB: Started; log sequence number 0 43655  
  11. 100313 10:48:12 [Note] /usr/sbin/mysqld: ready for connections.  
  12. Version: '5.0.51a-3ubuntu5.5'  socket: '/var/lib/mysql/mysql.sock'  port: 3307  (Ubuntu)  
  13. [ROOT mysql]$  

 重新链接,成功了!

在不同的MySQL版本中,默认密码的情况有所不同: - **MySQL 5.7及之前版本**:在安装完成后,如果没有进行特别的密码设置,MySQL的root用户可能没有密码,直接回车即可登录。 - **MySQL 8.0及之后版本**:在安装过程中会生成一个临时密码。可以通过查看MySQL的错误日志文件来找到这个临时密码。通常日志文件路径为`/var/log/mysqld.log`,可以使用以下命令查找: ```bash grep 'temporary password' /var/log/mysqld.log ``` 解决“Can't connect to local MySQL server through socket”错误的方法如下: - **检查MySQL服务状态**:要保证MySQL服务正在运行。可以使用以下命令来启动或重启MySQL服务: ```bash # 对于Systemd系统 sudo systemctl start mysql sudo systemctl restart mysql # 对于SysVinit系统 sudo service mysql start sudo service mysql restart ``` - **检查套接字文件路径**:报错信息里的套接字文件路径也许和实际的路径不相符。可以通过以下命令查找实际的套接字文件路径: ```bash find / -name "mysql.sock" 2>/dev/null ``` 然后在连接MySQL时指定正确的套接字文件路径,例如: ```bash mysql -uroot -p -S /实际的/mysql.sock ``` - **修改PHP配置文件**:若使用PHP连接MySQL时出现该错误,并且报错显示的是`/var/lib/mysql/mysql.sock`,可以修改`/etc/php.ini`文件,把`mysql.default_socket`和`mysqli.default_socket`的值改成实际的套接字文件路径[^2]。 - **检查文件权限**:要确保MySQL的套接字文件有合适的权限,通常该文件的所有者和所属组应该是`mysql`。可以使用以下命令修改权限: ```bash sudo chown mysql:mysql /实际的/mysql.sock ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值