表題の通りです。
rails db:create RAILS_ENV=production
すると
Access denied for user 'root'@'localhost' (using password: NO) Couldn't create 'aaa_production' database. Please check your configuration. rails aborted! Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: NO) /var/www/aaa/bin/rails:9:in `<top (required)>' /var/www/aaa/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:create (See full trace by running task with --trace)
と言われます。
mysqlへのパスワード設定がうまくいかず、その過程を飛ばしてます。
ちなみに
Rails 5.2.4.1
で、
関係あるかわかりませんが、database.ymlには
production: <<: *default database: aaa_production username: root socket: /var/lib/mysql/mysql.sock
と書いています。
mysqlインストール時、
sudo yum -y install mysql56-server mysql56-devel mysql56
でうまくいかず、
sudo yum -y install mysql-community-server
としています。
どうぞよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/04 02:51
回答2件
0
ベストアンサー
MySQL へ root@localhost の接続をしようとしている、ということですが、標準で MySQL は root@localhost については「ソケットで接続」になります。
そしてソケットで接続する際には、「OS のユーザーとしての root」からでないと接続できません。
Terminal から
bash
1$ mysql -u root
は接続できませんが、
bash
1$ sudo mysql -u root
は接続できるはずです。
これを踏まえると、Rails を root で駆動させれば通るのですが、そんなことをするくらいなら「Rails から接続するための専用のMySQL のユーザー」を作成した方がよいです。
MySQL の create user、grant を確認して、必要なユーザーを作って下さい。
MySQL が起動している状態で、root パスワードが分からなくなった場合の対処法
MySQL サーバを「認証無効」で起動してやることで root のログイン方法のメンテナンスができます。
- 現在動いている MySQL サーバを停止させる(sudo mysqladmin shutdown)
- 認証無効モードで起動(sudo /usr/bin/mysqld_safe --skip-grant-tables &)
- mysql に接続(mysql)
- mysql データベースを選択(use mysql)
- ユーザー情報の確認(select plugin, authentication_string from user where Host = 'localhost' and User = 'root')
ここで出てきた plugin が 'mysql_native_password' であれば、ログイン時にパスワードが必要です。
パスワードを消すにはこの状態から
6. パスワードを空文字列にする(update user set autenticatino_string = '' where Host = 'localhost' and User = 'root')
7. mysql を終了させる(exit)
8. mysql サーバを止める(sudo mysqladmin shutdown)
9. mysql サーバを普通に立ち上げる(システム再起動、もしくはsudo /usr/bin/mysqld_safe &)
10. mysql に接続(mysql -u root -p) Enter password は何も入れずに Enter
これで接続できたはずです。
root をパスワード無しで運用するのは(他の制限を掛けているならともかく)危険極まりないので、パスワードを新たに設定するなり、認証方法を変えるなりしましょう。
投稿2020/03/03 23:55
編集2020/03/04 07:57総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/04 03:32
2020/03/04 04:17
2020/03/04 04:24
2020/03/04 04:28
2020/03/04 04:35
2020/03/04 05:27
2020/03/04 06:30
2020/03/04 06:40
2020/03/04 06:53
2020/03/04 07:24
2020/03/04 07:38 編集
2020/03/04 07:46
2020/03/04 07:56 編集
2020/03/04 08:06
2020/03/04 08:29
2020/03/04 08:46
2020/03/04 10:36
0
MySQLの権限が不足しているようです。
DBに入れるのであれば、root@localhostに対してprivilegeを与えてやるとよいのではないでしょうか。
投稿2020/03/04 08:00
編集2020/03/04 08:03総合スコア6
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。