Rails 5.2.0切换至mysql2遇SSL连接错误,寻求解决方案
解决Rails切换MySQL时的SSL连接错误
嘿,我刚接触Rails+MySQL的时候也踩过这个SSL连接的坑,给你几个实用的解决思路:
直接禁用SSL连接(本地开发最常用的方案)
本地开发环境下,MySQL默认一般没开启SSL,但Rails的mysql2适配器会默认尝试用SSL连接,这就导致了这个错误。你只需要在database.yml的default配置块里加上一行禁用SSL的配置就行:default: &default # 其他原有配置不变 sslmode: disable修改完之后重启Rails服务器,应该就能正常连接了。
检查MySQL Socket路径是否正确
你的配置里写的是/tmp/mysql.sock,但不同系统或MySQL安装方式的socket路径可能不一样:- macOS用Homebrew装的MySQL,socket路径通常是
/opt/homebrew/var/mysql/mysql.sock - Linux系统可能是
/var/run/mysqld/mysqld.sock
你可以通过执行mysql_config --socket命令查看当前MySQL的正确socket路径,然后替换掉database.yml里的对应值。
- macOS用Homebrew装的MySQL,socket路径通常是
确认MySQL服务是否正常运行
先试试用MySQL客户端直接连接测试:mysql -u root -p123456 -h 127.0.0.1 -P 3306如果客户端也连不上,那说明是MySQL服务本身没启动,或者账号密码有问题。可以用以下命令启动服务:
- macOS:
brew services start mysql - Linux:
sudo systemctl start mysql
- macOS:
修改后的完整database.yml示例:
default: &default adapter: mysql2 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> encoding: utf8 reconnect: true host: 127.0.0.1 port: 3306 username: root password: 123456 socket: /tmp/mysql.sock sslmode: disable development: <<: *default database: beginner_dev test: <<: *default database: beginner_test production: <<: *default database: beginner_prod
内容的提问来源于stack exchange,提问作者C. Gabriel
相关产品推荐
相关产品推荐

