Graylog容器无法连接到MongoDB容器
在docker下设置Graylog2有一些麻烦。 一切工作,直到我尝试使用validation。 我得到的是以下错误永远重复。
graylog
root
和graylog
用户(在graylog
和admin
db中)都给出了相同的结果。
来自mongodb的日志说,这两个用户都是在安装过程中创build的。 但是,graylog表示在数据库graylog
找不到任何graylog
用户。 与用户root
相同。
我是MongoDB的新手,不知道身份validation如何工作。 但是从我所了解的身份validation(类似于--auth
参数)在为root帐户( https://github.com/docker-library/mongo/pull/145 )提供user / pw时被激活。
Graylog是否有可能采用与MongoDB不同的身份validation机制? 在粘贴的日志中看到#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:{driver:{name:“mongo-java-driver”,version:“unknown”},os: {type:“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身份validation在客户端的graylog上的根目录失败172.18.0.4:46566; UserNotFound:无法find用户root @ graylog mongodb_1 | 2017-04-16T13:27:52.543 + 0000 I - [conn12]结束连接172.18.0.4:46566(现在打开1个连接)
错误消息为graylog用户 ( 完全loginpastebin )
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:{driver:{name:“mongo-java-driver”,version:“unknown”},os: {type:“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访问[conn7]对客户端的graylog上的graylog进行SCRAM-SHA-1authentication失败172.18.0.4:41602; UserNotFound:无法find用户graylog @ graylog mongodb_1 | 2017-04-16T15:47:48.423 + 0000 I - [conn7]结束连接172.18.0.4:41602(现在打开1个连接)
这是我的./docker-composer.yml
版本:'2' 服务: MongoDB的: build立:./mongodb 卷: - / docker / mongodb / data:/ data / db elasticsearch: image:“elasticsearch:2” 命令:“elasticsearch -Des.cluster.name ='graylog'” 卷: - / docker / elasticsearch / data:/ usr / share / elasticsearch / data graylog: 图片: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 - elasticsearch 端口: - “9000:9000”
./mongodb/Dockerfile
从mongo:3 ENV MONGO_INITDB_ROOT_USERNAME:root 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”, angular色:[ {angular色:“dbOwner”,db:“graylog”} ] } );
你的MongoDB脚本不正确。
将db.getSiblingDB('graylog')
的返回值db.getSiblingDB('graylog')
一个variables,并将其用于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