気ままに気ままのエンジニアブログ

定期的に得た知見を気ままに発信中

【MySQL/エラー】`connect': Can't connect to MySQL server on '~~' (Mysql2::Error)の解決方法

こんにちは。

キンモクセイの匂いがしてきました。あ〜幸せダァ!

どうもハチマキです。

はじめに

今回は、MySQLのエラー解決法に関してです。
エンジニアになりたての時は、なかなか解決できないエラーでしたが、今思えば簡単なエラーでした。日々成長を感じます。

では早速行きましょう!

本日の概要 : `connect': Can't connect to MySQL server on '~~' (Mysql2::Error)の解決方法

事象

ターミナルで、サーバを起動したいのにMySQLエラーが発生した。。
どう解決すればいいんだ。。(涙)

捕捉
  • 初歩的な発生原因は、下記のような原因が考えられます。
    • PCを再起動した時
    • PCをシステム終了し、再度起動した時

エラー例

$ bundle exec rails s
/Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/simple_form-2.1.1/lib/simple_form/inputs/boolean_input.rb:37: warning: circular argument reference - unchecked_value
=> Booting Thin
=> Rails 3.2.22.2 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.20/lib/mysql2/client.rb:70:in `connect': Can't connect to MySQL server on '~~'  (Mysql2::Error)
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.20/lib/mysql2/client.rb:70:in `initialize'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:325:in `checkout_new_connection'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:247:in `block (2 levels) in checkout'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `loop'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `block in checkout'
 from /Users/yutakayamaki/.rbenv/versions/2.2.4/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:239:in `checkout'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:102:in `block in connection'
 from /Users/yutakayamaki/.rbenv/versions/2.2.4/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:101:in `connection'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:410:in `retrieve_connection'
 from /Users/ユーザ名/アプリケーション名/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:171:in `retrieve_connection'
 ・
 ・
 ・
 省略

原因

今回の問題が発生した原因は、こいつです!!
`connect': Can't connect to MySQL server on '~~'(Mysql2::Error)とエラーログに書いてありますね。

つまりは、MySQLサーバに接続できねーぞ!と言われてます。

解決方法

なので、今回のエラーを解決するには、MySQLを起動(に接続)すれば解決です。

$ sudo mysql.server start #こちらのコマンドでMySQLを起動
Password: #パスワードを入力
Starting MySQL #MySQLが起動します
 SUCCESS! 

最後にサーバを起動すれば無事に動くことでしょう!

$ bundle exec rails s #再度サーバを起動
・
・
・