如何在没有REST API的情况下为neo4j集群配置用户和密码

时间:2014-12-25 09:30:33

标签: neo4j authorization

我使用的版本是neo4j-enterprise-2.2.0-M02

我的问题是: 如何在后端或浏览器中配置用户(如添加新用户,更改密码等)而不是REST API?我可以通过neo4j-shell来做吗?想象一下我是一名DBA,通过REST API来做这件事并不是很方便。

任何帮助将不胜感激!

8 个答案:

答案 0 :(得分:50)

您可以使用浏览器而不是API。只需转到http://localhost:7474(或Web控制台绑定的任何IP),系统将提示您更改密码。通过身份验证后,使用命令:server change-password再次更改密码。

尚无法在系统中创建多个用户帐户。

您可以使用命令:help server查看可用的身份验证命令。

答案 1 :(得分:43)

虽然仍在使用REST API,但我会将cURL选项抛给任何无法访问Web浏览器的人(例如AWS实例):

$ curl -H "Content-Type: application/json" -X POST -d '{"password":"WHATEVER THE PASSWORD IS"}' -u neo4j:neo4j http://localhost:7474/user/neo4j/password

答案 2 :(得分:9)

另一种选择是直接修改auth文件并重新启动neo。这样做,您甚至可以更改用户名!

运行

  

find / -name dbms

对我来说,这给了一个打击:

  

的/ var / lib中/ Neo4j的/数据/ DBMS / AUTH

将此代码保存为build_auth_string.sh:

#!/bin/bash

DEFAULT_IFS="$IFS"
SALT_LEN=32

# either read from stdin or use the argument
if [ -z "$1" ]; then
  read INPUT
else
  INPUT="$1"
fi

if [ -z "$INPUT" ]; then
 echo "correct format <uname:pass>"
 exit
fi

IFS=':'
read -a UNAME_PASS <<< "$INPUT"

UNAME="${UNAME_PASS[0]}"
PASS="${UNAME_PASS[1]}"

# representing the password in hex format like \xAB\x0C etc
# HEX_PASS=$(echo -n $PASS | xxd -p | awk '{print toupper($1);}' | sed -r 's/(.{2})/\\x\1/g')
HEX_PASS=$(echo -n $PASS | hexdump -v -e '"\\\x" 1/1 "%02X"')
# echo $HEX_PASS


# create the salt and store it in hex format
SALT=$(cat /dev/urandom | tr -dc 'a-f0-9' | fold -w $SALT_LEN | head -n 1)
# SALT="28FD26AD92D6D2D8820E969F3F3732B4"
HEX_SALT=$(echo -n $SALT | sed -r 's/(.{2})/\\x\1/g')


# calculate the sha256 sum of the salt and password value
# need to split the output because the output ends with a hyphen
IFS=' '
read -a PASSWORD_HASH_ARRAY <<< $(printf $HEX_SALT$HEX_PASS | sha256sum)
PASSWORD_HASH="${PASSWORD_HASH_ARRAY[0]}"

# echo "$UNAME;$PASS;$SALT"
# echo "$PASSWORD_HASH"

# and print out the auth string
COMBINED=$(echo -n "$PASSWORD_HASH,$SALT" | awk '{print toupper($1);}')
echo "$UNAME:SHA-256,$COMBINED:"

IFS="$DEFAULT_IFS"

上面的代码来自https://github.com/artsince/docker-neo4j-auth/blob/master/build_auth_string.sh - 我在这里张贴它只是包装..

然后像

一样运行上面的脚本
  

build_auth_string.sh myUsername:myP @ ssw0rd

将其复制/粘贴到您的auth文件中,替换之前的内容,然后重新启动neo4j:)

答案 3 :(得分:5)

全新安装的Neo4j 2.2.x有一个用户&#39; neo4j&#39;,初始密码为&neo4j&#39;。在您可以执行任何操作之前,您需要更改密码。

通过调用httpie与REST API交互,可以从命令行轻松完成此操作。例如,要设置&#39; foobar&#39;的新密码,请运行以下命令:

http -a neo4j:neo4j POST http://localhost:7474/user/neo4j/password password=foobar

答案 4 :(得分:2)

如果您想重置密码而您不知道旧密码: 然后为Windows用户 走这条路:

  

C:\用户\ XYZ \文件\ Neo4j的\ default.graphdb \ DBMS

并删除 auth 文件。 重启neo4j他们会再次要求设置用户名和密码!! 默认情况下 用户名:Neo4j的 密码:Neo4j的

答案 5 :(得分:1)

对于Mac用户,Neo4J的2.3.1版,重置凭据的最佳方法是删除包含凭据信息的文件并再次启动该服务。

要遵循的步骤

  1. 从浏览器控制台(localhost:7474)查找包含凭据的文件的位置。转到Star(收藏夹) - &gt;系统 - &gt;服务器配置
  2. 搜索 dbms.security.auth_store.location 属性以查看其指向的位置。就我而言,它是 /Users/felipe/Documents/Neo4j/default.graphdb /./ dbms / auth
  3. 删除该文件。
  4. 再次启动服务并再次转到控制台(localhost:7474)。
  5. 默认情况下,系统会要求您为用户neo4j设置密码。

    我希望它有所帮助。

答案 6 :(得分:0)

目前无法使用neo4j-shell配置授权。正如您所提到的,REST API是要走的路。使用方便的REST客户端非常容易。

我选择的工具是postman(Chrome浏览器的插件)或命令行的httpie。例如。使用httpie更改用户的密码非常简单:

 http localhost:7474/user/neo4j/password password=neo4j new_password=mypass

请注意,密码(和其他授权设置)不会自动在群集中分发,请参阅manual how to copy over settings between instances

答案 7 :(得分:0)

详细说明felipe的回应(因为我没有足够的回复点来评论): 我停止了服务器,我删除了两个身份验证文件:

  • DBROOT \数据\ AUTH
  • DBROOT \ DBMS \ AUTH

重新启动服务器,并通过localhost:7474连接到服务器,使用默认用户名/密码(neo4j / neo4j),然后它提示我输入新密码。