Подтвердить что ты не робот

Как настроить пользователя и пароль для кластера neo4j без REST API

Используемая версия - neo4j-enterprise-2.2.0-M02

Мой вопрос: Как настроить пользователя (например, добавить нового пользователя, сменить пароль и т.д.) В бэкэнд или браузер вместо API REST? Могу ли я сделать это через neo4j-shell? представьте, что я - администратор базы данных, это не очень удобно делать с помощью REST API.

Любая помощь будет принята с благодарностью!

4b9b3361

Ответ 1

Вы можете использовать браузер вместо API. Просто перейдите к http://localhost:7474 (или любому другому IP-адресу, к которому привязана веб-консоль), и вам будет предложено изменить пароль. После аутентификации используйте команду :server change-password, чтобы снова изменить пароль.

Пока еще невозможно создать несколько учетных записей пользователей в системе.

Вы можете использовать команду :help server, чтобы просмотреть доступные команды аутентификации.

Ответ 2

Хотя я все еще использую API REST, я буду использовать параметр cURL для всех, кто не имеет доступа к веб-браузеру (например, пример AWS):

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

Ответ 3

Другой вариант - изменить файл auth напрямую и перезагрузить neo. Сделав это, вы даже можете изменить имя пользователя!

Run

find/-name dbms

Для меня это дало один удар:

/вар/Library/Neo4j/данных/DBMS/аутентификации

Сохраните этот код как 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 - im, разместив его здесь, просто закрепите..

А затем просто запустите выше script как

build_auth_string.sh myUsername: myP @ssw0rd

Скопируйте/вставьте это в свой файл auth, заменив все, что было до этого, и перезапустите neo4j:)

Ответ 4

Новая версия Neo4j 2.2.x имеет пользовательский "neo4j" с начальным паролем "neo4j". Вы должны изменить пароль, прежде чем сможете что-либо сделать.

Это легко сделать из командной строки, вызвав httpie для взаимодействия с REST API. Например, чтобы установить новый пароль "foobar", выполните следующую команду:

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

Ответ 5

Для пользователей Mac, версия 2.3.1 Neo4J, лучший способ для reset учетных данных - удалить файл с учетными данными и снова запустить службу.

Шаги, чтобы следовать

  • Найдите, где находится файл, содержащий учетные данные, из консоли браузера (localhost: 7474). Перейдите в "Звезда" (Избранное) → Система- > Конфигурация сервера
  • Найдите свойство dbms.security.auth_store.location, чтобы узнать, на что указывает. В моем случае это было /Users/felipe/Documents/Neo4j/default.graphdb/./dbms/auth
  • Удалить этот файл.
  • Запустите службу еще раз и снова войдите в консоль (localhost: 7474).

По умолчанию вам будет предложено установить пароль для пользователя neo4j.

Надеюсь, это поможет.

Ответ 6

В настоящее время невозможно настроить авторизацию с помощью neo4j-shell. Как вы уже упоминали, REST API - это путь. Использование удобного клиента REST это очень просто.

Мои инструменты выбора - postman (плагин для браузера Chrome) или httpie для командной строки. Например. с httpie с изменением пароля для пользователя так же просто, как:

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

Помните, что пароль (и другие параметры авторизации) не распределяются автоматически в кластере, см. руководство как копировать настройки между экземплярами.

Ответ 7

Чтобы уточнить ответ felipe (поскольку у меня недостаточно комментариев для комментариев): Я остановил сервер, я удалил файлы auth в BOTH:

  • DBROOT\данные\Auth
  • DBROOT\DBMS\Auth

Перезагрузите сервер и подключитесь к нему через localhost: 7474, используйте имя пользователя/пароль по умолчанию (neo4j/neo4j), а затем оно предложило мне новый пароль.