2014-01-23 24 views
0

我在Fedora 20上運行鍼對Apache的&的MySQL(瑪麗亞DB) 它的工作沒有問題,直到最近的一次更新到Fedora Rails應用程序,事後通勤失敗,這個錯誤Rails的客運及MySQL的訪問被拒絕的用戶

Web應用程序無法啓動

訪問被拒絕的用戶 '用戶' @ 'localhost' 的數據庫 'TheDB' (Mysql2 ::錯誤)

使用的WEBrick正常工作從命令行運行軌道,也可能與

的mysql -u用戶-h loalhost米-p

重新安裝乘客& mysql2寶石沒有幫助連接到MySQL

解決這個我借鑑了完全空白的幾個小時後什麼嘗試

我會歡迎任何想法

+0

in mysql.User在用戶「user」的字段Host中的值是什麼? mysql -u用戶-h REAL_IP是否也適用? (http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind- address) – aconrad

+0

您是使用tcp/ip連接還是通過UNIX套接字進行連接? – davidb

+0

@aconrad:它使用真正的IP工作 – Eli

回答

1

如果您可以通過命令行使用正確的用戶名和密碼進行連接,但腳本無法使用相同憑據進行連接,請檢查數據庫mysql,表用戶以獲取Host列中的正確值。

SELECT Host FROM mysql.user WHERE User='myusername'; 

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html來自:

身份檢驗是使用三個用戶表範圍 列(主機,用戶,和密碼)來進行。服務器接受連接 僅在某些用戶錶行的主機用戶列匹配 客戶主機名用戶名和客戶端提供該行中指定的密碼 。

檢查是否sorting rules不影響你:

服務器使用相匹配的客戶端主機名和用戶名第一行

0

我面臨完全相同的問題。同時設置ror應用程序所有rake命令都正常工作。只需簡單地輸入「mysql」就可以從linux控制檯輕鬆訪問mysql,並將其發送到mysql控制檯,並且database.yml使用具有空密碼的root用戶。

完全相同的設置工作在其他開發實例,但花了一整天后,我得到了解決方案。

當我們在數據庫中使用以下配置。陽明海運

*evelopment: &development 
    adapter: mysql2 
    database: development 
    encoding: utf8 
    username: root 
    password: 
    host: localhost 
    socket: /var/run/mysqld/mysqld.sock* 

然後應用程序試圖連接到MySQL作爲「的mysql -u根-h localhost」的,在我的情況下,這個命令是給下面的錯誤。

*$mysql -u root -h 127.0.0.1 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'* 

用以下方式調整root用戶後,問題解決。

*sudo mysql -u root 
use mysql; 
update user set plugin='' where User='root'; 
flush privileges; 
exit;*