2014-01-23 128 views
0

我在Fedora 20上运行针对Apache的&的MySQL(玛丽亚DB) 它的工作没有问题,直到最近的一次更新到Fedora Rails应用程序,事后通勤失败,这个错误Rails的客运及MySQL的访问被拒绝的用户

Web应用程序无法启动

访问被拒绝的用户 '用户' @ 'localhost' 的数据库 'TheDB' (Mysql2 ::错误)

使用的WEBrick正常工作从命令行运行轨道,也可能与

的mysql -u用户-h loalhost米-p

重新安装乘客& mysql2宝石没有帮助连接到MySQL

解决这个我借鉴了完全空白的几个小时后什么尝试

我会欢迎任何想法

+0

in mysql.User在用户“user”的字段Host中的值是什么? mysql -u用户-h REAL_IP是否也适用? (http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind- address) – aconrad

+0

您是使用tcp/ip连接还是通过UNIX套接字进行连接? – davidb

+0

@aconrad:它使用真正的IP工作 – Eli

回答

1

如果您可以通过命令行使用正确的用户名和密码进行连接,但脚本无法使用相同凭据进行连接,请检查数据库mysql,表用户以获取Host列中的正确值。

SELECT Host FROM mysql.user WHERE User='myusername'; 

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html来自:

身份检验是使用三个用户表范围 列(主机,用户,和密码)来进行。服务器接受连接 仅在某些用户表行的主机用户列匹配 客户主机名用户名和客户端提供该行中指定的密码 。

检查是否sorting rules不影响你:

服务器使用相匹配的客户端主机名和用户名第一行

0

我面临完全相同的问题。同时设置ror应用程序所有rake命令都正常工作。只需简单地输入“mysql”就可以从linux控制台轻松访问mysql,并将其发送到mysql控制台,并且database.yml使用具有空密码的root用户。

完全相同的设置工作在其他开发实例,但花了一整天后,我得到了解决方案。

当我们在数据库中使用以下配置。阳明海运

*evelopment: &development 
    adapter: mysql2 
    database: development 
    encoding: utf8 
    username: root 
    password: 
    host: localhost 
    socket: /var/run/mysqld/mysqld.sock* 

然后应用程序试图连接到MySQL作为“的mysql -u根-h localhost”的,在我的情况下,这个命令是给下面的错误。

*$mysql -u root -h 127.0.0.1 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'* 

用以下方式调整root用户后,问题解决。

*sudo mysql -u root 
use mysql; 
update user set plugin='' where User='root'; 
flush privileges; 
exit;*