docker - 为什么 Neo4J docker 身份验证不起作用

我想使用 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:

使用 docker-compose up 运行以下命令非常好,我可以到达登录屏幕。

但是当我设置凭据时,我的容器日志中出现以下错误: Neo.ClientError.Security.Unauthorized 由于认证失败,客户端未授权。 而我确信我填写了正确的凭据(我的 docker-compose 文件中使用的凭据)

此外,
  • 当我设置 NEO4J_AUTHnone ,则未询问任何凭据。
  • 当我将它设置为 neo4j/neo4j它说我不能使用默认密码

  • 根据文档,这完全没问题:

    By default Neo4j requires authentication and requires you to login with neo4j/neo4j at the first connection and set a new password. You can set the password for the Docker container directly by specifying --env NEO4J_AUTH=neo4j/password in your run directive. Alternatively, you can disable authentication by specifying --env NEO4J_AUTH=none instead.



    你知道发生了什么吗?

    希望你能帮我解决这个问题!

    编辑

    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.
    

    编辑 2:

    似乎首先删除关联的卷有效。现在密码已更改。

    但是,如果我docker-compose down然后 docker-compose up而我在 docker-compose file 中更改了密码然后问题再次出现。

    所以我认为当我们通过 docker-compose 更改密码时不止一次 当卷存在时,我们需要删除 auth文件出现在卷中。

    要做到这一点 :
    docker volume inspect <volume_name>
    

    你应该得到这样的东西:
    [
        {
            "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"
        }
    ]
    

    如果你命名你的容器和你的卷不像我(neo4j,neo4j_data),这显然是不同的。

    重要的部分是挂载点 它定位卷。

    在此卷中,您可以删除 auth文件位于 dbms目录。

    然后重新启动您的 docker,一切都应该没问题。

    最佳答案

    Neo4j 码头开发人员在这里。

    发生这种情况的原因是 NEO4J_AUTH环境变量不设置数据库密码,它设置了 初始 只有密码。

    如果您正在安装一个包含现有数据库的数据卷,那么 NEO4J_AUTH无效,因为该数据库已经有密码。听起来这就是您在这里遇到的情况。

    围绕此功能的文档不是很好,我已经更新了它!见:Neo4j docker authentication documentation

    https://stackoverflow.com/questions/55152286/

    相关文章:

    image - 将 GDIPlus::Bitmap 转换为 cv::Mat(OpenCV C++ 接

    opencv - 保存IPL_DEPTH_IMAGE供以后处理

    memory - cvShowImage和Kinect SDK的内存问题:骨架查看器

    opencv - cvSetErrMode 不工作

    python-3.x - 队列的等价arg 'durable'

    visual-studio-2010 - 我无法使用 VS2010 运行 openCV2.3.1

    colors - 识别opencv中检测到的圆圈的颜色

    image - 从输入图像获取RGB像素并在opencv中重建输出图像

    c# - EmguCV - 运动检测不返回角度

    opencv - 什么最适合您的视频跟踪?为什么?