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

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

ただいまの
回答率

90.51%

  • Ruby on Rails

    8396questions

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

unicorn mysql2エラー

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,748

esakyohum

score 6

raspberrypiにて,railsとnginxとunicrnをインストールして
bundle exec unicorn -E production -c config/unicorn.rb -D
したところ unicorn.logに
E, [2015-08-12T14:29:16.967767 #6322] ERROR -- : Access denied for user 'confirm'@'localhost' (using password: NO) (Mysql2::Error)
がでていたのですが、これは/tmp/unicorn.sockが悪いのでしょうか?
しかしunicorn.sockには全く何も書かれていません

ちなみにunicorn.rbのエラー文は以下です
I, [2015-08-12T14:29:06.599344 #6322]  INFO -- : Refreshing Gem list
I, [2015-08-12T14:29:16.952676 #6322]  INFO -- : unlinking existing socket=/tmp/unicorn.sock
I, [2015-08-12T14:29:16.953660 #6322]  INFO -- : listening on addr=/tmp/unicorn.sock fd=11
E, [2015-08-12T14:29:16.967767 #6322] ERROR -- : Access denied for user 'confirm'@'localhost' (using password: NO) (Mysql2::Error)
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18/lib/mysql2/client.rb:70:in `connect'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/mysql2-0.3.18/lib/mysql2/client.rb:70:in `initialize'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `new'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `mysql2_connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `checkout_new_connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `acquire_connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:349:in `block in checkout'
/usr/local/rbenv/versions/2.2.2/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:348:in `checkout'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:263:in `block in connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:262:in `connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:567:in `retrieve_connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:87:in `connection'
config/unicorn.rb:18:in `block in reload'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/unicorn-4.9.0/lib/unicorn/http_server.rb:523:in `call'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/unicorn-4.9.0/lib/unicorn/http_server.rb:523:in `spawn_missing_workers'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/unicorn-4.9.0/lib/unicorn/http_server.rb:140:in `start'
/usr/local/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/unicorn-4.9.0/bin/unicorn_rails:209:in `<top (required)>'
/usr/local/rbenv/versions/2.2.2/bin/unicorn_rails:23:in `load'
/usr/local/rbenv/versions/2.2.2/bin/unicorn_rails:23:in `<main>'


unicorn.rbは以下です
# -*- coding: utf-8 -*-
# ワーカーの数
worker_processes 2

# ソケット
listen  '/tmp/unicorn.sock'
pid     '/tmp/unicorn.pid'

# ログ
log = 'album/log/unicorn.log'
stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])
stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT'])

preload_app true
GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true

before_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!

old_pid = "#{ server.config[:pid] }.oldbin"
unless old_pid == server.pid
  begin
   sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
   Process.kill :QUIT, File.read(old_pid).to_i
   rescue Errno::ENOENT, Errno::ESRCH
  end
end
end

after_fork do |server, worker|
    defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end


raspberry piですが、ubuntuとほとんど変わらないのでubuntuなら分かるという方でもおねがいします。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

E, [2015-08-12T14:29:16.967767 #6322] ERROR -- : Access denied for user 'confirm'@'localhost' (using password: NO) (Mysql2::Error) というエラー内容は、confirmというユーザーでMySQLに接続する権限がないというエラーです。

アプリ側のMySQLに接続するための設定を見なおしたり、MySQLの設定を見なおしてみてはいかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/13 00:48

    それはconfig/database.ymlのことでしょうか?

    キャンセル

  • 2015/08/13 01:04

    そうです。RailsからMySQLに接続できていないので、MySQLの方のユーザー設定も見なおしてみてください。

    キャンセル

  • 2015/08/13 01:47


    rails g model でmodelを作ってrake db:migrateしてみましたが、
    成功できたので、多分問題はないと思いますが、確認のためdatabase.ymlの中身も
    ご確認をおねがいします。
    なおpasswordのところは消しています。

    default: &default
    adapter: mysql2
    encoding: utf8
    pool: 5
    username: root
    password:
    socket: /var/run/mysqld/mysqld.sock
    database: bbs_dev

    不思議に思ったのが、エラー文ではconfirmというアカウントでログインしようとしているのですが、
    database.ymlでは、rootでログインしていて、しかもconfirmというアカウントは一度も設定した記憶がないのです。


    よろしくお願いします

    キャンセル

  • 2015/08/13 07:13

    bundle exec unicorn -E production -c config/unicorn.rb -D

    と実行しているので、設定はproduction環境のものを読み込んでます。-E productionを外して実行するとどうなりますか?

    rake db:migrationは多分default環境の設定を読み込めているので接続できているのではないでしょうか?

    キャンセル

  • 2015/08/14 01:25

    やっと理解できました。
    どうやらdatabase.ymlの設定がイマイチできていなかったようです。
    どうやら初歩的なものでした。
    ありがとうございました

    キャンセル

  • 2015/08/14 01:34

    問題に初歩的も上級者向けもないですよ。解決できてよかったです。お疲れ様でした。

    キャンセル

同じタグがついた質問を見る

  • Ruby on Rails

    8396questions

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