5月度第3回講義で提供されたサンプルアプリをEC2にデプロイするまでに遭遇したエラーについて、自分なりの解釈と解決までの手段をメモ。
エラーその1:認証パスワード有効期限切れ
Mysql2::Error: Your password has expired. To log in you must change it using a client that supports expired passwords.
Railsお抱えのMySQLクライアントからログインしようとする場合、初期パスワードは使用不可ということなんだろうか?
以下のコマンドでパスワードを変更し、これをdatabase.ymlに記述して解決した。
$ sudo mysql_secure_installation
エラーその2:mysql.sockがない
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
/tmpにmysql.sockがない(2)。
ググってみると、どうやら「ファイルがない」のが原因、つまりファイルを作ってしまえば良いとの情報が見つかった。
$ sudo touch /tmp/mysql.sock
これで解決すると思ったが、ダメだった。
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13)
今度は(13)。
そもそもmysql.sockとは何者か。
どうやらMySQLクライアントとサーバーが通信するときに使うパイプ役のファイル???みたいなものらしい。
つまり、mysql.sockファイルの在り処の認識が、クライアントとサーバーとで一致してなければならないと。
探してみると、このファイルは/var/lib/mysql/にあった。
一方、database.ymlを見てみると、/tmp/mysql.sockとなっている。
クライアントとサーバーとで、別の場所を探しに行ってしまっているのが原因。database.ymlを修正し、解決。
エラーその3:データベースがない
データベース作ればいいだけ。
ーーー
というわけで、無事デプロイ、起動確認。
ただ繋ぐだけでも結構大変。きちんと理解できてれば他人の役に立つことも書けるだろうけど、今の自分にはとても無理。
脱初心者の壁、高くない…?