発生している問題・エラーメッセージ
Railsで作ったアプリをAWS EC2でデプロイをしようとしますが、以下エラーが発生してしまいます。
Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
試したこと
EC2のインスタンスで「mysql_config --socket」を入力
出力された「/var/lib/mysql/mysql.sock」をアプリ内のdatabase.ymlに以下として入力
production: <<: *default database: sample_production username: sample password: <%= ENV['SAMPLE_DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock
5/8追記
MySQLをインストール後に起動確認
念のためにrbenvを再インストール(Verは開発時のものと合わせる)
gem install bundlerでbundlerをインストール
gem install railsでrailsをインストール(Verは開発時のものと合わせる)
5/10
追記
以下、database.ymlの全文になります。
MySQL. Versions 5.1.10 and up are supported. # # Install the MySQL driver # gem install mysql2 # # Ensure the MySQL gem is defined in your Gemfile # gem 'mysql2' # # And be sure to use new-style password hashing: # https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html # default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock development: <<: *default database: portfolio_development # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: portfolio_test # As with config/secrets.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password as a unix environment variable when you boot # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full rundown on how to provide these environment variables in a # production deployment. # # On Heroku and other platform providers, you may have a full connection URL # available as an environment variable. For example: # # DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" # # You can use this database configuration with: # # production: # url: <%= ENV['DATABASE_URL'] %> # production: <<: *default database: sample_production username: sample password: <%= ENV['SAMPLE_DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.2を使用しています。
Qiitaの以下の記事を参考にデプロイ作業しましたが、記事ではPostgreSQLとなっており、デプロイ作業段階でもPostgreSQLにしています。
アプリ作成の時にMySQLを指定して作成してしまいましたが、これが原因でDBの整合性が取れていない、ということは考えられますか?
RailsアプリをAWS EC2にデプロイする方法(つまづきそうなポイント)
https://qiita.com/a-itabashi/items/bfdf7d92b9a371cbe45e
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。