質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

2351閲覧

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13)エラー

hiroki1121

総合スコア2

MySQL

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/05/20 09:34

編集2021/05/24 05:28

前提・実現したいこと

EC2でデプロイ後hppts通信とするために、お名前.comでドメインを取得
Certificate Managerで証明書を発行し、route53でAタイプのエイリアスを「はい」に設定
ブラウザで確認すると「503 Service Temporarily Unavailable」と表示
ログを確認すると「cat unicorn.stderr.log」で下記のエラーが発生している

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) (ActiveRecord::ConnectionNotEstablished)

上記を解決したら503のエラーも解決できるか不明ですが、まずはこれを解決したいと考えております。

環境

Ruby on Rails
capistrano
EC2
Route53
Mariadb
※ローカルはMySQL

mariadbインストールの際に下記コマンドを実行

sudo yum -y install mariadb-server mysql-devel

config/database.yml

コメントアウト以外の部分を記載 ※省略 default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock development: <<: *default database: assistance_company_development ※省略 test: <<: *default database: assistance_company_test ※省略 production: <<: *default database: assistance_company_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock

cat.production.log

Started GET "/" for 58.12.189.162 at 2021-05-11 11:55:59 +0000 Processing by PostsController#index as HTML Filter chain halted as :basic_auth rendered or redirected Completed 401 Unauthorized in 5ms (Allocations: 294)

config/deploy/production.rb

server 'Elastic IP', user: 'ec2-user', roles: %w{app db web}

試したこと

【仮説1】
原因として、mysql.sockへのアクセス権限がmysqlであることが問題
【検証1】
下記コマンドを実行

sudo chmod 777 /var/lib/mysql/mysql.sock

コマンドは通ったが、エラー文等なにもかわらず

【仮説1】
httpsに変更または、ドメインを変更したときは、また別の設定が必要
→ネットで調べてみたがわからず

補足情報

プログラミング初心者で、これがAWSで初めてのデプロイとなります。
そのため、AWSの基本的な知識が足りてないだけの可能性等も考えられます。

不足する、コード等ありましたらお申し付けください。
以上、よろしくお願いします。

【追記】cat unicorn.stderr.log

unlinking existing socket=/var/www/assistance_company/tmp/sockets/unicorn.sock listening on addr=/var/www/assistance_company/tmp/sockets/unicorn.sock fd=17 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) (ActiveRecord::ConnectionNotEstablished)

【追記】/etc/nginx/conf.d/rails.conf

upstream app_server { # Unicornと連携させるための設定 server unix:/var/www/assistance_company/shared/tmp/sockets/unicorn.sock; } # {}で囲った部分をブロックと呼ぶ。サーバの設定ができる server { # このプログラムが接続を受け付けるポート番号 listen 443; # 接続を受け付けるリクエストURL ここに書いていないURLではアクセスできない server_name www.assistance-company.com; if ($http_x_forwarded_proto = 'http'){ return 301 https://$host$request_uri; } # クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガなので大きめにしておく client_max_body_size 2g; # 接続が来た際のrootディレクトリ root /var/www/assistance_company/current/public; # assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定 location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; root /var/www/assistance_company/current/public; } try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } error_page 500 502 503 504 /500.html;

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

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

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

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

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

guest

回答1

0

エラーでは /tmp/mysql.sock
実際にあるのは /var/lib/mysql/mysql.sock
だからです。
だたばせ。ymlの socket: /tmp/mysql.sockを直しましょう

投稿2021/05/20 11:49

winterboum

総合スコア23567

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

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

hiroki1121

2021/05/21 03:30

winterboumさん、ご回答ありがとうございます! 下記のように変更し、再度デプロイを行いましたが、変化ありませんでした。 ``` 【変更前】 default: &default  socket: /tmp/mysql.sock 【変更後】 default: &default  socket: /var/lib/mysql/mysql.sock ``` あんまり関係ないかもしれませんが、エラーログの前の記述を追記しております。 お手数ですが、修正方法の間違え等ありましたら、ご指摘頂けないでしょうか。
winterboum

2021/05/21 04:02

変化ない? それはおかしい。もしそうなら直した database.yml が別物です。
hiroki1121

2021/05/21 09:24

「もしそうなら直した database.yml が別物」についてもう少し具体的に教えて頂けないでしょうか。
winterboum

2021/05/21 09:40

socket: /var/lib/mysql/mysql.sock に直したのなら、エラーメッセージが Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.soc' になったのならまだわかるが Can't connect to local MySQL server through socket '/tmp/mysql.sock' のままということは おかしい
hiroki1121

2021/05/23 08:31

ご回答ありがとうございます! 私自身勉強不足な部分がありますので、もう少し考えて見たいと思います! mysql.sock以前ブラウザを更新してもunicornの更新時間が変わらないので、nginxの記述が悪いかなと感じております。。。。
winterboum

2021/05/23 09:00

エラーメッセージは本当に同じままですか?
hiroki1121

2021/05/24 02:46

サイドデプロイを行い、ブラウザを更新してもproduction.logもunicorn.stderr.logも更新時間が変わっていない状況です。 現在、ポートが開放されているかや、Nginxの設定など確認しているところです。
winterboum

2021/05/24 03:45

再起動が動いていないのでは?
hiroki1121

2021/05/24 05:25

再起動をEC2のインスタンス、MariDB,Nginxの再起動を行いましたが、logの更新時間に変化はありませんでした。 一つ確認出来たのがデプロイ時にlog/capistrano.logで下記エラーが発生しておりましたが、上記のご指摘を修正したところ、そのエラーは解消されたようです。 Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問