web-dev-qa-db-ja.com

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からパスワードの入力を求められ、パスワードを入力しましたが、エラーが再び発生しました。パスワードを2回入力した後、_Rails db:migrate_を実行しようとするまでは正常に機能しているように見えましたが、エラーが再び表示され、移行できなくなりました。

これは、MySQLクエリで、入力したパスワードと同じパスワードを設定しているため、混乱します。 「root」ユーザーにすべてのスキーマ特権を与えようとしましたが、違いはありませんでした。この問題を解決する方法を教えてください、ありがとう。

私の質問について質問がある場合は、お問い合わせください。

14
spongezh22

助けてくれた

$ mysql -u root -p

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword')

およびdatabase.ymlで

development:
adapter: mysql2
database: mydb
Host: localhost
username: root
password: "mypassword" #I had an empty string here before

@ spongezh22に感謝

20
zombie_ghast

ユーザーがmysql DBに接続できないようです。コンソールでこのコマンドを試してください

mysql -u root -p

プロンプトが表示されたら、パスワードを「admin」として入力します

これが可能であれば、あなたは行ってもいいはずです

そして、データベースのymlファイルは次のようにする必要があります

development:
 adapter: mysql2
 database: mydb
 Host: localhost
 username: root
 password: mypass
8
Bharat soni

上記(下記)をコピーして、Rails ymlファイルに貼り付けました。

development:
adapter: mysql2
database: mydb
Host: localhost
username: root
password: mypass
1
macjeans

私の問題は、「!」で始まるパスワードが原因でした。 mysqlとdatabase.ymlでパスワードを変更すると解決しました。

0
ltondeleir

Rakeは実際にtestデータベースも作成しようとします。そのため、(database.yml)のようなtestデータベース資格情報を正しく設定しないとエラーメッセージが表示されます。

default: &default
    adapter: mysql2
    encoding: utf8
    database: atheneum
    pool: 5
    username: ******
    password: "******"
    Host: localhost


development:
  <<: *default
  database: atheneum

test:
  <<: *default
  database: atheneum_test
0
Michael Chemani

エラーは、ユーザーrootのアクセスが拒否されたと言っていました。 (パスワードがありませんでした)。私の問題は、デフォルトの3306ポートを8111に変更したためです。database.ymliveでport: 8111を追加しました。

0
A. Askarov

Railsの答えではなく、ここに表示される他の人のために:

何らかの方法で、おそらくENVファイルをスタンドアロンスクリプトに渡す場合は、パスワードの末尾に「\ n」などの非表示文字がないことを確認してください。それは本当にあなたを台無しにします。

0
Josiah

上記のBharatのアドバイスに基づいて、mysqlのユーザーとしてLinuxユーザーを作成しました。ユーザーがデータベースymlのrootから変更された$ userからユーザーrake db:create workingに接続できることを確認します

0
uberdave

ランニング ./bin/spring stop私のために修正。 Githubで見つけましたが、どこにあるか思い出せません。

0
Igorzovisk

これは、database.ymlファイルに変更を加えた後にRailsサーバーを再起動する必要があった数少ない機会の1つでした。ファイルにパスワードを設定した後、= Rails server。その後、エラーはなくなりました。

0
Odysseus Ithaca