codeigniter 配置数据库端口需在 application/config/database.php 中为 'default' 等数据库组显式设置 'port' 键,如 $db'default' = 3307;省略则使用驱动默认端口;dsn 方式下该配置被忽略。

CodeIgniter 配置数据库端口,关键是在 application/config/database.php 文件中为对应数据库组(如 'default')明确设置 'port' 键值。
这个配置项不是默认必填的,但当你的数据库服务运行在非标准端口(例如 MySQL 默认是 3306,PostgreSQL 是 5432),或者你使用云数据库、Docker、SAE 等环境时,就必须显式指定端口号,否则连接会失败或超时。
数据库端口配置方式
在 $db['default'] 数组中添加或修改:
$db['default']['port'] = 3307; // MySQL 示例:使用 3307 端口 // 或 $db['default']['port'] = '5432'; // PostgreSQL,字符串或整数均可 // 或适配 SAE 环境(自动获取) $db['default']['port'] = SAE_MYSQL_PORT;
✅ 注意点:
- 端口号可以是整数(如
3306)或字符串(如'3306'),CI 内部会统一处理; - 如果省略该配置,CI 会使用各驱动的默认端口(如
mysqli默认 3306,postgre默认 5432); - 使用
'pconnect' => FALSE更稳妥,尤其在非标准端口下,避免持久连接复用旧配置导致异常; - 若使用 DSN 连接(
'dsn'字段),端口应写在 DSN 字符串里(如mysql:host=localhost;port=3307;dbname=test),此时'port'键会被忽略。
常见场景示例
-
本地 XAMPP/WAMP(MySQL 改为 3307)
$db['default']['hostname'] = 'localhost'; $db['default']['port'] = 3307; $db['default']['dbdriver'] = 'mysqli';
-
PostgreSQL(自定义端口)
$db['default']['dbdriver'] = 'postgre'; $db['default']['port'] = 5433;
-
阿里云 RDS / 腾讯云 CDB
$db['default']['hostname'] = 'xxxxxx.mysql.rds.aliyuncs.com'; $db['default']['port'] = 3306; // 通常仍是 3306,但务必以控制台显示为准
-
Docker 容器内 MySQL(宿主机映射到 3308)
$db['default']['hostname'] = 'host.docker.internal'; // Docker for Mac/Win $db['default']['port'] = 3308;
验证端口是否生效
可在控制器中临时测试连接细节:
var_dump($this->db->port); // 输出实际使用的端口号 echo $this->db->hostname . ':' . $this->db->port; // 查看完整地址
如果连接失败,检查:
- 端口是否被防火墙/安全组拦截;
- 数据库服务是否确实在该端口监听(如
netstat -tuln | grep :3307); - 用户是否有远程访问权限(尤其云数据库需手动授权 IP)。
不复杂但容易忽略。











