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

Posted

技术标签:

【中文标题】用户\'root\'@\'localhost\'的Rails和Mysql2访问被拒绝(使用密码:否)【英文标题】:Rails and Mysql2 Access denied for user 'root'@'localhost' (using password: NO)用户'root'@'localhost'的Rails和Mysql2访问被拒绝(使用密码:否) 【发布时间】:2014-03-10 07:04:32 【问题描述】:

我对 Rails 有点陌生,我的大部分经验都涉及到如何解决问题,所以如果我错过了明显的解决方案,我提前道歉。我运行一台 Windows 机器。

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

rails绑定成功,但是当我输入rake db:create时,出现错误Access denied for user 'root'@'localhost' (using password: NO)

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

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

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

【问题讨论】:

【参考方案1】:

对我有帮助

$ 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

【讨论】:

如果您的密码以 !字符。 @zombie_ghast 它对我不起作用。当我运行 mysql -u root -p 时它仍然要求输入密码,密码与我在安装过程中设置的相同。请帮我解决这个问题。 不要忘记分号:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword');【参考方案2】:

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

mysql -u root -p

并在提示时输入密码为“管理员”

如果这是可能的,那么你应该很高兴

你的数据库 yml 文件应该是这样的

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

【讨论】:

谢谢,这似乎解决了迁移问题,但现在我将路由文件更改为 Login::Application.routes.draw do resources :users get '/register' root 'users#index',当我这样做时,rails s 发生了一个大错误 该错误对于评论大小来说太大了,但我尝试重新安装所有内容,当我使用 mysql 创建一个新程序并执行 rails s 时,浏览器显示 Mysql2::Error Access denied for user 'root '@'localhost'(使用密码:否) Rails.root:C:/Sites/rails_projects/practice。我会假设我错过了在 Mysql 工作台中做某事,但我不确定它可能是什么。 @Bharatsoni Mysql 工作台有命令SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword') 如果此信息有帮助【参考方案3】:

我刚刚将上面(下面)的内容复制并粘贴到我的 rails yml 文件中,它工作了!!

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

运行 ./bin/spring stop 为我修复。我在 Github 上找到的,但不记得在哪里。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

不是 Rails 的答案,而是在这里出现的其他人:

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

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

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

sudo mysql -u root

use mysql;

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

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

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

【讨论】:

【参考方案12】:

根据上述 Bhrat 的建议,我在 mysql 中创建了我的 linux 用户作为用户。 确保用户可以从 $user 连接 将用户从数据库 yml 中的 root 更改为用户 rake db:create 工作

【讨论】:

以上是关于用户'root'@'localhost'的Rails和Mysql2访问被拒绝(使用密码:否)的主要内容,如果未能解决你的问题,请参考以下文章

错误 1698 (28000): 拒绝用户 'root'@'localhost' 的访问

用户 'root'@'localhost' 的访问被拒绝

用户'root'@'localhost'的访问被拒绝)

错误:java.sql.SQLException:用户'root@localhost'@'localhost'的访问被拒绝(使用密码:是)

用户'root'@'localhost'的MYSQL访问被拒绝

用户'root'@'localhost'的访问被拒绝(使用密码:YES)