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

來源:互聯網
上載者:User

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

今天在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查看資料庫狀態,則會出現資料庫相關配置資訊

這時普通使用者也可重啟資料庫。可以進行備份,恢複等相關操作。

本來已經完結的,今天在使用時又出現了,所以又來補充幾句,

今天按照上面的步驟,切換到root使用者重啟也【fail】了,

這樣不成功的話請使用命令

root@jason-Aspire-EC-471G:~# lsof -i tcp:3306
這裡會顯示mysql的一些進程,

全部kill掉,殺死進程,然後再串連或者重啟就好了。



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.