2013-08-26 22 views
0

我正在使用此代碼連接到MySQL數據庫:爲什麼我會得到「訪問拒絕用戶root'@'localhost'」?如果我使用<code>Mysql.new('localhost','root','admin','one')</code>然後正常工作</p> <pre><code>Access denied for user 'root'@'localhost' (using password: YES) </code></pre> <p>:

username="root" 
password="admin" 
host="localhost" 
db="one" 
Mysql.new(host,username,password,db) 

我在執行代碼得到這個錯誤。

當我打印所有變量時,將打印正確的值。

請幫我弄清楚什麼是錯的。

+0

我不明白爲什麼這是一個Sinatra或Ruby問題。它看起來像你的MySQL數據庫密碼與你認爲的不同。除非您要向我們展示您的root帳戶的配置以及其在數據庫中的密碼,以便我們可以將其與您發送的內容進行比較,否則我們無法真正幫助您完成很多任務。我建議您仔細閱讀[MySQL帳戶管理文檔](http://dev.mysql.com/doc/refman/5.1/en/user-account-management.html);在管理賬戶時,MySQL並不是最直接的DBM。 –

+0

我在ruby中使用此代碼。沒有mysql數據庫的密碼是不同的..如果我使用Mysql.new('localhost','root','admin','one'),那麼它工作正常。 – Jaydipsinh

+0

這個味道很像:http:// stackoverflow。com/questions/6081339/access-denied-for-user-rootlocalhost-using-password-yes-mysqlerror?rq = 1通讀右側的「相關」問題。 –

回答

4

基本故障排除101:

如果文字字符串工作,變量賦值不這樣做,那麼懷疑你的變量賦值;其中一個可能有問題,比如看不見的角色。

嘗試:

vars = ('localhost','root','admin','one') 
Mysql.new(*vars) 

然後嘗試:

vars = %w(localhost root admin one) 
Mysql.new(*vars) 

或:

host, username, password, db = %w(localhost root admin one) 
Mysql.new(host, username, password, db) 

或:

host, username, password, db = 'localhost','root','admin','one' 
Mysql.new(host, username, password, db) 

這個想法是從你知道的工作開始,然後向後工作,直到分配給變量有效,或者中斷。那時你已經解決了問題(可能不知道爲什麼),或者你已經知道是什麼打破了它。無論哪種方式,你都在前方。

你說:

當我打印的所有變量的值正確打印。

如何打印變量?我們看不到您的終端,並且您沒有給我們提供這些信息。如果它是一個看不見的字符,在複製和粘貼文本時是常見的罪魁禍首,它可能在打印時不顯示。檢查變量應該幫助,因爲他們應該顯示爲轉義值:

password = "root\u00a0" 

puts password 
# >> root  

puts password.inspect 
# >> "root " 

puts password.chars 
# >> r 
# >> o 
# >> o 
# >> t 
# >>   

puts password.unpack('C*').map{ |s| s.to_s(16) } 
# >> 72 
# >> 6f 
# >> 6f 
# >> 74 
# >> c2 
# >> a0 

否則,我恢復到我原來的評論,這是你如何設置你的MySQL root帳戶和你應該讀「的問題Access denied for user 'root'@'localhost' (using password: YES) (Mysql::Error)「。

+0

ohh是當我執行波紋管語句 把password.inspect 我得到了「管理員\ n」。你能告訴我如何刪除\ n ?? 非常感謝。你已經給出了這樣一個很好的調試技巧:) – Jaydipsinh

+0

雅我得到了password.gsub(「\ n」,'')。這個聲明解決了我的問題。謝謝哥們! – Jaydipsinh

+0

如果您將包含一小段*準確*重現問題的代碼,我們可以在一分鐘內解決問題。聽起來你正在使用'gets'從鍵盤讀取信息,或者讀取文件不正確。要麼是一個微不足道的修復。 –

相關問題