You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从AWS RDS迁移至STRATO后无法Ping通MariaDB服务器,求连接方案及Heroku RoR连接串

解决STRATO MariaDB连接问题及Heroku RoR配置

为什么Ping不通?

你看到的目标IP 10.244.142.224 是私有内网IP,这类地址仅能在STRATO内部网络访问,外部网络(包括你的本地机器、Heroku服务器)无法通过ping直接连通,这是正常现象,不用纠结ping的结果,重点是用数据库客户端工具验证连接。

如何连接新数据库?

1. 确认STRATO数据库的外部访问设置

  • 登录STRATO控制面板,找到数据库管理页面,检查是否开启了外部访问权限。通常需要手动添加允许访问的IP地址:
    • 本地测试:添加你的公网IP
    • Heroku应用:添加Heroku的出口IP段,或者使用Heroku固定IP插件(如Fixie)获取静态IP后添加
  • 确认数据库的公网连接域名/IP:STRATO可能会提供专门的公网访问地址,而非你当前ping的内网域名,务必在后台确认正确的连接端点。

2. 本地测试连接(可选)

使用MariaDB官方客户端工具替代ping验证:

mysql -h <STRATO公网域名> -u <数据库用户名> -p

输入密码后如果能进入数据库命令行,说明连接正常。如果失败,检查:

  • STRATO是否已将你的IP加入允许列表
  • 本地防火墙是否放行3306端口(MariaDB默认端口)

Heroku RoR应用连接字符串配置

推荐方式:使用环境变量(符合Heroku最佳实践)

在Heroku控制台设置DATABASE_URL环境变量,格式如下:

heroku config:set DATABASE_URL="mysql2://<用户名>:<密码>@<STRATO公网域名>:3306/<数据库名>?sslmode=require"

注意:如果密码包含特殊字符(如@、&、!),需要进行URL编码(例如@替换为%40,&替换为%26)

手动配置config/database.yml

如果需要在代码里配置,修改config/database.yml的production段:

production:
  adapter: mysql2
  host: <STRATO公网域名>
  database: <你的数据库名称>
  username: <数据库用户名>
  password: <数据库密码>
  port: 3306
  sslmode: require
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

同时确保Gemfile中包含mysql2 gem:

gem 'mysql2'

执行bundle install后重新部署到Heroku。

额外注意事项

  • 确认STRATO数据库的端口是否为默认的3306,若有修改需同步到配置中
  • 如果Heroku应用连接超时,检查STRATO的防火墙规则是否允许Heroku的IP访问,必要时联系STRATO客服确认
  • 迁移数据前,确保STRATO数据库的字符集、排序规则与原AWS RDS一致,避免数据乱码问题

内容的提问来源于stack exchange,提问作者Leder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:07:35