初始化
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})