【发布时间】:2020-10-26 22:40:42
【问题描述】:
我正在运行 Linux Ubuntu 18.04.5、mysql 服务器版本 5.7.31 和 Rails 6.0.3.4
我使用rails new classic_models -d mysql -T 制作了我的新应用
这是它为我生成的database.yml 文件:
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /var/run/mysqld/mysqld.sock
development:
<<: *default
database: classic_models_development
test:
<<: *default
database: classic_models_test
production:
<<: *default
database: classic_models_production
username: classic_models
password: <%= ENV['CLASSIC_MODELS_DATABASE_PASSWORD'] %>
当我运行bundle exec rails db:create、rails db:create 和其他db: 命令时,我收到此错误:
Access denied for user 'root'@'localhost'
Couldn't create 'classic_models_development' database. Please check your configuration.
rails aborted!
Mysql2::Error: Access denied for user 'root'@'localhost'
我认为配置文件没有为开发数据库指定密码是可以的,因为当我运行sudo mysql -p 时,我只需在提示我输入密码时按 ENTER 即可访问 mysql 提示符。而且我还运行了一些其他命令来将密码显式设置为空字符串,以确保这不是问题。
我尝试将host: localhost 添加到配置文件的默认部分,但这并没有改变任何东西。我也尝试将host: 127.0.0.1 添加到配置文件中,但这也没有帮助。
当我运行sudo mysqladmin variables | grep socket 时,显示的套接字字符串是:/var/run/mysqld/mysqld.sock,我认为这意味着配置文件的套接字位是正确的。
当我运行netstat -an | grep 3306 时,地址127.0.0.1:3306 和LISTEN 都会出现,我认为这意味着它正在侦听正确的端口。
我能想到的唯一其他可能相关的事情是,当我运行 mysql 或 mysql -p 而前面没有 sudo 时,我得到的错误包含相同的字符串:
Access denied for user 'root'@'localhost'
几个小时以来,我一直在梳理其他线程关于这里听起来像是同一问题的问题,尝试不同的事情,但还没有找到解决方案。请不要将此问题标记为重复问题并链接到任何其他页面。
如果有人能提出其他我可以尝试的建议,我将非常感激。
【问题讨论】:
标签: mysql ruby-on-rails