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
我在做什么错了?
答案 0 :(得分:1)
您没有连接到localhost,而是连接到导出的端口。 为了使异常正常工作,您需要从容器内部连接到localhost。 例如:
docker exec -it `docker ps --filter ancestor=mongo --format "{{.ID}}"` mongo