1

我在 docker 下设置 Graylog2 时遇到了一些麻烦。在我尝试使用身份验证之前,一切正常。我得到的只是永远重复的以下错误。

尝试两者rootgraylog用户(在两者graylogadmin数据库中)给出相同的结果。

来自 mongodb 的日志说两个用户都是在安装过程中创建的。但是 graylog 说它在数据库中找不到任何graylog用户graylog。与用户相同root

我是 MongoDB 新手,不知道身份验证是如何工作的。--auth但是据我了解,在为 root 帐户(https://github.com/docker-library/mongo/pull/145 )提供用户/密码时激活身份验证(类似于参数)。

Graylog 的身份验证机制是否可能与 MongoDB 所期望的不同?请参阅粘贴日志中的第 158 行

作为 root 用户的错误消息

mongodb_1 | 2017-04-16T13:27:52.486+0000 I NETWORK [thread1] 连接从 172.18.0.4:46566 #12 接受(现在打开 1 个连接)
mongodb_1 | 2017-04-16T13:27:52.495+0000 I NETWORK [conn12] 从 172.18.0.4:46566 conn12 收到客户端元数据:{驱动程序:{名称:“mongo-java-driver”,版本:“未知”},操作系统: { 类型:“Linux”,名称:“Linux”,架构:“amd64”,版本:“4.4.0-72-generic”},平台:“Java/Oracle Corporation/1.8.0_72-internal-b15”}
mongodb_1 | 2017-04-16T13:27:52.525+0000 I ACCESS [conn12] SCRAM-SHA-1 身份验证在来自客户端 172.18.0.4:46566 的灰色日志上的 root 失败;UserNotFound: 找不到用户 root@graylog
mongodb_1 | 2017-04-16T13:27:52.543+0000 I - [conn12] 结束连接 172.18.0.4:46566(现在打开 1 个连接)

作为 graylog 用户的错误消息完整登录 pastebin

mongodb_1 | 2017-04-16T15:47:48.404+0000 I NETWORK [thread1] 接受来自 172.18.0.4:41602 #7 的连接(现在打开 1 个连接)
mongodb_1 | 2017-04-16T15:47:48.410+0000 I NETWORK [conn7] 从 172.18.0.4:41602 conn7 收到客户端元数据:{驱动程序:{名称:“mongo-java-driver”,版本:“未知”},操作系统: { 类型:“Linux”,名称:“Linux”,架构:“amd64”,版本:“4.4.0-72-generic”},平台:“Java/Oracle Corporation/1.8.0_72-internal-b15”}
mongodb_1 | 2017-04-16T15:47:48.418+0000 I ACCESS [conn7] SCRAM-SHA-1 身份验证在来自客户端 172.18.0.4:41602 的 graylog 上的 graylog 失败;UserNotFound: 找不到用户 graylog@graylog
mongodb_1 | 2017-04-16T15:47:48.423+0000 I - [conn7] 结束连接 172.18.0.4:41602(现在打开 1 个连接)

这是我的./docker-composer.yml

    版本:'2'
    服务:
      蒙哥达:
        构建:./mongodb
        卷:
          - /docker/mongodb/data:/data/db
      弹性搜索:
        图片:“弹性搜索:2”
        命令:“elasticsearch -Des.cluster.name='graylog'”
        卷:
          - /docker/elasticsearch/data:/usr/share/elasticsearch/data
      灰色日志:
        图片:graylog2/服务器
        卷:
          - /docker/graylog/journal:/usr/share/graylog/data/journal
          - /docker/graylog/config:/usr/share/graylog/data/config
        环境:
          #GRAYLOG_MONGODB_URI: mongodb://root:drUqGGCMh@mongodb:27017/graylog
          GRAYLOG_MONGODB_URI: mongodb://graylog:vWGzncmBe9@mongodb:27017/graylog
        取决于:
          - MongoDB
          - 弹性搜索
        端口:
          - “9000:9000”

./mongodb/Dockerfile

    从蒙戈:3
    ENV MONGO_INITDB_ROOT_USERNAME:根
    ENV MONGO_INITDB_ROOT_PASSWORD:drUqGGCMh
    添加 grayloguser.js /docker-entrypoint-initdb.d/grayloguser.js

./mogodb/grayloguser.js

    db.getSiblingDB('graylog');
    db.createUser(
      {
        用户:“灰色日志”,
        密码:“vWGzncmBe9”,
        角色:[
           {角色:“dbOwner”,db:“graylog”}
        ]
      }
    );

4

1 回答 1

2

您的 MongoDB 脚本不正确。

将 的返回值分配给db.getSiblingDB('graylog')变量并将其用于createUser(),或者继续使用use graylog

graylog = db.getSiblingDB('graylog');
graylog.createUser(
  {
    user: "graylog",
    pwd: "vWGzncmBe9",
    roles: [
       { role: "dbOwner", db: "graylog" }
    ]
  }
);

换句话说,只要坚持 MongoDB 文档:https ://docs.mongodb.com/manual/tutorial/create-users/#username-password-authentication

于 2017-04-18T07:56:20.250 回答