用户'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' 的访问
错误:java.sql.SQLException:用户'root@localhost'@'localhost'的访问被拒绝(使用密码:是)