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

尝试同时使用rootgraylog用户(在graylogadmin db中)都会得到相同的结果。

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

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

Graylog是否有可能采用与MongoDB不同的身份验证机制?参见pasted log中的#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我网络[conn12]从172.18.0.4:46566接收客户端元数据conn12:{驱动程序:{名称:“mongo-java-driver”,版本:“unknown”},操作系统: {类型:“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我对客户端172.18.0.4:46566的Graylog上的root的访问权限[conn12] SCRAM-SHA-1身份验证失败; UserNotFound:找不到用户root @ graylog
mongodb_1 | 2017-04-16T13:27:52.543 + 0000 I-[conn12]终端连接172.18.0.4:46566(1个连接现已打开)

作为Graylog用户的错误消息(Full log on pastebin)

mongodb_1 | 2017-04-16T15:47:48.404 + 0000我从172.18.0.4:41602#7接受了网络[thread1]连接(1个连接现已打开)
mongodb_1 | 2017-04-16T15:47:48.410 + 0000我网络[conn7]从172.18.0.4:41602接收客户端元数据conn7:{驱动程序:{名称:“mongo-java-driver”,版本:“unknown”},操作系统: {类型:“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访问[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:
构建:./mongodb
数量:
-/ docker / mongodb / data:/ data / db
elasticsearch:
图片:“elasticsearch: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
GREYLOG_MONGODB_URI:mongodb:// graylog:vWGzncmBe9 @ mongodb:27017 / graylog
依赖于取决于:
-mongodb
-elasticsearch
端口:
-“9000:9000”

./mongodb/Dockerfile

来自mongo: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(
{
用户:“graylog”,
pwd:“vWGzncmBe9”,
角色:[
{角色:“dbOwner”,数据库:“graylog”}
]
}
);

最佳答案

您的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

10-04 19:26