创建可访问所有数据库的默认mongoDB用户

时间:2018-04-03 12:20:07

标签: node.js mongodb docker

我正在尝试创建本地开发环境NodeJS(node:latest)& docker上的MongoDB(mongo:latest)和我使用mongoose连接MongoDB。我想设置非常简单的环境。

我的docker-compose.yml

version: '3'
  services:
    server:
    build: .
    container_name: cms_webserver
    ports:
      - "4000:4000"
    volumes:
      - ./api:/app/api
      - ./node_modules:/app/node_modules
   links:
      - mongo
 mongo:
   container_name: cms_mongo
   image: mongo
   environment:
     - MONGO_INITDB_ROOT_USERNAME=root
     - MONGO_INITDB_ROOT_PASSWORD=root
     - MONGO_INITDB_DATABASE=cms
   ports:
     - "27017:27017"
   volumes:
     - ./docker/mongod.conf:/etc/mongod.conf
     - ./data:/data/db
 adminmongo:
   image: mrvautin/adminmongo
   ports:
     - "1234:1234"

mongod.conf

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo
security:
    authorization: disabled
net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

当我重建docker时,我删除了data /的内容。每次我看到像新用户一样成功添加:

Successfully added user: {
   "user" : "root",
   "roles" : [
      {
        "role" : "root",
        "db" : "admin"
      }
   ]
}

当我尝试连接到节点中的mongoDB时,使用

mongoose.connect('mongodb://mongo')

获取有关成功的信息。

当我尝试连接到mongoDB到默认DB:cms

mongoose.connect('mongodb://root:root@mongo/cms') 

我收到错误:

  

来自客户端的cms上的root用户的SCRAM-SHA-1身份验证失败   172.18.0.4:59142; UserNotFound:找不到用户root @cms

我的第一个问题是如何禁用安全性?我找到并设置security: authorization: disabled的选项,即使我已经完成了这个问题仍然存在。

第二个问题是主题。

  1. 运行docker ps并检查哪个容器属于mongo,然后使用docker exec -it XXX bash登录。我使用简单的命令mongo,我可以登录到mongo。我能做的是用命令打开mongo
  2. mongo -u root -proot admin但我无法使用mongo -u root -p admin(mongo没有问我密码)

    1. 作为管理员(root / root)我可以通过运行命令use cms创建新数据库,我也可以添加记录并检查数据库是否存在

    2. 我可以创建新用户让我们说: db.createUser({user:"test",pwd:"test",roles:[{role:"dbOwner",db:"cms"}]});

    3. 我退出并再次尝试登录数据库cms我创建并收到错误:

    4.   

      MongoDB shell版本v3.6.3   连接到:mongodb://127.0.0.1:27017 / cms   MongoDB服务器版本:3.6.3   2018-04-03T12:13:41.428 + 0000 E QUERY [thread1]错误:验证>失败。 :   DB.prototype._authOrThrow@src/mongo/shell/db.js:1608:20   @(AUTH):6:1   @(AUTH):1:2   异常:登录失败

      有没有人知道发生了什么,可以解释我做错了什么,甚至让我准备好使用示例如何在我的本地设置mongo DB?我在DevOps中不是很强大而且我完全迷失了。

0 个答案:

没有答案