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

如何在Laravel 9项目中配置.env文件连接两个MySQL数据库

Laravel 9 配置双MySQL数据库连接

1. 在.env文件中添加第二个数据库的配置

直接在现有配置下方追加第二个数据库的参数,用区分性前缀避免和第一个数据库的配置冲突:

# 第一个数据库(stores)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=stores
DB_USERNAME=root
DB_PASSWORD=****

# 第二个数据库(producers)
DB_HOST_PRODUCERS=127.0.0.1 # 若和第一个数据库同主机则保留,不同则修改为对应IP
DB_PORT_PRODUCERS=3306
DB_DATABASE_PRODUCERS=producers
DB_USERNAME_PRODUCERS=root # 不同用户名则替换为实际值
DB_PASSWORD_PRODUCERS=****

2. 修改config/database.php配置文件

在connections数组中新增第二个数据库的连接配置,读取.env里刚添加的参数:

'connections' => [

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],

    // 新增第二个数据库连接(producers)
    'mysql_producers' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_PRODUCERS_URL'),
        'host' => env('DB_HOST_PRODUCERS', '127.0.0.1'),
        'port' => env('DB_PORT_PRODUCERS', '3306'),
        'database' => env('DB_DATABASE_PRODUCERS', 'forge'),
        'username' => env('DB_USERNAME_PRODUCERS', 'forge'),
        'password' => env('DB_PASSWORD_PRODUCERS', ''),
        'unix_socket' => env('DB_SOCKET_PRODUCERS', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_PRODUCERS_ATTR_SSL_CA'),
        ]) : [],
    ],

],

3. 实际使用双数据库连接

  • 模型绑定连接:如果某个模型对应producers数据库的表,直接在模型里指定连接:
class Producer extends Model
{
    protected $connection = 'mysql_producers';
    // 其他模型代码...
}
  • 手动指定连接查询:临时查询第二个数据库时,用connection()方法切换:
// 查询producers数据库中的表数据
$producerData = DB::connection('mysql_producers')->table('producers_table')->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:05:16