Dra*_*cas 6 authentication neo4j docker docker-compose
我想使用docker-compose通过docker运行Neo4J实例。
docker-compose.yml
version: '3'
services:
neo4j:
container_name: neo4j-lab
image: neo4j:latest
environment:
- NEO4J_dbms_memory_pagecache_size=2G
- NEO4J_dbms_memory_heap_maxSize=4G
- NEO4J_dbms_memory_heap_initialSize=512M
- NEO4J_AUTH=neo4j/changeme
ports:
- 7474:7474
- 7687:7687
volumes:
- neo4j_data:/data
- neo4j_conf:/conf
- ./import:/import
volumes:
neo4j_data:
neo4j_conf:
Run Code Online (Sandbox Code Playgroud)
运行以下命令docker-compose up非常好,我可以进入登录屏幕。
但是,当我设置凭据时,我的容器日志中出现以下错误:Neo.ClientError.Security.Unauthorized由于身份验证失败,客户端未经授权。而我确定我要填入正确的凭证(在docker-compose文件中使用的凭证)
此外,
当我设置NEO4J_AUTH为时none,则没有要求提供凭据。
当我将其设置为“ neo4j/neo4j不能使用默认密码”时
根据文档,这非常好:
默认情况下,Neo4j需要身份验证,并要求您在第一个连接时使用neo4j / neo4j登录并设置新密码。您可以通过在run指令中指定--env NEO4J_AUTH = neo4j / password来直接设置Docker容器的密码。或者,可以通过指定--env NEO4J_AUTH = none来禁用身份验证。
您是否知道发生了什么?
希望你能帮助我解决这个问题!
编辑
Docker日志输出:
neo4j-lab | 2019-03-13 23:02:32.378+0000 INFO Starting...
neo4j-lab | 2019-03-13 23:02:37.796+0000 INFO Bolt enabled on 0.0.0.0:7687.
neo4j-lab | 2019-03-13 23:02:41.102+0000 INFO Started.
neo4j-lab | 2019-03-13 23:02:43.935+0000 INFO Remote interface available at http://localhost:7474/
neo4j-lab | 2019-03-13 23:02:56.105+0000 WARN The client is unauthorized due to authentication failure.
Run Code Online (Sandbox Code Playgroud)
编辑2:
似乎首先删除关联的卷有效。现在,密码已更改。
但是,如果我docker-compose down随后docker-compose up更改了自己的密码,docker-compose file则问题再次出现。
因此,我认为,当存在卷时,通过docker-compose 多次更改密码时,我们需要删除卷中存在的auth文件。
要做到这一点 :
docker volume inspect <volume_name>
Run Code Online (Sandbox Code Playgroud)
你应该得到这样的东西:
[
{
"CreatedAt": "2019-03-14T11:17:08+01:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "neo4j",
"com.docker.compose.volume": "neo4j_data"
},
"Mountpoint": "/data/docker/volumes/neo4j_neo4j_data/_data",
"Name": "neo4j_neo4j_data",
"Options": null,
"Scope": "local"
}
]
Run Code Online (Sandbox Code Playgroud)
如果您为容器命名并且卷不像我一样命名(neo4j,neo4j_data),则这显然是不同的。
重要的部分是确定体积的Mountpoint。
在此卷中,您可以删除目录中的auth文件dbms。
然后重新启动您的泊坞窗,一切都会正常。
小智 7
Neo4j 码头开发人员在这里。
发生这种情况的原因是NEO4J_AUTH环境变量没有设置数据库密码,它只设置了INITIAL密码。
如果您正在安装一个包含现有数据库的数据卷,则NEO4J_AUTH无效,因为该数据库已经有密码。听起来这就是您在这里遇到的情况。
围绕此功能的文档不是很好,我已经更新了它!请参阅:Neo4j docker 身份验证文档
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |