私が使用しているバージョンはneo4j-enterprise-2.2.0-M02です
私の質問は:REST APIの代わりに、バックエンドまたはブラウザでユーザーを構成する(新しいユーザーを追加する、パスワードを変更するなど) ?私がDBAであると想像してください。REST APIでこれを行うのはあまり便利ではありません。
どんな助けも大歓迎です!
APIの代わりにブラウザを使用できます。 http://localhost:7474
(またはWebコンソールがバインドされているIP)に移動すると、パスワードを変更するように求められます。認証されたら、:server change-password
コマンドを使用してパスワードを再度変更します。
システム内に複数のユーザーアカウントを作成することはまだできません。
コマンド:help server
を使用して、使用可能な認証コマンドを表示できます。
REST APIを引き続き使用しますが、Webブラウザにアクセスできない人(AWSインスタンスなど)にはcURLオプションをスローします。
$ curl -H "Content-Type: application/json" -X POST -d '{"password":"WHATEVER THE PASSWORD IS"}' -u neo4j:neo4j http://localhost:7474/user/neo4j/password
別のオプションは、authファイルを直接変更し、neoを再起動することです。これを行うと、ユーザー名を変更することさえできます!
走る
find/-name dbms
私にとって、これは1つのヒットを与えました:
/ var/lib/neo4j/data/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
それを認証ファイルにコピー/貼り付けして、以前あったものを置き換え、neo4jを再起動します:)
Neo4j 2.2.xの新規インストールのユーザーは「neo4j」で、初期パスワードは「neo4j」です。何かをする前に、パスワードを変更する必要があります。
httpie を呼び出してREST APIを操作します。たとえば、「foobar」の新しいパスワードを設定するには、次のコマンドを実行します。このコマンド:
http -a neo4j:neo4j POST http://localhost:7474/user/neo4j/password password=foobar
パスワードをリセットする必要があり、古いパスワードがわからない場合:Windowsユーザーの場合、次のパスに移動します。
C:\ Users\xyz\Documents\Neo4j\default.graphdb\dbms
authファイルを削除します。 neo4jを再起動すると、再びユーザー名とパスワードの設定を求められます!!デフォルトではユーザー名:neo4jパスワード:neo4j
Neo4Jのバージョン2.3.1のMacユーザーの場合、資格情報をリセットする最良の方法は、資格情報を持つファイルを削除して、サービスを再度開始することです。
従うべき手順
デフォルトでは、ユーザーneo4jのパスワードを設定するよう求められます。
役に立てば幸いです。
現在、neo4j-Shell
を使用して認証を設定することはできません。既に述べたように、REST APIを使用する方法です。便利なRESTクライアントを使用すると、これは非常に簡単です。
私が選んだツールは、 postman (chrome browser)のプラグイン)または httpie のいずれかです。たとえば、httpieでパスワードを変更する場合ユーザーにとっては次のように簡単です:
http localhost:7474/user/neo4j/password password=neo4j new_password=mypass
パスワード(およびその他の認証設定)はクラスター内で自動的に配布されないことに注意してください。 インスタンス間で設定を手動でコピーする方法 を参照してください。
Felipeの応答について詳しく説明するには(コメントするのに十分なrepポイントがないため)、サーバーを停止し、両方のauthファイルを削除しました。
サーバーを再起動し、localhost:7474経由で接続し、デフォルトのユーザー名/パスワード(neo4j/neo4j)を使用してから、新しいパスワードの入力を求められました。