初始化
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_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD。
进入 MongoDB 控制台
通过 Docker 容器进入 MongoDB 控制台。
1docker ps
2docker exec -it [CONTAINER_ID] mongosh
 
切换至 admin 数据库
默认情况下,MongoDB 会创建一个名为 admin 的数据库,该数据库是 MongoDB 的管理数据库,我们可以在该数据库下创建用户,然后再切换至其他数据库。
登录初始管理员用户
登录初始管理员用户,用户名和密码就是环境变量中配置的 MONGO_INITDB_ROOT_USERNAME 和 MONGO_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})