起因:我在Ubuntu14 64位系统中安装mysql后,后来通过mysql -u用户名 -p密码 的命令连接
Mysql数据库时,报错"can't connect to local mysql serverthrough socket'/var/run/mysqld/mysqld.sock'"
解决方法1:
在不重新安装mysql的情况下,通过如下命令来解决,具体的就是先停止mysql服务,再重新开启mysql服务
cd /etc/init.d
sudo service mysql stop
sudo service mysql start
解决方法2:后来我进入到目录 /var/run/mysqld下发现mysqld.sock没有,后来我通过如下命令重新卸载已经安装mysql
卸载mysql命令来源于这篇文章:http://www.cnblogs.com/steven_oyj/archive/2010/05/24/1742808.html
删除 mysql
sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common //这个很重要
上面的其实有一些是多余的。
清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
安装 mysql
sudo apt-get install mysql-server sudo apt-get install mysql-client
然后发现安装后的版本中,mysqld.sock在该目录下找到了,后面再重新连接mysql就正常了
总结:
根据报错的说明mysqld.sock不能找到,我检查正确能启动的mysql的其他服务器,发现这个mysqld.sock在mysql正确安装后应该是存在的
说明安装过程中发生错误,因此卸载mysql后重新安装解决问题。
后来还是出现了该问题,经过排查后发现,我在安装完mysql后,是存在mysqld.sock的,但是之后我还安装了pymysql,安装完成了之后mysqld.sock就不见了
应该是pymysql的安装把mysqld.sock卸载掉了
另外,这一篇文章给出了更为具体的解释:
http://www.justwinit.cn/post/1902/