Yii2怎样连接数据库配置_Yii2连接数据库配置方法【数据库】

夏辰同学_1815

夏辰同学_1815

2026-04-12

485人浏览

原创

Yii2数据库连接配置有五种方法:一、通过config/db.php单独定义并引入;二、在config/web.php中内联配置;三、配置多个数据库连接并指定组件ID;四、配置主从分离架构;五、通过环境变量动态注入敏感凭证。

yii2怎样连接数据库配置_yii2连接数据库配置方法【数据库】

如果您在 Yii2 项目中无法执行数据库查询或 ActiveRecord 报错“Unknown Component ID: db”,则很可能是数据库连接未正确注册到应用组件中。以下是配置 Yii2 数据库连接的多种方法:

一、在 config/db.php 中单独定义并引入

该方式将数据库配置集中管理,便于多环境切换与复用。需确保 config/web.php(或 config/main.php)中通过 require 引入该文件,并将其赋值给 components['db'] 键。

1、在 config/db.php 文件中编写标准连接数组,返回包含 class、dsn、username、password 的配置:

2、在 config/web.php 的 components 区域添加:'db' => require(__DIR__ . '/db.php'),

3、验证是否生效:在任意控制器中执行 var_dump(Yii::$app->db);,应输出 yii\db\Connection 实例对象。

二、直接在 config/web.php 的 components 中内联配置

适用于简单项目或快速调试场景,避免额外文件依赖。所有数据库连接参数直接写入主配置文件的 components 数组内,结构清晰且立即生效。

1、打开 config/web.php,定位到 components 数组;

2、插入 db 键,值为完整连接配置数组,例如:
'db' => [
  'class' => 'yii\db\Connection',
  'dsn' => 'mysql:host=localhost;dbname=test;charset=utf8mb4',
  'username' => 'root',
  'password' => getenv('DB_PASSWORD') ?: 'root',
  'charset' => 'utf8mb4',
],

3、确认该配置位于 components 数组内部,且未被注释或包裹在条件判断外。

三、配置多个数据库连接

当项目需同时访问多个数据库(如业务库 + 日志库 + 统计库),可通过为每个连接分配唯一组件 ID(如 db2、logdb、statdb)实现隔离使用,各模型可指定其专属连接。

1、在 config/web.php 的 components 中新增第二个连接项,ID 不得为 db,例如:
'logdb' => [
  'class' => 'yii\db\Connection',
  'dsn' => 'mysql:host=localhost;dbname=logs',
  'username' => 'logger',
  'password' => 'logpass',
],

2、在对应模型类中重写 getDb() 方法,显式返回该连接:
public static function getDb()
{
  return Yii::$app->get('logdb');
}

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载

3、调用时使用该模型的 ActiveRecord 查询,例如 LogEntry::find()->all() 将自动使用 logdb 连接。

四、配置主从分离数据库

该方式用于读写分离架构,所有写操作走 master,读操作按策略分发至 slave,提升高并发下的数据库吞吐能力。Yii2 原生支持此模式,无需第三方扩展。

1、在 components 中定义一个 db 组件,class 仍为 yii\db\Connection,但结构升级为含 master/slave 配置的对象;

2、设置 masters 数组,每个元素为一个主库 DSN 配置,例如:
'masters' => [[
  'dsn' => 'mysql:host=master1;dbname=app',
  'username' => 'rw_user',
  'password' => 'rw_pass',
]],

3、设置 slaves 数组,每个元素为一个从库 DSN 配置,例如:
'slaves' => [[
  'dsn' => 'mysql:host=slave1;dbname=app',
  'username' => 'ro_user',
  'password' => 'ro_pass',
], [
  'dsn' => 'mysql:host=slave2;dbname=app',
  'username' => 'ro_user',
  'password' => 'ro_pass',
]],

4、执行读操作(如 find()、count())时,Yii2 自动路由至 slave;执行 save()、delete() 等写操作时,强制使用 master。

五、通过环境变量动态注入敏感凭证

避免将数据库密码硬编码在配置文件中,提高安全性。利用 getenv() 函数从系统环境或 .env 文件中提取值,实现配置与凭证分离。

1、在服务器或本地环境中设置环境变量,例如 Linux 下执行:
export DB_PASSWORD="my_secure_pass"

2、在数据库配置中使用 getenv() 获取,若未设置则提供默认值(仅限开发环境):
'password' => getenv('DB_PASSWORD') ?: 'root',

3、部署至生产环境前,确保环境变量已由运维流程注入,且配置中无明文密码残留。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

yii

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2865

3

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2023.08.14

4021

10

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

2023.08.31

3191

3

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.05

1007

5

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

2787

5

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

2023.10.16

2787

4

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

2023.10.16

2933

3

vb连接数据库的方法
vb连接数据库的方法

vb连接数据库的方法有使用ADO对象库、使用OLEDB数据提供程序、使用ODBC数据源等。详细介绍:1、使用ADO对象库方法,ADO是一种用于访问数据库的COM组件,可以通过ADO连接数据库并执行SQL语句。可以使用ADODB.Connection对象来建立与数据库的连接,然后使用ADODB.Recordset对象来执行查询和操作数据;2、使用OLEDB数据提供程序方法等等。

2023.10.19

2601

3

mdf文件导入数据库的方法
mdf文件导入数据库的方法

mdf文件导入数据库的方法有使用SQL Server Management Studio、使用SQL Server命令行工具、使用SQL Server Integration Services等方法。想了解更多mdf文件导入数据库的方法的相关内容,可以阅读本专题下面的文章。

2023.10.23

2833

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习