Rails和Mysql2访问被拒绝用户'root'@'localhost'(使用密码:NO)

时间:2014-02-12 05:51:08

标签: mysql ruby-on-rails mysql2

我对Rails有些新意,我的大部分经验都让我感觉如何解决问题,所以如果我错过了明显的解决方案,我会提前道歉。我运行Windows机器。

我正在使用mysql2创建登录和注册。 MySQL安装程序已经用于安装服务器,工作台等(我将root密码配置为密码),我已经安装了mysql2 gem。

已成功捆绑导轨,但当我输入rake db:create时,错误Access denied for user 'root'@'localhost' (using password: NO)已发生。

然后Rails提示我输入密码,我输入密码但错误再次发生。在第二次输入我的密码后,似乎它工作正常,直到我尝试执行rails db:migrate,其中再次出现错误,导致无法迁移。

这让我感到困惑,因为在MySQL查询中,我的密码设置与我输入的密码相同。我尝试给'root'用户所有的架构权限,但这没有任何区别。请告诉我如何解决这个问题,谢谢。

如果您对我的问题有任何疑问,请询问。

12 个答案:

答案 0 :(得分:20)

对我帮助

$ mysql -u root -p

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword')

和databse.yml

development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: "mypassword" #I had an empty string here before

感谢@ spongezh22

答案 1 :(得分:8)

您的用户似乎无法连接到mysql数据库,请在控制台中尝试此命令

mysql -u root -p

并在提示时将密码设为“admin”

如果可以,那么你应该好好去

你的数据库yml文件应该像

development:
 adapter: mysql2
 database: mydb
 host: localhost
 username: root
 password: mypass

答案 2 :(得分:1)

我只是将上面(下面)复制并粘贴到我的rails yml文件中,然后就可以了!!

development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: mypass

答案 3 :(得分:0)

Rake尝试实际创建您的test数据库,这就是为什么在没有正确设置test数据库凭据(例如(database.yml))的情况下收到错误消息的原因

default: &default
    adapter: mysql2
    encoding: utf8
    database: atheneum
    pool: 5
    username: ******
    password: "******"
    host: localhost


development:
  <<: *default
  database: atheneum

test:
  <<: *default
  database: atheneum_test

答案 4 :(得分:0)

这是我在更改database.yml文件后不得不重启rails服务器的少数几次之一。在文件中设置密码后,我不得不重新启动rails服务器。之后,错误就消失了。

答案 5 :(得分:0)

正在为我运行./bin/spring stop。我在Github中找到了它,但不记得在哪里。

答案 6 :(得分:0)

我的问题是由于密码以“!”开头。在mysql和database.yml中更改密码可以为我解决。

答案 7 :(得分:0)

不是一个合理的答案,但是对于其他出现在这里的人:

如果您以某种方式将自己的凭据(可能是ENV文件)传递到独立脚本中,请确保密码末尾没有诸如“ \ n”之类的不可见字符。那真的会惹你。

答案 8 :(得分:0)

根据上述Bhrat的建议,我以mysql用户身份创建了Linux用户。 确保用户可以从$ user连接 将用户从数据库yml中的root更改为user 耙db:创建成功

答案 9 :(得分:0)

错误是说root用户的访问被拒绝。 (我没有密码)。 我的问题是因为我将默认的3306端口更改为8111。在database.yml中添加了ive port: 8111

答案 10 :(得分:0)

就我而言,这只是database.yml文件中的错误数据库密码。我更改了密码,效果很好。

答案 11 :(得分:0)

如果您不记得设置密码,请执行以下操作:

sudo mysql -u root

use mysql;

UPDATE user set authentication_string='MyPassword' where user='root';

这将更新您的密码。然后,更改 database/config.yml 文件以匹配您的密码。

(根据您运行的 MySQL 版本,您可能需要用 PASSWORD() 函数或 sha2() 函数将“密码”括起来)