Comment configurer l'utilisateur et le mot de passe pour Neo4j cluster sans L'API REST
La version que j'utilise est neo4j-entreprise-2.2.0-M02
ma question Est : Comment puis-je configurer un utilisateur (comme Ajouter un nouvel utilisateur, modifier 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 commode de faire cela par API REST.
Toute aide sera grandement appréciée!
8 réponses
Vous pouvez utiliser le navigateur au lieu de l'API. Il suffit d'aller à http://localhost:7474
(ou N'importe quelle 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
modifier le mot de passe de nouveau.
Il n'est pas encore possible de créer plusieurs comptes 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 vais jeter l'option cURL là-bas à quiconque n'a pas accès à un navigateur web (exemple 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 est de modifier le fichier auth directement et de redémarrer neo. En faisant cela, vous pouvez même changer le nom d'utilisateur!
Exécuter
find / -name sgbd
Pour moi, cela a donné un coup:
/var/lib/neo4j/données/sgbd/auth
Enregistrer le présent code comme build_auth_string.sh:
#!/bin/bash
DEFAULT_IFS="$IFS"
SALT_LEN=32
# either read from stdin or use the argument
if [ -z "" ]; then
read INPUT
else
INPUT=""
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();}' | sed -r 's/(.{2})/\x/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/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();}')
echo "$UNAME:SHA-256,$COMBINED:"
IFS="$DEFAULT_IFS"
le code de ce qui précède vient de https://github.com/artsince/docker-neo4j-auth/blob/master/build_auth_string.sh - Je l'affiche ici juste encas..
Et puis il suffit d'exécuter le script ci-dessus comme
build_auth_string.sh myUsername:myP@ssw0rd
copier/coller cela dans votre fichier auth en remplaçant ce qui était là avant, 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 faire cela depuis la ligne de commande, en appelant httpie pour interagir avec L'API REST. Par exemple, pour définir un nouveau mot de passe de "foobar", exécutez cette commande:
http -a neo4j:neo4j POST http://localhost:7474/user/neo4j/password password=foobar
pour les utilisateurs Mac, version 2.3.1 de Neo4J, la meilleure façon 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
- trouver où se trouve le fichier qui contient les justificatifs d'identité à partir de la console du navigateur (localhost:7474). Aller à Star (favoris) - > System - > Server configuration
- Recherche sgbd.sécurité.auth_store.emplacement propriété pour voir où il indique. Dans mon cas, c' / Users / felipe/Documents/Neo4j / default.graphdb/./sgbd/auth
- Supprimer ce fichier.
- redémarrez le service et retournez à la console (localhost: 7474).
Par défaut, il vous sera demandé de définir un mot de passe pour l'utilisateur neo4j.
j'espère que cela aide.
Actuellement, il n'est pas possible de configurer l'autorisation en utilisant neo4j-shell
. Comme vous l'avez mentionné, L'API REST est la solution. Utiliser un client de repos pratique c'est très facile.
mes outils de choix sont soit facteur (un plugin pour navigateur chrome) ou httpie pour la ligne de commande. Par exemple: avec httpie changer le mot de passe pour un utilisateur est aussi simple que:
http localhost:7474/user/neo4j/password password=neo4j new_password=mypass
soyez conscient que le mot de passe (et les autres paramètres d'autorisation) ne sont pas distribué automatiquement dans un cluster, voir le manuel Comment copier les paramètres entre les instances.
pour développer la réponse de felipe (puisque je n'ai pas assez de répliques pour commenter): J'ai arrêté le serveur, j'ai supprimé les fichiers auth dans les DEUX:
- DBROOT\data\auth
- DBROOT\dbms\auth
redémarré le serveur, et connecté à celui-ci via le localhost:7474, utilisé le nom d'utilisateur/mot de passe par défaut (neo4j/neo4j) et puis il m'a demandé un nouveau mot de passe.
Si vous souhaitez réinitialiser le mot de passe et vous ne connaissez pas l'ancien mot de passe : puis pour L'utilisateur Windows aller sur ce chemin:
C:\Users\xyz\Documents\Neo4j\default.graphdb\sgbd
et supprimer auth fichier. Redémarrez le neo4j ils vont de nouveau demander de définir le nom d'utilisateur et le mot de passe!! par défaut nom d'utilisateur:neo4j mot de passe:neo4j