docker-mongo添加用户名密码

docker-compose文件

version: "2"
services:
  mongo:
    image:  mongo:3.2.4
    container_name: mongo
    #command: mongod --auth
    mem_limit: 1g
    restart: always
    ports:
     - "37017:27017/tcp"
    volumes:
     - /etc/localtime:/etc/localtime
     - $PWD/data/db:/data/db

mongo不开启验证权限启动

  1. 检查docker-compose.yml文件 如果有command: mongod --auth 这一行,注释掉;如没有或者已注释,跳转步骤2)
  2. 重启mongo
    docker-compose up -d mongo

添加用户(需要为每个数据库添加用户)

  1. 进入mongo的docker容器,命令:
    docker exec -it mongo bash
  2. 进入mongo,命令:
    mongo
    docker-mongo添加用户名密码

首先在admin数据库里创建一个root用户

use admin
db.createUser({user:"root",pwd:"xxxx",roles:["root"]})

再为其他每个数据库添加同样的用户

有多少个数据库,就要创建多少个用户,因为一但开启权限验证,没有创建用户的数据库,将无法验证链接
查询mongo所有数据库名称
show dbs

use other_db
db.createUser({user:"root",pwd:"xxxx",roles:["readWrite"]})
db.createUser({user:"root",pwd:"xxxx",roles:[{role:"readWrite",db:"other_db"}]})
每个数据库均可创建不同的用户名和密码,但是为了方便统一管理,一般都是创建为相同的,如果有为了安全性的考虑,可以创建不同的用户密码,role 表示当前用户,在此数据库拥有的权限

创建成功后的输出
docker-mongo添加用户名密码

没有开启验证之前,可以*创建数据库,一般如果指定的数据库不存在,会自动创建
开启验证之后,需要手动创建数据库,然后代码链接指定的数据库和账号密码进行数据操作
db.createUser({user: "AUser",pwd: "123456",roles: [{role: "readWrite",db: "account"}]})
创建 account 数据库,用户: AUser 密码: 123456
use account
db.auth("AUser","123456")
随便插入一条数据
db.user.insert({"loginname":"zhangsan","age":"25"})

> show dbs
account  0.000GB
admin    0.000GB
local    0.000GB

那么就可以再代码里通过授权验证链接account数据库了

删除数据库
进入需要删除的数据库,执行删除命令
use account
db.dropDatabase()

创建完成后,执行以下命令检查是否创建成功

use admin
db.system.users.find()
正常情况下应返回创建用户信息的结果

如添加了错误的用户,可以通过以下命令移除

db.system.users.remove({user:"AUser"})
或者删除指定数据库下面的用户<鉴于多个数据库相同用户的情况下>
use account
db.dropUser("AUser")

开启权限重启mongo

修改docker-compose.yml文件,去掉刚才command: mongod --auth 的注释

重启mongo

docker-compose up -d

启动后登入docker,检查

docker exec -it mongo bash
mongo
use account
db.auth("ttx","ttx2011")
返回1则表示成功

上一篇:scrapy-redis分布式爬取 读取redis数据库中内容存储到mongo


下一篇:逻辑运算符,位运算符,三元运算符和包机制