簡體   English   中英

運行Rails時無法通過ubuntu中的套接字連接到本地MySQL服務器

[英]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啟動,請檢查以下內容。

查找套接字並檢查權限

  1. 在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是套接字位置。
  2. 檢查套接字文件: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM