Mongodb新建的用户登录提示认证失败

🌞问题重现

新装的mongoDB创建了一个普通读写权限的用户,使用db.auth("user", "password")返回1,没有任何问题。但是使用该账户密码连接数据库,提示mongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoError: Authentication failed.]

🌞原因

出现问题的原因是直接创建了一个不是root的用户角色(role),然后用这个用户去做的登录(authentication)。

🌞解决办法

正确的做法是:

MongoDB在第一次做权限认证的时候,需要

  1. 首先创建一个admin用户,它的角色(role)是root,示例代码:
1
2
3
4
5
6
7
8
9
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
}
);
exit;
  1. 关闭客户端连接,重新启动MongoDB,用admin登录
  2. 创建其他角色的用户,比如我想要的读写数据库db01数据库的用户user01,密码设置为pwd01

    1
    2
    3
    4
    5
    6
    7
    8
    use db01
    db.createUser(
    {
    user: "user01",
    pwd: "pwd01",
    roles: [ { role: "readWrite", db: "db01" } ]
    }
    );

这样在重新登录就没有问题了。

来源:https://segmentfault.com/q/1010000006128749

推荐文章