LoginSignup
0
0

More than 3 years have passed since last update.

【rails】mysqlでdb:createしたらAccess denied for user 'root'@'localhost'

Last updated at Posted at 2020-05-17

調べると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を修正。
usernamepasswordに先程作成した任意のユーザー名とパスワードを入力。

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> 新しいクエリの準備ができました
-> 複数行クエリの次の行を待機しています
'> 一重引用符(')の完了を待つ
"> 二重引用符(")の完了を待つ
`> バックティック(`)の完了を待つ
/*> コメント(/*)の完了を待つ
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0