herokuなら比較的簡単にデプロイできると思っていましたが、甘かったです。。。
自分でもいろいろ調べてやっているのですが、なかなか解決できず、お力を貸して頂ければ幸いです。
よろしくお願いいたします。
やりたいこと
Railsで製作したアプリをHerokuにデプロイしたい。
問題
マイグレーションが実行できない。
soketファイルを通じてMySQL serverにアクセスできない。
エラー文
naota7118@Naotas-MacBook-Air-6 my_dictionary % heroku run rake db:migrate Running rake db:migrate on ⬢ mydictionary7118... up, run.4842 (Free) rake aborted! Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
ソースコード
database.yml
ruby:database.yml
1default: &default 2 adapter: mysql2 3 encoding: utf8mb4 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: ユーザー名 6 password: パスワード 7 socket: /tmp/mysql.sock 8 9production: 10 <<: *default 11 adapter: mysql2 12 database: データベース名 13 username: ユーザー名 14 password: <%= ENV['MY_DICTIONARY_DATABASE_PASSWORD'] %>
herokuの環境変数の設定
naota7118@Naotas-MacBook-Air-6 my_dictionary % heroku config === mydictionary7118 Config Vars CLEARDB_DATABASE_URL: mysql://baf5318c99fb50:********@us-cdbr-east-02.cleardb.com/heroku_9a0e8d18bd341b2?reconnect=true DATABASE_URL: mysql2://root:password@localhost/my_dictionary_production?reconnect=true DB_HOSTNAME: localhost DB_NAME: my_dictionary_production DB_PASSWORD: password DB_PORT: 3306 DB_USERNAME: root
/etc/my.cnfの設定
[mysqld] socket="/tmp/mysql.sock" [client] socket="/tmp/mysql.sock"
他の方がやっていることを試した
エラー文で調べたところ、他の方はだいたい以下のやり方で解決していました。
・MySQLが起動できていないので、起動した。
・sockファイルの権限がなかったのでchownキーで権限を付与した。
・MySQLサーバーで使用しているUnixソケットと、クライアントソフトで使用しているUnixソケットのパスが違う場合、/etc/my.cnfに設定を書き加えて合わせた。
上記を試しましたが、自分の場合は解決しませんでした。
原因の推測と試したこと
① MySQLが起動しているか確認した時に、下記のように表示されたことから、MySQLサーバーが2つ存在しているのが問題か?と考え、どちらかをkillすればいいのではと思いやってみましたが、どちらかをkillすることができず、両方killされました。
naota7118@Naotas-MacBook-Air-6 my_dictionary % ps aux | grep mysqld naota7118 81867 0.0 0.0 4277500 696 s001 S+ 2:09PM 0:00.01 grep mysqld _mysql 81863 0.0 5.4 4919640 455580 s001 S 2:09PM 0:00.73 /usr/local/Cellar/mysql@5.6/5.6.47/bin/mysqld --basedir=/usr/local/Cellar/mysql@5.6/5.6.47 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql@5.6/5.6.47/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/usr/local/var/mysql/Naotas-MacBook-Air-6.local.pid --socket=/tmp/mysql.sock root 81659 0.0 0.0 4280124 1224 s001 S 2:09PM 0:00.05 /bin/sh /usr/local/Cellar/mysql@5.6/5.6.47/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/Naotas-MacBook-Air-6.local.pid
② 原因を調べるためにMySQLのエラーログを探しました。
naota7118@Naotas-MacBook-Air-6 mysql % sudo cat Naotas-MacBook-Air-6.local.err 2020-11-22 18:39:34 64495 [Note] InnoDB: 5.6.47 started; log sequence number 19042793 MySQL5.6.47が作動しました。ログの結果番号は19042793です 2020-11-22 18:39:34 64495 [Note] RSA private key file not found: /usr/local/var/mysql//private_key.pem. Some authentication plugins will not work. /usr/local/var/mysql//private_key.pemという場所にRSA private keyファイルが見つかりません。 いくつかの認証プラグインが実行しなくなります。 2020-11-22 18:39:34 64495 [Note] RSA public key file not found: /usr/local/var/mysql//public_key.pem. Some authentication plugins will not work. /usr/local/var/mysql//public_key.pemという場所にRSA public keyファイルが見つかりません。 2020-11-22 18:39:34 64495 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306 2020-11-22 18:39:34 64495 [Note] - '127.0.0.1' resolves to '127.0.0.1'; 2020-11-22 18:39:34 64495 [Note] Server socket created on IP: '127.0.0.1'. 2020-11-22 18:39:35 64495 [Note] Event Scheduler: Loaded 0 events 2020-11-22 18:39:35 64495 [Note] /usr/local/Cellar/mysql@5.6/5.6.47/bin/mysqld: ready for connections. Version: '5.6.47' socket: '/tmp/mysql.sock' port: 3306 Homebrew 2020-11-22 19:30:34 64495 [Note] /usr/local/Cellar/mysql@5.6/5.6.47/bin/mysqld: Normal shutdown
HerokuアカウントにSSHキーを追加しました。
$ heroku keys:add ~/.ssh/id_rsa.pub
以下のように追加されたことを確認しました。
naota7118@Naotas-MacBook-Air-6 my_dictionary % heroku keys === naota7118@gmail.com keys ssh-rsa AAAAB3NzaC...9WnrYBRUk= naota7118@Naotas-MacBook-Air-6.loc
これらを試しましたが、どうしても解決できないため、質問させていただきます。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/23 06:10
2020/11/23 06:53
2020/11/23 07:03
2020/11/23 07:48
2020/11/23 08:10 編集
2020/11/23 08:12 編集
2020/11/23 09:29 編集