mysql - Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
问题描述
最近我试图更改我的 Rails 应用程序的数据库。我正在使用sqlite3,我想将其更改为MySQL。我按照本教程的步骤操作:https ://guides.rubyonrails.org/configuring.html#configuring-a-mysql-or-mariadb-database
这是我的database.yml:
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
adapter: mysql2
encoding: utf8mb4
database: blog_development
pool: 5
username: root
password:
socket: /tmp/mysql.sock
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3
production:
adapter: mysql2
advisory_locks: false
是什么导致了以下错误:Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)我需要做些什么来修复它?
解决方案
阅读您的最新评论,我注意到您遇到了一个新错误:
#<Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: NO)>
您已将开发环境下的密码字段留空。您需要做的就是使用安装mysql2时设置的相同密码填写密码,它应该这样做。
如果您忘记了密码,请查看本指南:
恢复指南,您应该:
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
进入 MySQL 后,您应键入:
use mysql;
update user set authentication_string=password('NEWPASSWORD') where user='root';
flush privileges;
exit
这应该这样做。如果你想再次登录 MySQL,你应该输入:
mysql -u root -p NEWPASSWORD
-p
代表密码。
我建议不要直接在 database.yml 文件上使用您的密码。使用密码设置环境变量然后在 database.yml 上使用它会更安全,如下所示:
username: <%= ENV.fetch("username") %>
password: <%= ENV.fetch("password") %>
如果是这种情况并且您正在运行 Linux,则必须在/etc/environment
. 在/etc/environment
你下面必须有这样的东西:
username=MYSQL_USERNAME_HERE
password=MYSQL_PASSWORD_HERE
推荐阅读
- python - 对嵌套字典中的特定元素求和
- python - python 3的scitools是否存在?
- excel - 使用 VBA 读取文本行的特定部分
- python-3.x - Tkinter 按钮在切换窗口时失去回调(类实现)(python 3.X)
- ruby-on-rails - Rails 嵌套表单未插入数据库(oracle)
- python - AttributeError:“unicode”对象没有属性 XXX
- android - Gson 返回空值
- c++ - 无法在 CMAKE 项目中使用 XercesC
- go - Prometheus 类型收集器 - 如何用我自己的数据提供地图
- css - 如何在 AngularJS 前端启用/禁用选项卡