知识库

如何在不使用命令行指定用户名和密码的情况下使用 cypher-shell 进行身份验证

当在命令行中使用 $NEO4J_HOME/bin/cypher-shell 并且通过设置 $NEO4J_HOME/conf/neo4j.conf 启用了身份验证时

# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
dbms.security.auth_enabled=true

可以使用参数 -u <username> -p <password> 在命令行中提供用户名和密码。但是,也可以定义环境变量 NEO4J_USERNAMENEO4J_PASSWORD,例如

export NEO4J_USERNAME='neo4j'
export NEO4J_PASSWORD='password'

定义环境变量后,现在可以运行 $NEO4J_HOME/bin/cypher-shell 并且不再需要在命令行中指定 -u 和 -p。这还有一个额外的好处,即当运行 linux 的“history”命令(显示最后 N 次命令行调用)时,用户名和密码不会被泄露。

此外,如果使用 linux,则上述 export 命令可以放在用户的 home 目录中的 .bashrc 文件中(例如 /home/neo4j/.bashrc),并且在初始登录时会调用 .bashrc

如果使用 Windows,则可以通过控制面板→系统,高级选项卡,[环境变量] 定义环境变量,如下所示

image