質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

744閲覧

EC2デプロイ挑戦中、MySQLデータベース作成できません。

annaPanda

総合スコア130

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/03/03 16:17

編集2020/03/04 03:38

表題の通りです。

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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/03/03 22:25

MySQLはEC2の中に立てていますか?別途RDSを用意した感じですか?
guest

回答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 usergrant を確認して、必要なユーザーを作って下さい。


MySQL が起動している状態で、root パスワードが分からなくなった場合の対処法

MySQL サーバを「認証無効」で起動してやることで root のログイン方法のメンテナンスができます。

  1. 現在動いている MySQL サーバを停止させる(sudo mysqladmin shutdown)
  2. 認証無効モードで起動(sudo /usr/bin/mysqld_safe --skip-grant-tables &)
  3. mysql に接続(mysql)
  4. mysql データベースを選択(use mysql)
  5. ユーザー情報の確認(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
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annaPanda

2020/03/04 03:32

回答ありがとうございます。 まず、以下のような状況なのですが、何か根本的にまちがっていますでしょうか? aaaはプロジェクトのルートディレクトリです。 ``` [ec2-user@ip-172-31-33-237 aaa]$ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [ec2-user@ip-172-31-33-237 aaa]$ sudo mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [ec2-user@ip-172-31-33-237 aaa]$ cd [ec2-user@ip-172-31-33-237 ~]$ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [ec2-user@ip-172-31-33-237 ~]$ sudo mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) ```
tacsheaven

2020/03/04 04:17

インストール時に root@localhost にパスワード設定されてしまっているのかも?
tacsheaven

2020/03/04 04:24

EC2 ですが、どの AMI から作ったものですか?
annaPanda

2020/03/04 04:28

ここでインストールしているのですが、見るべきはここですか? ``` [ec2-user@ip-172-31-33-237 ~]$ sudo yum -y install mysql-community-server 読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd 31 packages excluded due to repository priority protections 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ mysql-community-server.x86_64 0:5.7.29-1.el7 を インストール --> 依存性の処理をしています: mysql-community-common(x86-64) = 5.7.29-1.el7 のパッケージ: mysql-community-server-5.7.29-1.el7.x86_64 --> 依存性の処理をしています: mysql-community-client(x86-64) >= 5.7.9 のパッケージ: mysql-community-server-5.7.29-1.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ mysql-community-client.x86_64 0:5.7.29-1.el7 を インストール --> 依存性の処理をしています: mysql-community-libs(x86-64) >= 5.7.9 のパッケージ: mysql-community-client-5.7.29-1.el7.x86_64 --> 依存性の処理をしています: libtinfo.so.5()(64bit) のパッケージ: mysql-community-client-5.7.29-1.el7.x86_64 --> 依存性の処理をしています: libncurses.so.5()(64bit) のパッケージ: mysql-community-client-5.7.29-1.el7.x86_64 ---> パッケージ mysql-community-common.x86_64 0:5.7.29-1.el7 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ mysql-community-libs.x86_64 0:5.7.29-1.el7 を インストール ---> パッケージ ncurses-compat-libs.x86_64 0:6.0-8.20170212.amzn2.1.3 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================================================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================================================================================================================ インストール中: mysql-community-server x86_64 5.7.29-1.el7 mysql57-community 175 M 依存性関連でのインストールをします: mysql-community-client x86_64 5.7.29-1.el7 mysql57-community 26 M mysql-community-common x86_64 5.7.29-1.el7 mysql57-community 311 k mysql-community-libs x86_64 5.7.29-1.el7 mysql57-community 2.5 M ncurses-compat-libs x86_64 6.0-8.20170212.amzn2.1.3 amzn2-core 308 k トランザクションの要約 ================================================================================================================================================================================ インストール 1 パッケージ (+4 個の依存関係のパッケージ) 総ダウンロード容量: 205 M インストール容量: 882 M Downloading packages: 警告: /var/cache/yum/x86_64/2/mysql57-community/packages/mysql-community-common-5.7.29-1.el7.x86_64.rpm: ヘッダー V3 DSA/SHA1 Signature、鍵 ID 5072e1f5: NOKEY mysql-community-common-5.7.29-1.el7.x86_64.rpm の公開鍵がインストールされていません (1/5): mysql-community-common-5.7.29-1.el7.x86_64.rpm | 311 kB 00:00:00 (2/5): mysql-community-libs-5.7.29-1.el7.x86_64.rpm | 2.5 MB 00:00:00 (3/5): ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64.rpm | 308 kB 00:00:00 (4/5): mysql-community-client-5.7.29-1.el7.x86_64.rpm | 26 MB 00:00:00 (5/5): mysql-community-server-5.7.29-1.el7.x86_64.rpm | 175 MB 00:00:02 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 合計 69 MB/s | 205 MB 00:00:02 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。 Importing GPG key 0x5072E1F5: Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>" Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5 Package : mysql57-community-release-el7-7.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : mysql-community-common-5.7.29-1.el7.x86_64 1/5 インストール中 : mysql-community-libs-5.7.29-1.el7.x86_64 2/5 インストール中 : ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64 3/5 インストール中 : mysql-community-client-5.7.29-1.el7.x86_64 4/5 インストール中 : mysql-community-server-5.7.29-1.el7.x86_64 5/5 検証中 : ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64 1/5 検証中 : mysql-community-server-5.7.29-1.el7.x86_64 2/5 検証中 : mysql-community-common-5.7.29-1.el7.x86_64 3/5 検証中 : mysql-community-libs-5.7.29-1.el7.x86_64 4/5 検証中 : mysql-community-client-5.7.29-1.el7.x86_64 5/5 インストール: mysql-community-server.x86_64 0:5.7.29-1.el7 依存性関連をインストールしました: mysql-community-client.x86_64 0:5.7.29-1.el7 mysql-community-common.x86_64 0:5.7.29-1.el7 mysql-community-libs.x86_64 0:5.7.29-1.el7 ncurses-compat-libs.x86_64 0:6.0-8.20170212.amzn2.1.3 完了しました! ```
annaPanda

2020/03/04 04:35

https://gyazo.com/c0dd99a40130a3fa367c66bc70e56e5c この一番上、Amazon Linux 2 AMI (HVM), SSD Volume Type です。 あ、私の見ているカリキュラムがAmazon Linux AMI 2018.03.0 (HVM), SSD Volume Type の使用を前提としたものであることに気づきました。。
tacsheaven

2020/03/04 05:27

その AMI でインスタンスを新規作成(x86)してみましたが、 $ sudo yum -y install mysql-community-server Loaded plugins: extras_suggestions, langpacks, priorities, update-motd No package mysql-community-server available. Error: Nothing to do となり、MySQL Community Server はインストールできません。(yum list | grep mysql でも mysql サーバー系が出てこない) なので MariaDB でのインストールになるはずなのですが……作成したときの AMI が古い、のでしょうかね。 EC2 Management Console で当該インスタンスの説明の中に AMI ID がありますから、そちらが今現在の(スクリーンショットの)ものと一致しているかどうか確認してみてください。
annaPanda

2020/03/04 06:40

ちなみに上のようにmysqlのインストールがうまくいったようだったので、bundle installしたところ gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/' をしろと言われたのでするとそれでもエラー。 さらに、 mysql client is missing. You may need to 'sudo apt-get install libmariadb-dev', 'sudo apt-get install libmysqlclient-dev' or 'sudo yum install mysql-devel', and try again. と言われたので 順に行ってみると、最後の一つでうまく通ったので、 その後bundle installできたという経緯があります。
tacsheaven

2020/03/04 06:53

うーん…… yum のリポジトリを何か弄ってますね、多分。 mysql の root パスワードが分からなくなった場合の対処法を追記しましたので試してみてください。
annaPanda

2020/03/04 07:24

ありがとうございます。 最初の一手で弾かれます。 ``` [ec2-user@ip-172-31-33-237 ~]$ sudo mysqladmin shutdown mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)' ``` ちなみに ``` [ec2-user@ip-172-31-33-237 ~]$ sudo service mysqld start Redirecting to /bin/systemctl start mysqld.service ``` この状態です。。
tacsheaven

2020/03/04 07:38 編集

sudo systemctl stop mysqld.service で MySQL を止められるかと思います。そうすれば sudo mysqladmin shutdown は不要です。
annaPanda

2020/03/04 07:46

sudo /usr/sbin/mysqld_safe --skip-grant-tables & について sbin/以下にmysqld_safeがなかったので、 sudo /usr/sbin/mysqld --skip-grant-tables & とやってみたところ [1] 30827 [ec2-user@ip-172-31-33-237 ~]$ 2020-03-04T07:42:53.618460Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2020-03-04T07:42:53.620284Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.29) starting as process 30828 ... 2020-03-04T07:42:53.626526Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root! 2020-03-04T07:42:53.626653Z 0 [ERROR] Aborting 2020-03-04T07:42:53.626719Z 0 [Note] Binlog end 2020-03-04T07:42:53.626818Z 0 [Note] /usr/sbin/mysqld: Shutdown complete [1]+ 終了 1 sudo /usr/sbin/mysqld --skip-grant-tables と言われました。。
tacsheaven

