如何使用mongodb localhost异常?

时间:2018-10-03 13:47:10

标签: mongodb authentication localhost authorization

来自documentation

  

localhost异常允许您启用访问控制,然后   在系统中创建第一个用户。除了本地主机例外,   启用访问控制后,连接到localhost接口   并在管理数据库中创建第一个用户。第一个用户必须   有权创建其他用户,例如具有    userAdmin userAdminAnyDatabase 角色。

所以我运行启用了访问控制(--auth)的最新mongo:

docker run -p 27017:27017 mongo --auth

连接我的外壳并尝试创建 admin 用户:

mongo
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
> use admin
switched to db admin
> db.createUser(
...   {
...     user: "admin",
...     pwd: "password",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
...   }
... )
2018-10-03T15:29:30.234+0200 E QUERY    [js] Error: couldn't add user: command createUser requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1491:15
@(shell):1:1

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您没有连接到localhost,而是连接到导出的端口。 为了使异常正常工作,您需要从容器内部连接到localhost。 例如:

docker exec -it `docker ps --filter ancestor=mongo --format "{{.ID}}"` mongo