百度云rds for mysql连接需用内网/外网地址而非localhost,配置白名单、ssl证书、端口及账号权限;php须用mysqli_init()+mysqli_options()+mysqli_real_connect()支持ssl,pdo需urlencode密码并设置sslmode。

百度云数据库(Baidu Cloud Database,即 RDS for MySQL)和本地 MySQL 本质一致,但连接方式有关键区别:它默认禁用公网直连、强制 SSL(部分版本)、要求白名单 IP、且不接受 localhost 或 127.0.0.1 作为 host。直接套用本地 mysqli_connect() 参数会失败。
确认数据库访问地址和端口
百度云控制台「RDS 实例详情」页里,找到「连接信息」区块 —— 这里的 内网地址 和 外网地址 是两个不同东西:
- PHP 应用若部署在百度云轻量服务器(LS)或云服务器(BCC)上,且与 RDS 在同一地域、同一私有网络(VPC),必须用
内网地址(形如mysql-xxxxxx.sql.bj.baidubce.com),不能填127.0.0.1; - 若 PHP 运行在本地开发机(比如你笔记本),则需开启并配置
外网地址,同时把本机公网 IP 加入 RDS 的「白名单」; - 端口默认是
3306,但百度云允许自定义,务必以控制台显示为准,不要硬写3306; - 如果看到地址带端口(如
xxx:3307),说明端口已改,mysqli_connect()的port参数必须显式传入,不能省略。
检查 PHP 扩展和连接函数选择
百度云虚拟主机(BCH)或轻量服务器(LS)默认启用 mysqli,但部分老环境可能只开 pdo_mysql。别假设扩展一定就绪:
调用百度文档解析API,支持18+格式,提取文本、表格、版面分析、OCR识别及RAG文档分块。适用于文档解析、文本/表格提取、结构分析、扫描件处理。触发词:文档解析、PDF解析、Word解析、表格提取、OCR、文档分析、提取文本、文档结构、扫描识别。
- 执行
phpinfo();查看是否有mysqli或PDO模块; - 推荐优先用
mysqli,代码更直白:mysqli_connect($host, $user, $pass, $db, $port); - 若用 PDO,注意 DSN 中 host 必须带端口(即使默认 3306):
mysql:host=xxx.sql.bj.baidubce.com;port=3306;dbname=test; - 百度云 RDS 不支持旧版
mysql_*函数(PHP 7.0+ 已移除),别在代码里写mysql_connect()。
处理 SSL 强制要求和证书验证
百度云 RDS 默认开启 SSL 连接(尤其高安全版),但 PHP 的 mysqli_connect() 默认不校验证书,容易报错 SSL connection error 或静默失败:
- 最简方案:连接后立即调用
mysqli_options($conn, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false)关闭证书校验(仅限测试/内网可信环境); - 生产环境应下载百度云提供的根证书(控制台「SSL 设置」页可下载
ca.pem),然后设置:$conn = mysqli_init(); mysqli_options($conn, MYSQLI_OPT_SSL_CA, '/path/to/ca.pem'); mysqli_real_connect($conn, $host, $user, $pass, $db, $port, null, MYSQLI_CLIENT_SSL);
- 注意:
mysqli_connect()不支持传 SSL 选项,必须拆成mysqli_init() + mysqli_options() + mysqli_real_connect()三步; - 若用 PDO,DSN 后加
&sslmode=REQUIRED并配合PDO::MYSQL_ATTR_SSL_CA等属性。
白名单、账号权限和密码特殊字符
连接被拒的常见原因不是代码写错,而是权限配置卡在外部:
- RDS 白名单必须精确填写 IP:本地开发填你路由器出口 IP(非内网
192.168.x.x),云服务器填其内网 IP(不是实例公网 IP); - 创建数据库账号时,「主机」字段不能填
%就完事 —— 百度云要求明确指定来源,比如填10.0.1.%(匹配同子网)或具体 IP; - 密码含
@、/、:等字符时,PDO DSN 会解析错误,必须用urlencode()编码;mysqli_connect()则无此问题; - 百度云控制台创建的账号默认只有
SELECT权限,执行INSERT前要进「账号管理」手动授权INSERT,UPDATE,DELETE。
真正卡住的地方往往不在 PHP 代码本身,而在 RDS 控制台那几处开关:白名单、SSL 开关、账号主机限制、端口是否开放。连不上先查这四点,比反复改 mysqli_connect() 参数有效得多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










