Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

今天在ubuntu上连接mysql数据库时,遇到一个小问题

 Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘ (2)

第一次使用时还可以使用的,突然就不好了,不知道是不是没吃药,

先查看数据库状态:

 jason@jason-Aspire-EC-471G:~$ sudo /etc/init.d/mysql status

(因为我使用的是普通用户,所以要sudo一下)

1.如果出现

jason@jason-Aspire-EC-471G:~$ sudo /etc/init.d/mysql status
 * /usr/bin/mysqladmin  Ver 8.42 Distrib 5.5.41, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version        5.5.41-0ubuntu0.14.04.1
Protocol version    10
Connection        Localhost via UNIX socket
UNIX socket        /var/run/mysqld/mysqld.sock
Uptime:            8 min 2 sec

Threads: 1  Questions: 110  Slow queries: 0  Opens: 291  Flush tables: 1  Open tables: 4  Queries per second avg: 0.228

等相关数据库配置信息,表示数据库是start状态,是可用可连接的。

2.如果出现

 * MySQL is stopped.

表示数据库是stop状态,是不可用不可连接的。

也可以这样>

在连接本地数据库,很傻瓜的做法就是在命令行键入mysql,

1.如果出现:

 ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘ (2)那么连接不上数据库的

2.如果出现:

 ERROR 2002 (HY000): Access denied for user ‘jason‘@‘localhost‘ (using password: NO) 那么表示可以连接的


使用jason@jason-Aspire-EC-471G:~$mysql -uroot -p 也会出现

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


不管怎样查看,最终问题都是指向

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

网上查了下,数据库不在启动状态,应该是权限的问题(因为我成功启动过,然会突然不行了,其中也有动过my.cnf文件),

1.首先键入” ps -ef | grep mysql


jason@jason-Aspire-EC-471G:~# ps -ef|grep mysql
root     21721  1958  0 14:14 pts/12   00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql    22132 21721  0 14:14 pts/12   00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/lib/mysql/jason-Aspire-EC-471G.err --pid-file=/var/lib/mysql/jason-Aspire-EC-471G.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
root     24309 21554  0 14:29 pts/12   00:00:00 grep --color=auto mysql


可以查到mysql的进程,ok,kill掉mysql的进程

jason@jason-Aspire-EC-471G:~$ kill  22132


2.然后把数据库重新启动,但每次都是【fail】,因为我使用的是普通用户"jason",然后"sudo -s"切换到管理员root,启动数据库,如下


jason@jason-Aspire-EC-471G:~$ sudo -s
[sudo] password for jason:
root@jason-Aspire-EC-471G:~# /etc/init.d/mysql restart
 * Stopping MySQL database server mysqld                                                                                                                    [ OK ]
 * Starting MySQL database server mysqld                                                                                                                      [ OK ]
 * Checking for tables which need an upgrade, are corrupt or were
not closed cleanly.

启动完成了

用管理员也可以连接数据库。数据库启动成功了,那么切换到普通用户吧"su jason" ,再次键入

 jason@jason-Aspire-EC-471G:~$ sudo /etc/init.d/mysql status查看数据库状态,则会出现数据库相关配置信息

这时普通用户也可重启数据库。可以进行备份,恢复等相关操作。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。