我对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'用户所有的架构权限,但这没有任何区别。请告诉我如何解决这个问题,谢谢。
如果您对我的问题有任何疑问,请询问。
答案 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() 函数将“密码”括起来)