[英]#<Mysql2::Error: Access denied for user 'root'@'localhost' (using password: NO)>
[英]Rails and Mysql2 Access denied for user 'root'@'localhost' (using password: NO)
我對 Rails 有點陌生,我的大部分經驗都涉及我對如何解決問題的感覺,所以如果我錯過了明顯的解決方案,我提前道歉。 我運行 Windows 機器。
我正在使用 mysql2 創建登錄和注冊。 MySQL安裝程序已經用於安裝服務器、工作台等(我將root密碼配置為密碼)並且我已經安裝了mysql2 gem。
Rails 已成功捆綁,但是當我輸入rake db:create
,發生Access denied for user 'root'@'localhost' (using password: NO)
的錯誤。
Rails 然后提示我輸入密碼,我輸入了密碼,但錯誤再次發生。 第二次輸入我的密碼后,它似乎工作正常,直到我嘗試執行rails db:migrate
其中再次出現錯誤使得無法遷移。
這讓我很困惑,因為在 MySQL 查詢中,我的密碼設置為與我輸入的相同。 我嘗試為“root”用戶提供所有架構權限,但這沒有任何區別。 請告訴我如何解決這個問題,謝謝。
如果您對我的問題有任何疑問,請提問。
對我有幫助
$ mysql -u root -p
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword')
並在databse.yml
development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: "mypassword" #I had an empty string here before
感謝@spongezh22
似乎您的用戶無法連接到 mysql 數據庫,請在您的控制台中嘗試此命令
mysql -u root -p
並在提示時將密碼設為“admin”
如果這是可能的,那么你應該很高興去
你的數據庫 yml 文件應該像
development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: mypass
我只是將上面(下面)復制並粘貼到我的 rails yml 文件中,它起作用了!!
development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: mypass
Rake 實際上也嘗試創建您的test
數據庫,這就是為什么如果您沒有正確設置您的test
數據庫憑據(例如 (database.yml)),您會收到錯誤消息
default: &default
adapter: mysql2
encoding: utf8
database: atheneum
pool: 5
username: ******
password: "******"
host: localhost
development:
<<: *default
database: atheneum
test:
<<: *default
database: atheneum_test
運行./bin/spring stop
為我固定。 我在 Github 上找到了它,但不記得在哪里。
我的問題是由於密碼以“!”開頭。 在 mysql 和 database.yml 中更改我的密碼為我解決了這個問題。
就我而言,它只是 database.yml 文件中的一個不正確的數據庫密碼。 我更改了密碼,它運行得很好。
這是我對 database.yml 文件進行更改后不得不重新啟動 rails 服務器的少數情況之一。 在文件中設置密碼后,我不得不重新啟動 rails 服務器。 在那之后,錯誤消失了。
不是 rails 答案,但對於其他出現在這里的人:
如果您以某種方式將自己的憑據(可能是 ENV 文件)傳遞給獨立腳本,請確保您的密碼末尾沒有任何不可見的字符,例如“\\n”。 那真的會惹你生氣。
根據上面 Bhrat 的建議,我將我的 linux 用戶創建為 mysql 中的用戶。 確保用戶可以從 $user 更改用戶從數據庫 yml 中的 root 連接到用戶 rake db:create 工作
錯誤是說用戶 root 的訪問被拒絕。 (我沒有密碼)。 我的問題是因為我將默認的 3306 端口更改為 8111。在 database.yml 中我添加了port: 8111
。
如果您不記得設置密碼,請執行以下操作:
sudo mysql -u root
use mysql;
UPDATE user set authentication_string='MyPassword' where user='root';
這將更新您的密碼。 然后,更改database/config.yml文件以匹配您的密碼。
(根據您運行的 MySQL 版本,您可能需要用 PASSWORD() 函數或 sha2() 函數將“密碼”括起來)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.