Tp MongoDB Authentication failed. 解决方案
正常配置下,
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', '数据库名称')],
两种方案都可以解决,推荐方案二,更加简洁,
总结发布出来,以便有遇到类似问题的朋友查阅