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

如何从Centos系统VPS的PHP页面连接AWS RDS MySQL数据库?

解决PHP网页连接AWS RDS数据库报错"Unknown database"的问题

以下是针对你的情况的排查和解决步骤:

1. 严格核对数据库名称的准确性

MySQL在Linux环境下(AWS RDS默认运行在Linux系统)数据库名称区分大小写,即使你在WorkBench或终端里输入的名称看似一致,也可能存在大小写、特殊字符(比如连字符)的细微差异。

  • 在VPS终端登录RDS数据库后,执行命令:
    SHOW DATABASES;
    
    复制输出中完全匹配的数据库名称,替换PHP代码里的$dbname值,确保没有任何拼写错误。

2. 验证数据库用户的访问权限

确认你使用的user账号拥有访问目标数据库my-database的权限:

  • 终端登录RDS后执行:
    SHOW GRANTS FOR 'user'@'%';
    
    (如果你的用户仅允许VPS IP访问,将%替换为VPS的公网IP)
  • 如果输出中没有包含my-database相关的权限,执行授权命令:
    GRANT ALL PRIVILEGES ON `my-database`.* TO 'user'@'%';
    FLUSH PRIVILEGES;
    

3. 检查PHP环境的mysqli扩展状态

CyberPanel管理的PHP环境可能未启用mysqli扩展,导致无法正常连接MySQL:

  • 在你的网站根目录创建一个phpinfo.php文件,内容如下:
    <?php phpinfo(); ?>
    
  • 通过浏览器访问该文件,搜索mysqli关键词,确认扩展已启用。
  • 如果未启用,登录CyberPanel,找到对应PHP版本的设置页面,开启mysqli扩展后重启Web服务。

4. 修改代码,分步排查连接问题

将PHP代码改为先建立无数据库的连接,再手动选择数据库,以便定位具体错误:

$host = "*************.eu-west-2.rds.amazonaws.com";
$username = "user";
$password = "*************";
$port = 3306;

// 先连接不指定数据库
$conn = new mysqli($host, $username, $password, "", $port);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 手动选择数据库
if (!$conn->select_db("my-database")) {
    die("Failed to select database: " . $conn->error);
}

执行后,根据新的报错信息可以更精准判断是连接问题还是数据库权限/名称问题。

5. 确认VPS出站规则与RDS安全组

虽然终端能连接,但仍需确认:

  • VPS的防火墙(如iptables、firewalld)是否允许3306端口的出站请求:
    • 执行iptables -L -n或firewall-cmd --list-all,检查出站规则是否包含TCP 3306端口的允许条目。
  • AWS RDS的安全组入站规则是否正确包含VPS的公网IP,允许3306端口的TCP访问(终端能连接的话此步骤大概率没问题,但如果VPS IP有变动则需要更新)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:42:38