mongo 以docker运行,给所有db自动配置用户权限
[toc]
docker 运行时启动授权模式
docker 运行时加上 环境变量MONGO_INITDB_ROOT_USERNAME 和MONGO_INITDB_ROOT_PASSWORD 会自动启动授权
docker run -d --name my_mongo -v /var/lib/mongo:/data/db -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=your_user -e MONGO_INITDB_ROOT_PASSWORD=your_password mongo:3.4-jessie
mongo db 的权限自动设置
mongo 每个db都有自己独立的权限设置,如果需要给所有的db 都加上读写权限,该如何设置呢?
在 admin db上添加用户,并赋予读写所有db的权限.
如下所示 创建了两个用户,一个是只读用户,一个是读写用户
db.createUser(
{
user: "reader",
pwd: "xxxxxx",
roles: [ { role: "readAnyDatabase", db: "admin" } ]
}
)
db.createUser(
{
user: "readWriter",
pwd: "xxxxxx",
roles: [ { role: "readWriteAnyDatabase", db: "admin" } ]
}
)
将以上脚本保存为mongo_users.js 可以自动化执行添加用户操作:
mongo mongo_server_ip:27017/admin mongo_users.js -u "your_user" -p "your_admin" --authenticationDatabase "admin"
参考
[docker mongo] https://hub.docker.com/_/mongo/
[mongo db文档](https://docs.mongodb.com/manual/reference/method/db.createUser/)