springboot 和 mongdb连接问题 Exception in thread "main" com.mongodb.MongoSecurityException:

摘要:
情况有4种,1.你的认证方式有问题2.认证信息有误3.mongodb数据库问题4.springbootyml配置错误1.你的认证方式有问题SCRAM-SHA-1:就是mongodb3.x之后默认的认证方式,springboot2.x之后也是可以选择这种方式。如果你不是这种方式,你就要升级你的springboot版本,或者去修改你的mongdb数据库的认证方式/降低mongodb版本。你用纯javamongodb-driver包测试时,可见com.mongodb.MongoCredential类下选取的认证方式来源于如下类。publicenumAuthenticationMechanism{GSSAPI,PLAIN,MONGODB_X509,/**@deprecated*/@DeprecatedMONGODB_CR,SCRAM_SHA_1,SCRAM_SHA_256;privatestaticfinalMapAUTH_MAP=newHashMap();privatefinalStringmechanismName;privateAuthenticationMechanism{this.mechanismName=mechanismName;}2.认证信息有误如果你手动,改错数据库名或者用户名密码,你会发现也是会报这个错误。
1 Exception in thread "main" com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='user', source='userdb', password=<hidden>, mechanismProperties={}}
2 Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 你的IP:你的端口. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }

出现以上springboot 2.x连接 mongdb 3.x的情况。

直面意思,就是指认证失败。

情况有4种,

1.你的认证方式有问题

2.认证信息有误(用户名密码等配错了)

3.mongodb数据库问题

4.springboot yml配置错误


1.你的认证方式有问题

SCRAM-SHA-1:就是mongodb 3.x之后默认的认证方式,springboot 2.x之后也是可以选择这种方式。
注意:mechanism=SCRAM-SHA-1。如果你不是这种方式,你就要升级你的springboot版本,或者去修改你的mongdb数据库的认证方式/降低mongodb版本。

你用纯javamongodb-driver包测试时,可见com.mongodb.MongoCredential 类下选取的认证方式来源于如下类。
public enumAuthenticationMechanism {
    GSSAPI("GSSAPI"),
    PLAIN("PLAIN"),
    MONGODB_X509("MONGODB-X509"),
    /** @deprecated */@Deprecated
    MONGODB_CR("MONGODB-CR"),
    SCRAM_SHA_1("SCRAM-SHA-1"),
    SCRAM_SHA_256("SCRAM-SHA-256");

    private static final Map<String, AuthenticationMechanism> AUTH_MAP = newHashMap();
    private finalString mechanismName;

    privateAuthenticationMechanism(String mechanismName) {
        this.mechanismName =mechanismName;
    }

2.认证信息有误(用户名密码等配错了)

如果你手动,改错 数据库名或者用户名密码,你会发现也是会报这个错误。

3.mongdb数据库问题

用户权限问题。正确的用户创建如下:

use mydb
#没有数据库会自动创建

#在此数据库下创建用户
db.createUser(
  {
    user: "user",
    pwd: "123456",
    roles: [ { role: "readWrite", db: "mydb"} ]
  }
)

#重新进入,开启auth参数,认证通过后才能访问数据库
./mongod -f mongdb.conf --auth

db.auth("user","123456")  认证通过后可以操作数据库。

4.springboot yml配置错误

spring:
  application:
      name: test
  data:
    mongodb:
      host: 你的Ip
      username: user
      password: 123456database: user
      port: 1234
#如果你是上面这种配置方式,那么恭喜你。他根本不会成功
#正确配置是如下这种方式
     uri: mongodb://user:123456@你的Ip:1234/user

免责声明:文章转载自《springboot 和 mongdb连接问题 Exception in thread "main" com.mongodb.MongoSecurityException:》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何在centos下卸载干净nginx获取百度音乐盒里歌曲的外部链接。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SqlServer数据库存入decimal类型数据注意事项

对sqlserver而言,Decimal可用来保存具有小数点而且数值确定的数值,它不像float和real是用来保存近似值。目的是满足进行精密数学运算的需求,它是范围最大、最精确的浮点数类型。 decimal类型需要注意是要指定精度否则decimal就会和int一样只能存入整数。例如:decimal(18,2)就是存入长度18位,小数点后2位的数据。...

linux入门系列19--数据库管理系统(DBMS)之MariaDB

前面讲完Linux下一系列服务的配置和使用之后,本文简单介绍一款数据库管理系统(MySQL的兄弟)MariaDB。 如果你有MySQL或其他数据的使用经验,MariaDB使用起来将非常轻松。 本文讲解Centos7默认的数据MariaDB,由于是入门系列文章因此不会深入讲解,后面有机会在单独深入。 一、MariaDB产生背景 数据处理是软件的核心,软件的本...

sspanel搭建教程

教程演示环境及工具准备: vultr家的主机 【新用户注册可获取50美金】 CentOS 7X64 【每月5美元,无限流量】 ssh工具:xshell点击下载 1.安装宝塔面板 yum install -y wget && wget -O install.sh http://download.bt.cn/install/instal...

通过mybatis向数据库中插入日期数据

遇到的问题: 通过mybatis向数据库中插入日期格式数据,发现只有年月日, 没有小时分钟和秒 当你想在实体类中使用java.util.Date类型,而且还想在数据库中保存时分秒时, 解决办法: 你可以在xml中修改为: #{xxdate,jdbcType=TIMESTAMP} 就是将#{}中的jdbcType属性设置成TIMESTAMP,这样在保存的时候...

Sql server --触发器

概念:   触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA...

缓存三大问题的解决办法

1.缓存穿透  在大多数互联网应用中,缓存的使用方式如下图所示:       当业务系统发起某一个请求时:     首先判断缓存中是否有该数据。     如果缓存中存在,则直接返回数据。     如果缓存中不存在,则再查询数据库,然后返回数据。   了解了上述过程后,下面说说缓存穿透。   1.1 缓存穿透的危害   如果存在海量请求查询根本就不存在的数据...