🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

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回答

1314閲覧

awsでrailsアプリのデプロイ時にmysqlのパスワードが0000だとエラーになる。

tanamasa

総合スコア7

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

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グッド

1クリップ

投稿2019/09/20 12:39

編集2019/09/21 06:44

前提・実現したいこと

Rails(5.2.1)のアプリケーションをAWSのEC2を利用してデプロイする途中です。
DBMSはmysql(5.6)を使用しています。
デプロイはUnicornを使用しています。

アプリケーションサーバーの起動コマンドを入力すると、sockエラーになります。
恐らく原因は、mysqlのユーザーのpasswordを「000000」にしているからです。(「0000」でも無理でした。)
これを「testpass」などに変更すると問題なくRailsを動かせます。

なぜ「000000」だと通らないのか理由を知りたいです。

発生している問題・エラーメッセージ

myslq のユーザーはrootでpasswordが「000000」です。
mysql -u root -p
->000000を入力

すると問題なくmysqlはログインできます。

unicornでRailsのアプリケーションサーバーを立ち上げる時だけエラーが起きます。
passwordを0始まりでない 「testpass」などに変えると問題なく動作します。

database.ymlにはpasswordは確実に設定しており、原因はパスワードの内容であることは間違いありません。

ERROR -- : Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error::ConnectionError)

試したこと

password

000000→ダメ
0000→ダメ

testpass→いける

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

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

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

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

tanamasa

2019/09/20 13:14

返信ありがとうございます! versionは 5.6.44です。 エラー文 ``` ERROR -- : Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error::ConnectionError) ``` DBはEC2内にmysqlをインストールして使用しています。 mysqlへのログインはできます。 Railsのdatabase.ymlにpasswordをしっかりと入力しても、000000や0000だとエラーになります。
Orlofsky

2019/09/20 17:20

簡単に破られるパスワードは使うな、って親切に警告してくれてるのでしょう。 バージョンやエラーは質問に追記してください。
tanamasa

2019/09/21 05:54

すぐには確認できない状態ですが確認してみます! mysqlのユーザーはroot、パスワードは「000000」でも通ります。 >もっとも、以下が理由ではないのでしょうか。 こちらは、mysql -u root -p でログインできていれば関係がなさそうですか? Railsからmysqlのrootへアクセスできない状態ですが、バリデーションの可能性はあるのでしょうか・・
退会済みユーザー

退会済みユーザー

2019/09/21 06:17

rootで通るならば、なんというユーザー名のパスワードが「00000」でも通らない(と推測している)のですか?
tanamasa

2019/09/21 06:22

mysqlへのログインはできます。 Railsのアプリケーションサーバーを立ち上げの時やDB作成の時に、database.ymlの情報を参照してmysql繋がるのですが、そこでエラーが出ます。
tanamasa

2019/09/21 06:22

アカウントはいずれもrootですね
退会済みユーザー

退会済みユーザー

2019/09/21 06:36

database.yml を、情報を適切に隠した上で見せて下さい。
退会済みユーザー

退会済みユーザー

2019/09/21 07:08 編集

なお、勝手な推測ですが、password の値が Integer になっているのではないでしょうか。
tanamasa

2019/09/21 07:10

だと思います! stringでなければ蹴られますか?
退会済みユーザー

退会済みユーザー

2019/09/21 07:18

はい
guest

回答2

0

下記、誤って新規回答として投稿してしまいましたので、無視して下さい。

~~
念のため補足しておきますと、今回エラーが出た理由は、 Integerオブジェクト であったことが直接の原因ではありません。Integerオブジェクトの場合には、0000000 である、ということが原因です。
~~

~~
すなわち、password の値を 0 にすればログインできるはずです。
~~

~~
しかし、そのようなことに頭を使うのは骨が折れるため、(000000 というパスワードの妥当性は置いておくとして)Stringオブジェクトで渡すようにすれば問題はないでしょう。
~~

投稿2019/09/21 07:42

編集2019/09/21 07:46
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

database.ymlpassword の値が、 Integerオブジェクト になっていませんか?

投稿2019/09/21 07:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tanamasa

2019/09/21 07:40

ありがとうございます。では、数字の羅列のPASSWORDは全てNGという認識で大丈夫ですか?
退会済みユーザー

退会済みユーザー

2019/09/21 08:00 編集

念のため補足しておきますと、今回エラーが出た理由は、 Integerオブジェクト であったことが直接の原因ではありません。Integerオブジェクトの場合には、「000000」は「0」である、ということが原因です。 すなわち、MySQL側のパスワードを「0」にした上で、database.yml の password の値を「000000(Integerオブジェクト)」にすればログインできるはずです。 しかし、そのようなことに頭を使うのは骨が折れるため、(「000000」というパスワードの妥当性は置いておくとして)Stringオブジェクトで渡すようにすれば問題はないでしょう。
tanamasa

2019/09/21 07:52

integerで「000000」と設定すると→0と捉えられるという事でしょうか? なんどもすいません!
退会済みユーザー

退会済みユーザー

2019/09/21 07:57

はい。 自らで試してみることを推奨します。
tanamasa

2019/09/21 08:02

非常に助かりました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問