症状:前一天在MySQL中删除了几个不用的数据库后登陆MySQL出现以下错误:
mysql -u root -p
passwd
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
查看 /var/run/mysqld/mysqld.sock 根本这个文件不存在了;
有几个原因可能导致mysqld.sock不存在:
1.没有安装mysql-server
2.如果安装了mysql-server而且它已经运行了
则需要检查配置文件具体可以看stack overflow的解答:
此时我发现虽然mysql-server已经安装好了,但是ps -aux | grep 'mysql' 发现mysql服务并没开启;
然而 :
sudo service mysql start 报错:
start: Job failed to start
并且 /var/log/mysql/error.log是空的,无法根据日志排错;
在stack overflow 上看到类似重新安全mysql-server但是还保存原来数据库数据的方法:
大概步骤:
1.备份原来数据库数据文件以防没有安装成功:
sudo mkdir /home/<your username>/mysql/ cd /var/lib/mysql/ sudo cp * /home/<your username>/mysql/ -R
2.为重新安装而清理mysql
sudo apt-get purge mysql-server-5.1 mysql-common
3.删除/etc/mysql文件夹以及其中内容
sudo rm /etc/mysql/ -R
4.检查原来的数据库文件仍然在/var/lib/mysql/中如果不存在将第一步保存的文件复制到这个文件中并更改它的拥有者和群组为root;
sudo mkdir /var/lib/mysql/ sudo chown root:root /var/lib/mysql/ -R cd ~/mysql/ sudo cp * /var/lib/mysql/ -R
5.安装新的mysql server
sudo apt-get install mysql-server
6.重新连接查看原来数据是否存在
mysql -u root -p passwd mysql> show databases -> ; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sql | +--------------------+ 4 rows in set (0.00 sec)
此时我的mysql又回来原来的状态了;