Tp MongoDB Authentication failed. 解决方案

作者: adm 分类: php 发布时间: 2023-12-21

正常配置下,

return [
    'default' => 'mongo',
    'connections' => [
        'mongo' => [
            // 数据库类型
            'type' => 'mongo',
            // 服务器地址
            'hostname' => '127.0.0.1',
            // 数据库名
            'database' => 'cbam',
            // 数据库用户名
            'username' => 'cbam',
            // 数据库密码
            'password' => 'cbam777',
            // 数据库连接端口
            'hostport' => '27017',
            // 数据库连接参数
            'params'  => [],
            // 数据库编码默认采用utf8
            'charset' => 'utf8',
            // 数据库表前缀
            'prefix' => '',
            // 主键名
            'pk' => '_id',
            // 主键类型
            'pk_type' => 'objectID',
            // 断线重连
            'break_reconnect' => true,
            // 关闭SQL监听日志
            'trigger_sql' => false,
            // 自定义分页类
            'bootstrap' =>  ''
        ],
    ],
];

使用MongoDB数据库,会出现数据库访问权限问题,如下:

#0 [11]AuthenticationException in Mongo.php line 266
Authentication failed.

.
解决方案一:

database.php 添加 dsn配置参数
'dsn'  => 'mongodb://' .
        env('database.username', '数据库用户名') . ':' .
        env('database.password', '数据库密码') . '@' .
        env('database.hostname', '127.0.0.1') . ':' .
        env('database.hostport', '27017') . '/' .
        env('database.database', '数据库名称'),

.
解决方案二:

database.php 中的 params 项中指定认证数据库
// 数据库连接参数
'params'  => ['authSource' => env('database.database', '数据库名称')],

两种方案都可以解决,推荐方案二,更加简洁,
总结发布出来,以便有遇到类似问题的朋友查阅

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!