EC2上のRailsから、そのRailsとは別のプライベートサブネット内にあるRDS(MySQL)にrails db:create
の実行を考えています。
しかし、お馴染みのCan't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
が出てしまい、ローカル環境の時とは違い長時間解決できずにいます。
Rails <=> MySQLの本番環境時の設定について、間違っていないかご教示いただけないでしょうか。
前提事項
・EC2 => RDSへは、$mysql -h <RDSのエンドポイント> -u <ユーザー名> -p
のコマンドで接続に成功しています。
・socket '/tmp/mysql.sock' (2)
=> socket '/tmp/mysql.sock' (13)
=> socket '/tmp/mysql.sock' (111)
と推移しています。
・上記より、mysqldが動いていないと考えているのですが、RDSに対してどのようにmysqldの操作をすれば良いのかがわかりません。設定内容を記載させていただきますので、間違い等あればご教示いただきたいです。
開発環境
・macOS Monterey v12.1
・ruby v3.0.3
・Rails v6.1.4.4
・MySQL 8.0.28
インフラ構成図
関連コード
エラー文
bash
1$ rails db:create 2 3Running via Spring preloader in process 17326 4Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 5Couldn't create 'myapp_development' database. Please check your configuration. 6rake aborted! 7ActiveRecord::ConnectionNotEstablished: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 8<internal:/home/myapp/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require' 9<internal:/home/myapp/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require' 10-e:1:in `<main>' 11 12Caused by: 13Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 14<internal:/home/myapp/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require' 15<internal:/home/myapp/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require' 16-e:1:in `<main>' 17Tasks: TOP => db:create 18(See full trace by running task with --trace)
src/config/database.yml
yml
1default: &default 2 adapter: mysql2 3 encoding: utf8mb4 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: root 6 password: <%= ENV['DATABASE_PASSWORD'] %> 7 host: localhost 8 socket: /tmp/mysql.sock 9development: 10 <<: *default 11 database: myapp_development 12test: 13 <<: *default 14 database: myapp_test 15production: 16 <<: *default 17 database: myapp_production 18 username: <%= Rails.application.credentials.db[:user_name] %> 19 password: <%= Rails.application.credentials.db[:password] %> 20 host: <%= Rails.application.credentials.db[:endpoint] %> 21 pool: 20 22 port: 3306
production環境のユーザー名、ホスト名、パスワードは何度確認しても間違っていませんんでした。
また、EC2内からrails c
で$Rails.application.credentials.db[:user_name]
等を実行したところ、きちんと値が取得できていました。
etc/my.cnf
[mysqld] port=3306 socket=/tmp/mysql.sock [client] socket=/tmp/mysql.sock [mysqldump] quick [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
お手数お掛けしますが、ご教示いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/08 08:50