##開発環境
Rails6
EC2
Mariadb
Nginx1
Unicorn
##行おうとしていたこと
EC2上でrailsを起動しようとすると
[ec2-user@ip-172-31-32-90 photo_roke]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
このエラーが出て
master failed to start, check stderr log for details
stderr logを確認
less log/unicorn.stderr.log
するとしたのエラー分が出ました
##エラー文
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
##行ったこと
エラー文からソケットがないよと言われていることを理解しました
ターミナルで今選択しているソケットを確認
[ec2-user@ip-172-31-32-90 photo_roke]$ mysql_config --socket /var/lib/mysql/mysql.sock
config.detabate.ymlにてソケットを確認
production: <<: *default database: photo_roke_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock
ここに間違いはないのでどのようにしたら良いか行き詰まってしまいました…
わかる方ご回答よろしくお願いいたします!
##追加コード
config.database.ymlファイル
の記述を全て載せておきます!!
# MySQL. Versions 5.5.8 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: photo_roke_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: photo_roke_test # As with config/credentials.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 https://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: photo_roke_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock
##追加コード
sukekeke0さんご回答ありがとうございます!
行ったことをここに記述いたします!
(1) UNIXドメインソケットファイルが存在するか?
存在していませんでした
console
1/var/lib/mysql/mysql.sock
するとファイルがないとエラーが出たので
ファイルの作り方を調べて
console
1sudo touch /var/lib/mysql/mysql.sock 2sudo chown mysql:mysql /var/lib/mysql/mysql.sock
この二つを記述
もう一度
console
1/var/lib/mysql/mysql.sock
でファイルがあるか確認
すると権限がないとエラー
権限の渡し方を調べて
console
1sudo chmod 777 /var/lib/mysql/mysql.sock
これでよかったかわかりませんが権限を渡せた…と思います!
しかしそれ以降
console
1/var/lib/mysql/mysql.sock
を入力してもメッセージが返ってこなくなりました
一度インスタンスを再起動させMariaDBも再起動させ
console
1RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
を入力すると
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
エラー文が変わりました
すごく初歩的な疑問なのですが
使っているデータベースはMariaDBなのになぜMySQLのエラーが出るのでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/13 23:52
2020/11/14 00:04
退会済みユーザー
2020/11/14 00:58 編集
退会済みユーザー
2020/11/14 00:18 編集
退会済みユーザー
2020/11/14 00:15
退会済みユーザー
2020/11/14 00:28 編集
2020/11/14 00:38
退会済みユーザー
2020/11/14 00:57
退会済みユーザー
2020/11/14 01:01
2020/11/14 01:10
退会済みユーザー
2020/11/14 01:54 編集
2020/11/14 02:02
退会済みユーザー
2020/11/14 02:28 編集
2020/11/14 02:46
退会済みユーザー
2020/11/14 02:51
退会済みユーザー
2020/11/14 02:55 編集
2020/11/14 02:59