codeigniter 连接腾讯云数据库需逐层配置:先在腾讯云控制台开通安全组与账号权限、选择内网/外网地址;再修改 application/config/database.php 中 hostname、username 等参数,使用 mysqli 驱动和 utf8mb4 字符集;最后确保 php 环境启用对应扩展并测试连通。

CodeIgniter 连接腾讯云数据库(如 TencentDB for MySQL 或 PostgreSQL)的关键在于正确配置数据库连接参数,并确保网络、权限与驱动支持到位。不是改个 host 就能通,得逐层确认。
确认腾讯云数据库访问权限
腾讯云数据库默认不开放外网访问,需手动配置:
- 进入腾讯云控制台 → 云数据库 TencentDB → 选择对应实例 → 【安全组】中放行目标服务器的公网 IP(或添加安全组规则允许对应端口,如 3306/5432)
- 在【账号管理】中创建一个应用专用数据库账号,赋予对应数据库的 SELECT/INSERT/UPDATE/DELETE 权限(避免直接用 root)
- 确认实例的【网络类型】:若 CodeIgniter 部署在腾讯云 CVM 上,优先使用内网地址(如
10.x.x.x),延迟低且更安全;若部署在本地或第三方服务器,则必须开启并验证外网地址可用
配置 CodeIgniter 的 database.php
编辑 application/config/database.php,以 MySQL 为例(PostgreSQL 类似,需额外启用扩展):
- 将
$db['default']数组中的参数替换为腾讯云实例实际信息:
$db['default'] = array( 'dsn' => '', 'hostname' => 'cdb-xxxxxx.gz.cdb.myqcloud.com', // 外网地址 或 内网地址(推荐) 'username' => 'your_app_user', 'password' => 'your_strong_password', 'database' => 'your_db_name', 'port' => 3306, 'dbdriver' => 'mysqli', // PHP7+ 推荐 mysqli;若用 PDO,设为 'pdo' 并补全 'dsn' 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8mb4', 'dbcollat' => 'utf8mb4_unicode_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
注意:务必使用 utf8mb4 字符集,避免 emoji 或生僻字乱码;若腾讯云实例已开启 SSL,可设置 'encrypt' => TRUE 并配置 CA 证书路径(需额外处理)。
腾讯云通用文字识别(高精度版)技能包。用户发送/粘贴图片、提供图片URL或要求识别图片文字时自动调用。支持中文、英文、中英混合、数字及特殊符号的检测与识别,返回文字框位置与内容。适用于文字较多、版式复杂、准召率要求高的场景。
检查 PHP 环境与扩展支持
腾讯云 CVM 或自建服务器需满足:
- PHP 版本 ≥ 7.2(CI3 建议 ≥ 7.3;CI4 要求 ≥ 7.4)
- MySQLi 扩展已启用:
php -m | grep mysqli;若无,Ubuntu/Debian 执行sudo apt install php-mysql,CentOS 执行sudo yum install php-mysqlnd - PostgreSQL 支持(如用 TBase 或 TencentDB for PostgreSQL):
sudo apt install php-pgsql,并确认pg_connect()可用 - 测试连通性:在服务器上执行
mysql -h cdb-xxx.gz.cdb.myqcloud.com -u your_user -p -P 3306,验证基础网络与认证是否通过
(可选)启用读写分离或多个数据库
若业务需要主从或跨库操作,可在同一 database.php 中定义多组配置:
$db['master'] = array( /* 主库,腾讯云主实例 */ ); $db['slave'] = array( /* 从库,腾讯云只读实例地址 */ ); $db['logdb'] = array( /* 日志库,另一套腾讯云实例 */ );
在模型或控制器中按需加载:$this->load->database('slave'); 或 $this->load->database('logdb', TRUE)(TRUE 返回 DB 对象,便于多库混用)。










