2013-10-29 30 views
4

我在Amazon EC2上打開我的應用程序(Rails中),並得到了一個錯誤 - 因此,我檢查了日誌,有以下幾點:MySQL不能通過socket連接到本地服務器在Amazon EC2上

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

10幾個小時前,一切正常。有什麼問題?很多流量? 該應用程序正在Micro Instance上運行。

如何解決這個問題,以及如何避免它在未來?

非常感謝您

編輯:

sudo find/-type s 
--- 
/tmp/.sock 
/dev/log 
/var/lib/apt-xapian-index/update-socket 
/run/mysqld/mysqld.sock 
/run/acpid.socket 
/run/dbus/system_bus_socket 
/run/udev/control 
find: `/proc/4739/task/4739/fd/5': No such file or directory 
find: `/proc/4739/task/4739/fdinfo/5': No such file or directory 
find: `/proc/4739/fd/5': No such file or directory 
find: `/proc/4739/fdinfo/5': No such file or directory 
+0

聲音類似於[this](http://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq) – slayedbylucifer

+0

有你試着用'locate'mysqld.sock'文件來定位你的'mysqld.sock'文件。襪子「命令。路徑是否與'myconf'文件中的'socket = path'匹配? –

+0

大家好,謝謝你的回答。 '找到mysqld.sock'返回空輸出,當我運行'sudo find/-type s'時,我看到'/ run/mysqld/mysqld.sock' - 如何處理? – user984621

回答

0

找到您locate my.cnf文件中看到那裏線socket = ../../mysql.sock 你需要與你的路徑替換路徑作爲

socket = /run/mysqld/mysqld.sock

如果路徑匹配讓我知道

+0

謝謝你的回答阿米特。 'locate my.cnf'的輸出是'/ etc/mysql/my.cnf',現在如何更新它? – user984621

+0

'sudo vim/etc/mysql/my.cnf'並查找'socket = ../../mysql.sock'行,看看socket的路徑是否與/ run/mysqld/mysqld.sock相同否則將其替換並按下'Esc' +''''''''wq'來保存文件。 –

+0

我做了這個更新 - 之前的路徑是'/ var/run/mysqld/mysqld.sock',所以我改變了它。但是,仍然是同樣的問題。我也嘗試重新啓動'nginx',但它沒有幫助我。但是 - 在日誌中仍然是舊路徑 - '不能通過套接字連接到本地MySQL服務器'/var/run/mysqld/mysqld.sock'(111)(Mysql2 :: Error)' – user984621

0

交叉張貼從here我的反應。

我在ec2實例上有同樣的問題。這些instructions完美的工作對我來說:


紅帽企業版Linux - RHEL 5/6 MySQL安裝

鍵入以下命令,作爲根用戶:

yum install mysql-server mysql 

紅帽企業版Linux - RHEL 4/3 MySQL安裝

輸入以下命令作爲根用戶:

up2date mysql-server mysql 

啓動MySQL服務

要啓動MySQL服務器類型以下命令:

chkconfig mysqld on 
/etc/init.d/mysqld start 

設置MySQL根密碼

鍵入以下命令爲root用戶設置密碼:

mysqladmin -u root password NEWPASSWORD 

測試mysql的連接

鍵入以下命令連接到MySQL服務器:

$ mysql -u root -p 
6

在我的情況下,服務器顯然已經重新啓動在某些時候,和mysql當它沒有開始時。我只是輸入的命令來啓動和它的工作:

sudo service mysqld start 
+0

或'sudo systemctl start mysqld.service',具體取決於OP的系統。在這種情況下,可以使用'sudo systemctl enable mysqld.service'來自動執行未來的重新啓動。 – ShellFish

0

在我來說,我用下面的命令:

project_folder > mysql.server start 

後系統返回成功的消息,它的工作確定。

-1

mysql-server默認情況下未安裝在Amazon Linux AMI上。使用這些命令來安裝它:

$ sudo yum install mysql-server 
$ sudo chkconfig mysqld on 
$ sudo /etc/init.d/mysqld start 
$ mysqladmin -u root password NEWPASSWORD 
$ mysql -u root -p 
0

要解決這個錯誤首先找到你的套接字文件,在終端

mysqladmin variables | grep socket 

對我來說,運行以下命令,這給:

| socket    | /var/run/mysqld/mysqld.sock 

然後,添加一行到您的Rails應用程序:config/database.yml:

development: 
adapter: mysql2 
host: localhost 
username: root 
password: xxxx 
database: xxxx 
socket: /var/run/mysqld/mysqld.sock 

這將解決這個問題。

相關問題