La version que j'utilise est neo4j-enterprise-2.2.0-M02
Ma question est la suivante: Comment puis-je configurer un utilisateur (comme ajouter un nouvel utilisateur, changer le mot de passe, etc.) dans le backend ou le navigateur, au lieu de l'API REST? Puis-je le faire via neo4j-shell? imaginez que je suis un DBA, il n’est pas très pratique de le faire avec l’API REST.
Toute aide est la bienvenue!
Vous pouvez utiliser le navigateur à la place de l'API. Allez simplement à http://localhost:7474
(ou à l’adresse IP à laquelle la console Web est liée) et vous serez invité à changer le mot de passe. Une fois authentifié, utilisez la commande :server change-password
pour modifier le mot de passe à nouveau.
Il n'est pas encore possible de créer plusieurs comptes d'utilisateur dans le système.
Vous pouvez utiliser la commande :help server
pour voir les commandes d'authentification disponibles.
Bien que j'utilise toujours l'API REST, je proposerai l'option cURL à toute personne n'ayant pas accès à un navigateur Web (instance AWS, par exemple):
$ curl -H "Content-Type: application/json" -X POST -d '{"password":"WHATEVER THE PASSWORD IS"}' -u neo4j:neo4j http://localhost:7474/user/neo4j/password
Une autre option consiste à modifier le fichier auth directement et à redémarrer neo. En faisant cela, vous pouvez même changer le nom d'utilisateur!
Courir
trouver/-name dbms
Pour moi, cela a donné un coup:
/ var/lib/neo4j/data/dbms/auth
Enregistrez ce code sous le nom 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"
Le code correspondant à ce qui précède provient de https://github.com/artsince/docker-neo4j-auth/blob/master/build_auth_string.sh - je l’affiche ici, il suffit de l’encapsuler.
Et puis, lancez le script ci-dessus comme
build_auth_string.sh monUsername: myP @ ssw0rd
Copiez/collez-le dans votre fichier d'authentification en remplaçant ce qui était auparavant et redémarrez neo4j :)
Une nouvelle installation de Neo4j 2.2.x a un utilisateur 'neo4j', avec un mot de passe initial 'neo4j'. Vous devez changer le mot de passe avant de pouvoir faire quoi que ce soit.
Il est facile de le faire depuis la ligne de commande en appelant httpie pour interagir avec l’API REST. Par exemple, pour définir un nouveau mot de passe 'foobar', exécutez la commande suivante:
http -a neo4j:neo4j POST http://localhost:7474/user/neo4j/password password=foobar
Pour les utilisateurs de Mac, la version 2.3.1 de Neo4J, le meilleur moyen de réinitialiser les informations d'identification est de supprimer le fichier contenant les informations d'identification et de redémarrer le service.
Étapes à suivre
Par défaut, il vous sera demandé de définir le mot de passe pour l'utilisateur neo4j.
J'espère que ça aide.
Si vous voulez réinitialiser le mot de passe et que vous ne connaissez pas l'ancien mot de passe: , Puis pour l'utilisateur Windows Aller à ce chemin:
C:\Utilisateurs\xyz\Documents\Neo4j\default.graphdb\dbms
et supprimez ce fichier auth . Redémarrez le neo4j. Ils demanderont à nouveau de définir le nom d'utilisateur et le mot de passe !! Par défaut Nom d'utilisateur: neo4j Mot de passe: neo4j
Actuellement, il n'est pas possible de configurer l'autorisation à l'aide de neo4j-Shell
. Comme vous l'avez mentionné, l'API REST est la voie à suivre. L'utilisation d'un client REST pratique est très simple.
Mes outils de choix sont soit postman (un plugin pour navigateur Chrome), soit httpie pour la ligne de commande. Par exemple. avec httpie, changer le mot de passe d'un utilisateur est aussi simple que:
http localhost:7474/user/neo4j/password password=neo4j new_password=mypass
Sachez que le mot de passe (et les autres paramètres d'autorisation) ne sont pas automatiquement distribués dans un cluster. Consultez le manuel manual pour copier les paramètres entre les instances .
Pour élaborer sur la réponse de Felipe (étant donné que je n'ai pas assez de points de repère pour commenter): J'ai arrêté le serveur, j'ai supprimé les fichiers d'authentification dans les deux:
Le serveur redémarré et connecté via l'hôte local: 7474, utilisait le nom d'utilisateur/mot de passe par défaut (neo4j/neo4j), puis un nouveau mot de passe m'a été demandé.