初始化

Docker 配置

1mongodb:
2  container_name: mongodb
3  image: mongo
4  command: ['mongod', '--auth']
5  volumes:
6    - mongo_data:/data/db
7  restart: always
8  ports:
9    - 27017:27017
10  env_file:
11    - .env

在默认情况下,MongoDB 是没有开启认证功能的,允许用户以匿名身份登录。
此处的 command: ['mongod', '--auth'] 表示开启 MongoDB 的认证功能,用户必须登录才能访问数据库。

配置默认用户名和密码

Docker 环境变量中添加 MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD

进入 MongoDB 控制台

通过 Docker 容器进入 MongoDB 控制台。

1docker ps
2docker exec -it [CONTAINER_ID] mongosh

切换至 admin 数据库

默认情况下,MongoDB 会创建一个名为 admin 的数据库,该数据库是 MongoDB 的管理数据库,我们可以在该数据库下创建用户,然后再切换至其他数据库。

1use admin

登录初始管理员用户

登录初始管理员用户,用户名和密码就是环境变量中配置的 MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD

1db.auth([MONGO_INITDB_ROOT_USERNAME], [MONGO_INITDB_ROOT_PASSWORD])

创建用户并赋予数据库权限

创建一个名为 mongo 的用户,密码为空,拥有 test-mongo 数据库的所有权限。

1db.createUser({
2  user: 'mongo',
3  pwd: '',
4  roles: [
5    {
6      role: 'dbOwner',
7      db: 'test-mongo'
8    }
9  ]
10})