2012-02-05 17 views
5

He ejecutado gem install mysql2, he añadido el archivo lib a la carpeta bin como se dice y el mysql2 está en el archivo gem. ¿Qué está mal?No puedo conectarme a MySQL en Ruby on Rails

# 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 

Respuesta

3

Se parece a un problema de control de acceso debido a sus PRIVILEGES configuración. Recuerde que localhost es un caso especial no cubierto por % al otorgar derechos, ya que se conectará a través del socket local UNIX y no al puerto 3306 TCP socket.

usted debe comprobar que puede conectarse desde la misma máquina que la aplicación se está ejecutando en el uso de la herramienta de línea de comandos mysql:

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

usted debe conseguir el mismo error que el conductor mysql2 en este punto.

Generalmente esto se fija mediante la actualización de sus donaciones:

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

Gracias! ¡Tuve que cambiar a localhost en lugar de usar 127.0.0.1 y funciona! – LuckyLuke

+0

Y por cierto tadman: ¿Cuál es la diferencia? – LuckyLuke

+0

Es una peculiaridad del mecanismo de control de acceso de MySQL. 'localhost' es un alias para" socket UNIX local "y no debe confundirse con lo que todos los demás llaman 127.0.0.1. Es posible que desee especificar 'socket:/var/lib/mysql/mysqld.sock' en su configuración, o lo que sea, para diferenciar más claramente. Puede averiguar cuál debe ser su configuración de socket usando 'SHOW VARIABLES LIKE 'socket'', que es como su servidor MySQL está configurado actualmente. – tadman