簡體   English   中英

用戶 'root'@'localhost' 拒絕 Rails 和 Mysql2 訪問(使用密碼: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.

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