[英]MySQL doesnt run on OSX after intall — Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[英]Ruby on Rails 3 Can't connect to local MySQL server through socket '/tmp/mysql.sock' on OSX
我有一個標准的 Rails3 環境,RVM 1.2.9,Rails 3.0.5,Ruby 1.9.2p180,MySQL2 Gem 0.2.7,mysql-5.5.10-osx10.6-x86_64
運行rake db:migrate
以創建數據庫時出現的錯誤是:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
config/database.yml 有
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
當然這是我遺漏的一些簡單的東西。
首先,找到您的套接字文件:
mysqladmin variables | grep socket
對我來說,這給出了:
| socket | /tmp/mysql.sock |
然后,在您的config/database.yml
添加一行:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /tmp/mysql.sock
找到了!
將 config/database.yml 中的host: localhost
更改為host: 127.0.0.1
以使 rails 通過 TCP/IP 而不是本地套接字連接。
development:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
您的 mysql 服務器可能沒有運行。 下面解釋如何啟動服務器。 這是 mysql 下載附帶的 README 文件的摘錄。
安裝后,您可以通過在終端窗口中運行以下命令來啟動 MySQL。 您必須具有管理員權限才能執行此任務。
如果您已安裝啟動項,請使用以下命令:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
如果不使用啟動項,請輸入以下命令序列:
shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-Z)
shell> bg
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
這些是解決此問題的選項:
選項 1:將您的主機更改為 127.0.0.1
staging:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
socket: your-location-socket
選項 2:您似乎有 2 個連接到服務器 MySql。 要找到您的套接字文件位置,請執行以下操作:
mysqladmin variables | grep socket
對我來說:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!
或者
mysql --help
我收到此錯誤是因為我在 OS X 版本 10.9.5 中為 PHP 應用程序安裝了 XAMPP。 在此處選擇默認套接字位置之一。
我選擇默認 Rails 應用程序:
socket: /tmp/mysql.sock
對於我的 PHP 應用程序,我安裝了 XAMPP,所以我在這里設置了我的套接字:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
OS X 中的 OTHERS 套接字位置
對於 MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
對於 MySQL 的軟件包安裝程序:
socket: /tmp/mysql.sock
對於與 Mac OS X 服務器捆綁的 MySQL:
socket: /var/mysql/mysql.sock
對於 Ubuntu:
socket: /var/run/mysqld/mysql.sock
選項 3:如果所有這些設置都不起作用,您可以刪除您的套接字位置:
staging:
# socket: /var/run/mysqld/mysql.sock
我希望這對你有幫助。
“/tmp/mysql.sock”將在您啟動 MySQL 服務器時自動創建。 所以請記住在啟動 rails 服務器之前這樣做。
我在 OSX 上安裝 MAMP 后,MySQL 套接字位於/Applications/MAMP/tmp/mysql/mysql.sock
。 我使用locate mysql.sock
來查找我的 MySQL 套接字位置。
所以我的config/database.yml
看起來像:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /Applications/MAMP/tmp/mysql/mysql.sock
如果您使用的是 Mac OSX,
MySQL Unix 套接字的默認位置在 Mac OS X 和 Mac OS X Server 上有所不同,具體取決於您選擇的安裝類型
按安裝類型划分的 Mac OS X 上的 MySQL Unix 套接字位置
因此,只需將socket: /tmp/mysql.sock
database.yml更改為指向正確的位置,具體取決於您使用的操作系統和安裝類型
Mac OS X 上 MySQL 套接字的默認位置是/var/mysql/mysql.sock
。
我遇到了同樣的問題,但沒有一個答案能一步一步地說明我需要做的事情。 發生此錯誤是因為您的套接字文件尚未創建。 您所要做的就是:
/tmp/mysql.sock
被創建了,為此你運行: mysql server start
config/database.yml
文件並添加/編輯socket: /tmp/mysql.sock
條目rake:dbmigrate
,一切都應該正常運行我發現問題是我只有一個生產環境。 我沒有開發或測試環境。
通過添加 'RAILS_ENV=production' 來給出命令
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
有效
如果您通過 XAMPP 運行 MYSQL:
打開 XAMPP mysql 配置文件(在 OSX 上):
/Applications/XAMPP/etc/my.cnf
復制套接字路徑:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
打開rails項目的數據庫配置文件:myproject/config/database.yml
將套接字配置添加到開發數據庫配置中:
-->
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: difiuri_falcioni
pool: 5
username: root
password:
host: localhost
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
享受 :)
你有這樣的問題:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Ans: $ sudo service mysql start
在我的機器上 mysqld 服務停止了,這就是為什么它給我同樣的問題。
1:- 轉到終端並輸入
sudo service mysqld restart
這將重新啟動 mysqld 服務並在所需位置創建一個新的 sock 文件。
如果您在 Ubuntu 或其他 Linux 上通過 XAMPP 或 LAMPP 運行 MYSQL,請嘗試:
socket: /opt/lampp/var/mysql/mysql.sock
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.