我正在尝试创建一个与mongo图像组成的码头容器。我希望容器有一个名为admin
的根用户,并且还能够创建一个名为experts_db
的数据库。这是我的docker-compose.yaml
version: '3.7'
services:
mongodb:
image: mongo:4.0.4
container_name: mongodbtest
restart: always
env_file: .env
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: 123456789
MONGO_INITDB_DATABASE: experts_db
ports:
- 27017:27017
volumes:
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
下面是我的mongo-init.js
文件:
use admin;
db.createUser(
{
user: "andrea",
pwd: "123456789",
roles: [
"userAdminAnyDatabase",
"dbAdminAnyDatabase",
"readWriteAnyDatabase"
]
}
);
尽管如此,当我在mongo shell中尝试获取所有用户的列表时,我得到了以下错误:
use experts_db
switched to db experts_db
> db.getUsers()
2020-01-22T14:30:00.569+0000 E QUERY [js] Error: command usersInfo requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1763:1
@(shell):1:1
有人知道为什么会这样吗?我是mongo的新手,不知道如何解决这个问题
发布于 2020-01-23 01:42:44
我已经测试了下面的JS脚本,它可以正常工作:
db.createUser(
{
user: "aaa",
pwd: "123",
roles: [ { role: "readAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" }]
});
创建之后,您可以跳到mongoDB shell并运行db.getUsers(),以确保用户已成功创建。
发布于 2020-10-13 11:04:29
您需要删除容器中的数据/db/ volume,然后重新运行并重新构建
rm -rf data/db/
docker-compose up --build
https://stackoverflow.com/questions/59862210
复制相似问题