Как настроить пользователя и пароль для кластера neo4j без REST API
Используемая версия - neo4j-enterprise-2.2.0-M02
Мой вопрос:
Как настроить пользователя (например, добавить нового пользователя, сменить пароль и т.д.) В бэкэнд или браузер вместо API REST? Могу ли я сделать это через neo4j-shell? представьте, что я - администратор базы данных, это не очень удобно делать с помощью REST API.
Любая помощь будет принята с благодарностью!
Ответы
Ответ 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), а затем оно предложило мне новый пароль.