知识库

如何在不通过命令行指定用户名和密码的情况下使用 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 命令可以放在用户主目录的 .bashrc 文件中(例如 /home/neo4j/.bashrc),这样 .bashrc 会在首次登录时被调用。

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

image