2020/03/04 07:56 編集

すみません、/usr/bin/mysqld_safe です。(sbin ではない)
annaPanda

2020/03/04 08:06

ありがとうございます。 bin下にmysqld_safeがいないのですが、実際にいるのは以下です。 mysql mysql_config mysql_config-64 mysql_config_editor mysql_install_db mysql_plugin mysql_secure_installation mysql_ssl_rsa_setup mysql_tzinfo_to_sql mysql_upgrade mysqladmin mysqlbinlog mysqlcheck mysqld_pre_systemd mysqldump mysqldumpslow mysqlimport mysqlpump mysqlshow mysqlslap どれかわかりますか?
tacsheaven

2020/03/04 08:29

/usr/bin/mysqld_safe がないって普通ありえないのですが。 mysql のインストールの時点で何かおかしいですね? (mysql-server を入れると必ず入るはずのコマンドです) which mysqld_safe しても見つからないようなら、仕方が無いので /usr/sbin/mysqld --skip-grant-tables & で(sudo をつけずに)起動してみましょう。 ※セキュリティ上の理由から、root では mysqld が起動しないようになっています
annaPanda

2020/03/04 08:46

whichでもやっぱりないですね。。 [ec2-user@ip-172-31-33-237 ~]$ /usr/sbin/mysqld --skip-grant-tables & [1] 1795 [ec2-user@ip-172-31-33-237 ~]$ 2020-03-04T08:44:09.445623Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000) 2020-03-04T08:44:09.445675Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000) 2020-03-04T08:44:09.613174Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2020-03-04T08:44:09.613262Z 0 [Warning] Can't create test file /var/lib/mysql/ip-172-31-33-237.lower-test 2020-03-04T08:44:09.613299Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.29) starting as process 1795 ... 2020-03-04T08:44:09.616585Z 0 [Warning] Can't create test file /var/lib/mysql/ip-172-31-33-237.lower-test 2020-03-04T08:44:09.616603Z 0 [Warning] Can't create test file /var/lib/mysql/ip-172-31-33-237.lower-test 2020-03-04T08:44:09.616804Z 0 [ERROR] Could not open file '/var/log/mysqld.log' for error logging: Permission denied 2020-03-04T08:44:09.616832Z 0 [ERROR] Aborting 2020-03-04T08:44:09.616847Z 0 [Note] Binlog end 2020-03-04T08:44:09.616888Z 0 [Note] /usr/sbin/mysqld: Shutdown complete [1]+ 終了 1 /usr/sbin/mysqld --skip-grant-tables こうなりました。 もう初めからやり直した方がいいレベルですかね。。?
tacsheaven

2020/03/04 10:36

/var/lib/mysql 以下にファイルを生成もできないとなると、まともにインストールできてない感じがしますねえ。 多分ですが /var/log/mysqld.log が root で作成されてるのかな。 ・/var/lib/mysql というディレクトリがあるかどうか ・/var/log/mysqld.log があったら消してみる をやって、それで動くかどうかでしょうが、現状のままだと使い続けるのは怖いですね。 インスタンスをもう一度最初から作った方がよいような気がします。
guest

0

MySQLの権限が不足しているようです。
DBに入れるのであれば、root@localhostに対してprivilegeを与えてやるとよいのではないでしょうか。

投稿2020/03/04 08:00

編集2020/03/04 08:03
wuuuzy

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annaPanda

2020/03/04 11:08

回答ありがとうございます。 おそらく、chownコマンドですよね? 恐れ入りますが、書き方を教えていただいてもいいでしょうか?
annaPanda

2020/03/04 14:50

すみません、やっぱり最初からやり直すことにしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問