无法更改neo4j密码

Cant change neo4j password

我正在尝试通过以下命令行操作更改我的 neo4j 密码,遵循 Brent Barbata 在 this link

上的回答
curl -H "Content-Type: application/json" -XPOST -d '{"password":"new_password"}' -u neo4j:neo4j http://localhost:7474/user/neo4j/password

但是我收到以下错误

{
  "errors" : [ {
    "code" : "Neo.ClientError.Security.Unauthorized",
    "message" : "Invalid username or password."
  } ]

我按照 this question

的想法尝试了这种替代方法
curl -H "Content-Type: application/json"\ -H "Authorization: Basic `echo -n 'USERNAME:OLDPASSWORD | base64`"\ -X POST -d '{"password":"NEWPASSWORD"}'\ -I http://localhost:7474/user/neo4j/password

并得到以下错误

curl: (6) Could not resolve host: Authorization
curl: (6) Could not resolve host: POST
{
  "errors" : [ {
    "code" : "Neo.ClientError.Security.Unauthorized",
    "message" : "No authentication header supplied."
  } ]

这些方法有什么问题,修改密码的方法是什么? 我不想在浏览器上使用 :server change-password。我是 运行 neo4j 3.3.5 Ubuntu 16.04

如果是初始设置密码(即首次启动服务器前):

bin/neo4j-admin set-initial-password MyNewPassWord

如果要更改密码,只需使用 login/password 连接到 cypher-shell,然后执行此查询:

CALL dbms.security.changePassword('MyNewPassWord')

我在我自己的 Neo4j 实例上试用了您的示例,但遇到了同样的错误。我从 this 源中发现了这个略有不同的命令,这对我有用。不会返回任何错误消息,它会立即更改您的密码。

curl -H "Content-Type: application/json" -H "Authorization: Basic `echo -n 'USERNAME:OLDPASSWORD' | base64`" -X POST -d '{"password":"NEWPASSWORD"}' -I http://localhost:7474/user/neo4j/password

它看起来与您问题中的第二个 curl 命令几乎完全相同 - 我的猜测是,由于行继续符和整个命令的一般混乱,有可能当您 运行 命令,其中一个命令 options/flags 在它之前或之后都没有 space,这让解释器感到困惑。这可能不言而喻,但请确保在 运行 命令之前将 USERNAME、OLDPASSWORD 和 NEWPASSWORD 占位符替换为实际值。