2012-02-05 18 views
5

Gem install mysql2'yi çalıştırdım, lib dosyasını bin klasörüne dediği gibi ekledim ve mysql2 gem dosyasında. Yanlış olan ne?Ruby on Rails'teki MySQL'e bağlanılamıyor

# MySQL. Versions 4.1 and 5.0 are recommended. 
# 
# 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: 
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html 
development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: dealers 
    pool: 5 
    username: fredric 
    password: test 
    host: localhost 

Mysql2::Error (Access denied for user 'fredric'@'localhost' (using password: YES)): 
    mysql2-0.3.11-x86 (mingw32) lib/mysql2/client.rb:44:in `connect' 
    mysql2-0.3.11-x86 (mingw32) lib/mysql2/client.rb:44:in `initialize' 
    activerecord (3.2.1) lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new' 
    activerecord (3.2.1) lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:277:in `new_connection' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:287:in `checkout_new_connection' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:235:in `block (2 levels) in checkout' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:230:in `loop' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:230:in `block in checkout' 
    C:/Ruby193/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:229:in `checkout' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in `retrieve_connection' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection' 
    activerecord (3.2.1) lib/active_record/query_cache.rb:67:in `rescue in call' 
    activerecord (3.2.1) lib/active_record/query_cache.rb:61:in `call' 
    activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call' 
    actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' 
    activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__874471498__call__280582312__callbacks' 
    activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback' 
    activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' 
    activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' 
    actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
    actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:65:in `call' 
    actionpack (3.2.1) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' 
    actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' 
    actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
    railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app' 
    railties (3.2.1) lib/rails/rack/logger.rb:16:in `call' 
    actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
    rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' 
    rack (1.4.1) lib/rack/runtime.rb:17:in `call' 
    activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
    rack (1.4.1) lib/rack/lock.rb:15:in `call' 
    actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call' 
    railties (3.2.1) lib/rails/engine.rb:479:in `call' 
    railties (3.2.1) lib/rails/application.rb:220:in `call' 
    rack (1.4.1) lib/rack/content_length.rb:14:in `call' 
    railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call' 
    rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' 
    C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' 
    C:/Ruby193/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
    C:/Ruby193/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' 


    Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (3.0ms) 
    Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (39.0ms) 
    Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (108.0ms) 
[2012-02-05 20:30:54] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 

cevap

3

O bir erişim kontrol sorunu gibi görünüyor nedeniyle PRIVILEGES ayarlarına. localhost'un % tarafından kapsanmayan özel bir durum olduğunu unutmayın, yerel UNIX soketine bağlanacak ve bağlantı noktası 3306 TCP soketine bağlanmadığı için haklar verilir.

Sen app mysql komut satırı aracını kullanarak üzerinde çalıştığı aynı makineden bağlanabileceğini kontrol etmelidir:

mysql --user=frederic --password=test dealers 

Bu noktada Mysql2 sürücüsü olarak aynı hatayı almalısınız.

Genellikle bu hibe güncelleyerek sabittir:

GRANT ALL PRIVILEGES ON dealers.* to `frederic`@`localhost` IDENTIFIED BY 'test' 
+0

teşekkür ederiz! 127.0.0.1 yerine localhost'a geçmek zorunda kaldım ve işe yarıyor! – LuckyLuke

+0

Ve bu arada tadman: Fark nedir? – LuckyLuke

+0

MySQL'in erişim kontrol mekanizmasının bir tuhaflığı. "localhost", "yerel UNIX yuvası" için bir takma addır ve herkesin 127.0.0.1 olarak adlandırdığı şeyle karıştırılmaması gerekir. Konfigürasyonunuzda 'socket:/var/lib/mysql/mysqld.sock' ya da gerçekte ne olursa olsun daha net bir şekilde ayırt etmek isteyebilirsiniz. Soket ayarınızın MySQL sunucunuzun halihazırda yapılandırılmış hali olan 'GÖSTER DEĞİŞTİRİ GİBİ 'soketini' kullanması gerektiğini öğrenebilirsiniz. – tadman