調べるとAccess denied for user 'root'@'localhost' (using password: NO)
の対処はたくさん出てくるけど、Access denied for user 'root'@'localhost'
で終わっているエラーはすぐに出てこないので自分用に残します。
対処法
mysqlにユーザーを指定してログイン。
別のマシンでサーバーが動いていたら、ホスト名も指定する。
パスワード入力を求められるので、パスワードを覚えていたら入力。
間違えて何度もエラーが出るなら頭にsudo
付けたら入れる。
$ mysql -u root -p
任意のユーザー名とパスワードを入力する。
ここではユーザーに全てのDB操作権限を付与している。
*.*
にDBの名前を入れる。
大文字小文字区別しないので小文字でもいい。
私の場合は既存のユーザーに権限付与したので、存在しないユーザーを指定したらユーザー作成から始めないといけないかもしれない。
mysql> GRANT ALL PRIVILEGES On *.* TO ユーザー名@localhost IDENTIFIED BY ‘パスワード’;
このあとにrails db:create
しても同じエラーが出たので,database.yml
を修正。
username
とpassword
に先程作成した任意のユーザー名とパスワードを入力。
config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: ユーザー名
password: パスワード
socket: /var/run/mysqld/mysqld.sock
development:
<<: *default
database: hoge_development
test:
<<: *default
database: hoge_test
production:
<<: *default
database: hoge_production
username: hgoe
password: <%= ENV['HOGE_PASSWORD'] %>
$ rails db:create
Created database 'hoge_development'
Created database 'hoge_test'
上手く行きました。
ちなみに表示されるプロンプトの意味
促す | 意味 |
---|---|
mysql> | 新しいクエリの準備ができました |
-> | 複数行クエリの次の行を待機しています |
'> | 一重引用符(')の完了を待つ |
"> | 二重引用符(")の完了を待つ |
`> | バックティック(`)の完了を待つ |
/*> | コメント(/*)の完了を待つ |