Home  >  Article  >  Database  >  MySQL在服务器端出现ERROR 2002的解决办法

MySQL在服务器端出现ERROR 2002的解决办法

WBOY
WBOYOriginal
2016-06-07 16:04:171961browse

首先说明,服务器系统是FREEBSD4.10-RELEASE 刚才装那个PLESK未成功 看LOG发现是无法使用他自己的帐号向MYSQL写数据 于是想打开MYSQL添加他的用户(因为服务器的MYSQL ROOT密码不为空) CODE: [Copy to clipboard] #mysql

首先说明,服务器系统是FREEBSD4.10-RELEASE
刚才装那个PLESK未成功
看LOG发现是无法使用他自己的帐号向MYSQL写数据
于是想打开MYSQL添加他的用户(因为服务器的MYSQL ROOT密码不为空)

CODE: [Copy to clipboard]  
#mysql -u root -p  

CODE: [Copy to clipboard]  
Enter password:**********  

出现提示:
CODE: [Copy to clipboard]  
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)  

坏了!刚才的PLESK这个SB软件,自动把TMP目录下的MYSQL.SOCK文件DEL了,怎么办?要知道没这个文件,MYSQL没办法运行的.
找找别的地方有没有吧……

CODE: [Copy to clipboard]  
#find / -name mysql.sock  

出现提示

CODE: [Copy to clipboard]  


完,系统里没这个文件,怎办?
考虑一下,MYSQL本身并未使用这个文件,应该是MYSQLD(MYSQL的守护进程在使用),那么重新启动下MYSQL试试!

CODE: [Copy to clipboard]  
#mysql restart

出现提示:

CODE: [Copy to clipboard]  
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)  

无法重启
再仔细想想……应该是有还有系统进程没干掉!我找跟MYSQL有关的进程!
CODE: [Copy to clipboard]  
#ps -aux|grep mysql

显示结果:

CODE: [Copy to clipboard]  
mysql    137  0.0  1.5 152956 7988  ??  S     3:05AM   0:00.79 /usr/local/libexec/mysqld --basedir=/usr/local --datadir=/var/d

root     111  0.0  0.1   648  452 con- I     3:05AM   0:00.01 /bin/sh /usr/local/bin/mysqld_safe --user=mysql --datadir=/var/ 

找到2个进程:
CODE: [Copy to clipboard]  
#kill 137  

CODE: [Copy to clipboard]  
#kill 111  


进程KILL了,

CODE: [Copy to clipboard]  
#mysql restart 

出现提示:

CODE: [Copy to clipboard]  
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 

CODE: [Copy to clipboard]  
#cd /usr/ports/databases/mysql41-server  

CODE: [Copy to clipboard] make deinstall

CODE: [Copy to clipboard]  make reinstall

一般来说重装前需要移动走数据……移动数据的命令是……

CODE: [Copy to clipboard]  
#mv /数据所在路径 /备份路径 
这样重装数据库后数据不至于丢失后……可以再慢慢弄回来……

可是真的有必要重新装MYSQL吗?

我仔细的想了想:
MYSQL是通过MYSQLD这个守护进程运行的,守护进程需要加载mysql.SOCK,mysql.sock被那个SBplesk软件删除后MYSQLD出错,这样的话根本无法重启MYSQL(似乎很严重,呵呵!),但是通过仔细观察他的提示可以发现SOCK其实只是临时文件(因为它被放在TMP目录下了),那么系统每次自动清理后一定会丢失,那MYSQL怎么解决这个问题?去看看mysqld.sh文件,打开看了下,豁然开朗!原来mysql.sock每次启动MYSQL时自动生成!那就简单多了……MYSQL无法RESTART,我总可以REBOOT服务器吧?说干就干~~~

CODE: [Copy to clipboard]  
#reboot 

回车确认,丢失连接,10秒后重连,用ROOT身份登陆后,输入:

CODE: [Copy to clipboard]  
#mysql -u root -p  

CODE: [Copy to clipboard]  
Enter password:**********  
出现提示:
CODE: [Copy to clipboard]  
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 225 to server version: 4.0.18-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn