具有Docker身份验证的MongoDB

Aqi*_*ash 2 authentication mongodb docker

我已经用MongoDB Image设置了一个docker。默认情况下,没有设置密码。我创建了一个用户并为其分配了角色,效果很好。但是问题在于,无需身份验证仍然可以建立连接。

  1. 使用身份验证>正确的用户名,正确的密码->已连接进行连接

  2. 使用身份验证连接>用户名正确,密码错误->连接失败

  3. 未经身份验证的连接>已连接

我要第三点停止工作。

Aks*_*hta 5

步骤:

-1)运行没有身份验证的docker实例

    $ docker run --name容器名称-d -p 27017:27017 -v〜/ mongodb:/ data / db mongo

2)创建一个具有管理员角色的主要管理员用户

    $ mongo-端口27017
    $使用管理员;
    $ db.createUser({user:“ adminUserName”,pwd:“ adminPassword”,roles:[{角色:“ userAdminAnyDatabase”,db:“ admin”}})

这将在管理数据库中创建一个角色为“ userAdminAnyDatabase”的用户。这就像一个超级用户。

3)为特定数据库创建用户

    $使用 
    $ db.createUser({user:“ dev-read-username”,pwd:“ dev-read-password”,roles:[“ read”]})  
    -具有“读取”角色的用户

    $ db.createUser({user:“ dev-write-username”,pwd:“ dev-write-password”,roles:[“ readWrite”]}) 
    -具有“ readWrite”角色的用户

有关可用角色或如何创建自定义角色的列表,请检查https://docs.mongodb.com/manual/reference/built-in-roles/

4)移除Docker容器

    $ docker ps -a
    $ docker stop container_id
    $ docker rm容器ID

5)在启用身份验证的情况下运行docker实例

    $ docker run --name容器名称-d -p 27017:27017 -v〜/ mongodb:/ data / db mongo --auth

我假设您可能尚未启用--auth来启动docker容器。一旦启用--auth开始,那么没有凭据就无法连接。