[英]Can't connect to local MySQL server through socket in ubuntu while running rails
我試圖按照這里的步驟在Linux的Rails上運行ruby,一切都很好,除非我嘗試執行此操作
耙db:create
我收到這個錯誤,
#<Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)>
Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "pool"=>5, "username"=>"root", "password"=>"secretpassword", "host"=>"localhost", "database"=>"apps_development"}, {:charset=>"utf8"}
(If you set the charset manually, make sure you have a matching collation)
Created database 'apps_development'
#<Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)>
Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "pool"=>5, "username"=>"root", "password"=>"secretpassword", "host"=>"localhost", "database"=>"apps_test"}, {:charset=>"utf8"}
(If you set the charset manually, make sure you have a matching collation)
Created database 'apps_test'
這是什么意思?
該錯誤非常明顯:
#<Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)>
您的應用程序無法連接到MySQL數據庫。 您正在嘗試通過套接字( /var/run/mysqld/mysqld.sock
)來訪問它。
您必須知道Mysql套接字的存儲位置,並修改代碼或MySQL配置以相互匹配。
在此之前,您可能要檢查Mysql是否正在運行,顯然,如果Mysql關閉,則無法訪問套接字。 使用以下sudo service mysql status
檢查: sudo service mysql status
。
如果Mysql啟動,請檢查以下內容。
mysql -e '\\s;' | grep 'UNIX socket:'
mysql -e '\\s;' | grep 'UNIX socket:'
mysql -e '\\s;' | grep 'UNIX socket:'
。 您可能需要添加-u<USERNAME> -p<PASSWORD>
具體取決於客戶端配置。 結果應為: UNIX socket: /var/run/mysqld/mysqld.sock
。 這里/var/run/mysqld/mysqld.sock
是套接字位置。 ls -l <SOCKET-PATH>
(此處: ls -l /var/run/mysqld/mysqld.sock
)。
ls: cannot access /var/run/mysqld/mysqld.sock: No such file or directory
則您的套接字文件不存在。 重新啟動Mysql 可能會解決它( sudo service mysql restart
)。 srwxrwxrwx 1 mysql mysql 0 nov. 25 10:07 /var/run/mysqld/mysqld.sock
srwxrwxrwx 1 mysql mysql 0 nov. 25 10:07 /var/run/mysqld/mysqld.sock
檢查此文件的權限和所有者(默認情況下應歸mysql
用戶和組所有,並且至少對mysql
用戶可執行)。 現在您知道了套接字文件的位置,並且確定您的應用程序可以訪問它,您可能需要根據您從第一部分中學到的內容對應用程序進行調整。
根據Rails doc的介紹,您必須編輯config/database.yml
文件以將socket
字段設置為套接字位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.