【问题标题】: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”用户提供所有架构权限,但这没有任何区别。请告诉我如何解决这个问题,谢谢。

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

【问题讨论】:

    标签: mysql ruby-on-rails mysql2


    【解决方案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 工作

                      【讨论】:

                        猜你喜欢
                        • 2012-01-30
                        • 2015-05-12
                        • 1970-01-01
                        • 2016-12-27
                        • 2012-06-17
                        • 1970-01-01
                        相关资源
                        最近更新 更多