青云不提供专属数据库服务,用户需在云主机上自行部署MySQL等开源数据库;连接时须确认主机IP、安全组规则、数据库类型与端口、bind-address配置、账号权限及字符集,PDO或ThinkPHP配置均需使用IP而非localhost。

青云(QingCloud)本身不提供名为“QingCloud Database”或“QingCloud AI Database”的专属数据库服务,也没有官方 PHP SDK 或专用连接驱动。你实际要连的,是部署在青云云主机(如 MySQL 实例)上的标准数据库——本质仍是 MySQL、PostgreSQL 或其他开源数据库,只是运行在青云 IaaS 环境里。
确认青云上数据库的真实类型和访问方式
青云不托管数据库即服务(DBaaS),所有数据库都需用户自行安装配置在云主机中。这意味着连接前必须明确:
- 你用的是哪台云主机(内网 IP 还是公网 IP?是否已开通安全组入向规则?)
- 数据库软件类型:MySQL 8.0?MariaDB?PostgreSQL?端口是否为默认(
3306/5432)? - 数据库是否监听
127.0.0.1(仅本地)还是0.0.0.0(全网可连)?很多新手卡在这一步,连不上纯粹因为没改bind-address - 用户名密码是否已创建,并授权给对应 IP(比如
'user'@'10.10.10.%'或'user'@'%')?
PDO 连接青云云主机 MySQL 的 DSN 写法
假设你已在青云云主机上装好 MySQL,开放了安全组,且账号有远程权限,那么标准 PDO 连接只需填对 DSN:
$host = '192.168.10.123'; // 青云内网 IP(推荐)或绑定的弹性公网 IP
$port = '3306';
$dbname = 'myapp';
$charset = 'utf8mb4';
<p>$dsn = "mysql:host={$host};port={$port};dbname={$dbname};charset={$charset}";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];</p><p>try {
$pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
// 注意:生产环境别直接输出 $e->getMessage()
error_log('DB connect failed: ' . $e->getMessage());
throw new RuntimeException('数据库连接失败');
}常见错误:
立即学习“PHP免费学习笔记(深入)”;
-
PDOException: SQLSTATE[HY000] [2002] Connection refused→ 主机不通,检查云主机状态、防火墙、安全组、MySQL 是否运行(systemctl status mysqld) -
Access denied for user 'xxx'@'xxx.xxx.xxx.xxx'→ 权限未授权,进 MySQL 执行:GRANT ALL ON myapp.* TO 'user'@'%' IDENTIFIED BY 'pwd'; FLUSH PRIVILEGES; - 中文乱码 → DSN 中漏写
charset=utf8mb4,或 MySQL 配置未设collation-server = utf8mb4_unicode_ci
ThinkPHP 项目中配置青云数据库
如果你用 ThinkPHP,直接改 config/database.php 即可,关键字段如下:
'type' => 'mysql', 'hostname' => '192.168.10.123', // 青云云主机内网 IP 'database' => 'myapp', 'username' => 'root', 'password' => 'your_password', 'hostport' => '3306', 'charset' => 'utf8mb4', 'prefix' => '', 'params' => [], // 若需 SSL 连接(青云支持自签证书) //'ssl' => [ // 'ca' => '/path/to/ca.pem', // 'cert' => '/path/to/client-cert.pem', // 'key' => '/path/to/client-key.pem', //],
注意点:
- 不要用
localhost—— 它会触发 Unix socket 连接,而青云云主机上 MySQL 默认不启用 socket 文件路径,应统一用 IP -
hostport必须显式写出,ThinkPHP 不会自动 fallback 到 3306(尤其当你改过端口时) - 若数据库在另一台青云云主机上,务必确认两台主机在同一个私有网络(VPC),且安全组允许该端口互通
为什么不用青云“数据库连接工具”或“控制台一键配置”?
因为青云没有这种东西。它的控制台只管云主机、磁盘、网络、安全组,数据库实例完全由你 SSH 登录后手动部署、调优、备份。所谓“青云数据库连接”,本质上就是「Linux + MySQL + 网络策略」的老实组合。最容易被忽略的其实是网络层:很多人把 MySQL 配好了、账号加好了,却忘了在青云控制台的安全组里放行 3306 入向端口(来源 IP 填你的服务器 IP 或 0.0.0.0/0,后者不推荐)。这一步漏掉,再正确的 PHP 代码也连不上。



















