Neo4j(v1.8与v1.9) HA高可用性、备份还原及安全设置---ttlsa教程系列之neo4j(三)

ttlsa教程系列之neo4j---(三)Neo4j(v1.8与v1.9) HA高可用性、备份还原及安全设置 环境说明: $NEO4J_HOME1 代表服务器10.1.1.76的neo4j安装目录 $NEO4J_HOME2 代表服务器10.1.1.77的neo4j安装目录 $NEO4J_HOME3 代表服务器10.1.1.78的neo4j安装目录 1. 环境基础依赖: 参见 《ttlsa教程系列之Neo4j---(一)单机安装步骤》  http://www.ttlsa.com/html/1508.html Neo4j v1.9版本要安装jdk 7。 2. Neo4j HA介绍 Neo4j企业版本才提供高可用性功能。 Neo4j HA主要提供以下两个功能: a. 容错数据库架构 保存多个数据副本,即使硬件故障,也能保证可读写。 b. 水平方向扩展以读为主架构 读操作负载均衡。 Neo4j HA将单台操作转移到多台服务器上,对应用程序是透明的,无需更改现有的应用程序代码。 Neo4j HA模式总有单个master,零个或多个slave。与其他ms复制架构,Neo4j HA的slave可以处理写操作,而无需重定向写入到master。 Neo4j HA使用Apache ZooKeeper来进行master选举和服务器间状态信息传播。ZooKeeper可以看做是分布式服务协调器。Neo4j HA集群需要依赖ZooKeeper进程初始主选择,新master选举和集群内服务器状态报告。当master故障,新的master将自动选举。当master故障,任何写事务都将回滚,并且在master选举期间,任何写操作都不会发生。 ZooKeeper需要大量ZooKeeper实例从而保证正常运行。这就意味着zookeeper实例应该永远是个奇数,因此可以充分利用硬件。 注意: a. 集群服务器间系统时间要同步,否则ZooKeeper工作会异常。 b. 集群coordinator信息永久保存在集群中,重新配置coordinator服务需关闭实例,删除data/coordinator/version-2/*数据文件,重新启动coordinator。 3. Neo4j HA配置参数 ha.server_id : 大于等于0的整数且唯一,必须参数 ha.server : 自动发现,当作为master时,主机和端口绑定 ha.coordinators : zookeeper协调员,以逗号分隔,必须参数 ha.cluster_name : 集群描述 ha.pull_interval : 单位是s, 轮询间隔时间 ha.slave_coordinator_update_mode : 永远不会成为master的slave(值有sync,async,none) ha.read_timeout : slave等待master响应超时时间,默认20s ha.lock_read_timeout : ha.max_concurrent_channels_per_slave : 最大并发信道数量 ha.branched_data_policy : ha.zk_session_timeout : ha.tx_push_factor : ha.tx_push_strategy : 4. 配置协调器集群(Coordinator cluster) 修改各台服务器NEO4J目录以下文件: # vim conf/coord.cfg //设置coordinator搜索其他集群成员IP和端口范围 server.1=10.1.1.76:2888:3888 server.2=10.1.1.77:2888:3888 server.3=10.1.1.78:2888:3888 dataDir=/data/neo4j/coordinator //同步日志存储目录 clientPort=2181 //监听端口 为集群内每台服务器创建myid。id与配置文件中的server.1, server.2, server3相同 $neo4j_home1# echo '1' > /data/neo4j/coordinator/myid $neo4j_home2# echo '2' > /data/neo4j/coordinator/myid $neo4j_home3# echo '3' > /data/neo4j/coordinator/myid 启动协调器集群 # $NEO4J_HOME1/bin/neo4j-coordinator start # $NEO4J_HOME2/bin/neo4j-coordinator start # $NEO4J_HOME3/bin/neo4j-coordinator start 如果有异常情况,日志信息可以从各个neo4j安装目录下的data/log目录下查看日志文件获得。 Neo4j v1.8 High Availability 5. Neo4j HA集群模式配置 红色字体是与单机配置不相同的地方。参见《Neo4j系列---(一)单机安装步骤》 # vim conf/neo4j.properties //在集群每台服务器上 $NEO4J_HOME1# vim conf/neo4j.properties neostore.nodestore.db.mapped_memory=10G neostore.relationshipstore.db.mapped_memory=60G neostore.propertystore.db.mapped_memory=20G neostore.propertystore.db.strings.mapped_memory=20G neostore.propertystore.db.arrays.mapped_memory=0M node_auto_indexing=true node_keys_indexable=uid,mobile ha.server_id = 1 ha.coordinators=10.1.1.76:2181, 10.1.1.77:2181, 10.1.1.78:2181 ha.server = 10.1.1.76:6001 $NEO4J_HOME2# vim conf/neo4j.properties neostore.nodestore.db.mapped_memory=10G neostore.relationshipstore.db.mapped_memory=60G neostore.propertystore.db.mapped_memory=20G neostore.propertystore.db.strings.mapped_memory=20G neostore.propertystore.db.arrays.mapped_memory=0M node_auto_indexing=true node_keys_indexable=uid,mobile ha.server_id = 2 ha.coordinators=10.1.1.76:2181, 10.1.1.77:2181, 10.1.1.78:2181 ha.server = 10.1.1.76:6001 $NEO4J_HOME3# vim conf/neo4j.properties neostore.nodestore.db.mapped_memory=10G neostore.relationshipstore.db.mapped_memory=60G neostore.propertystore.db.mapped_memory=20G neostore.propertystore.db.strings.mapped_memory=20G neostore.propertystore.db.arrays.mapped_memory=0M node_auto_indexing=true node_keys_indexable=uid,mobile ha.server_id = 3 ha.coordinators=10.1.1.76:2181, 10.1.1.77:2181, 10.1.1.78:2181 ha.server = 10.1.1.76:6001 # vim conf/neo4j-server.properties //在集群每台服务器上 $NEO4J_HOME1# vim conf/neo4j-server.properties org.neo4j.server.database.location=/data/neo4j/graph.db //数据库存储路径 org.neo4j.server.webserver.address=10.1.1.76 //绑定IP org.neo4j.server.webserver.port=7474 //侦听端口 org.neo4j.server.database.mode=HA org.neo4j.server.webadmin.rrdb.location=/data/neo4j/rrd org.neo4j.server.manage.console_engines= org.neo4j.server.http.log.enabled=true org.neo4j.server.http.log.config=conf/neo4j-http-logging.xml $NEO4J_HOME2# vim conf/neo4j-server.properties org.neo4j.server.database.location=/data/neo4j/graph.db org.neo4j.server.webserver.address=10.1.1.77 org.neo4j.server.webserver.port=7474 org.neo4j.server.database.mode=HA org.neo4j.server.webadmin.rrdb.location=/data/neo4j/rrd org.neo4j.server.manage.console_engines= org.neo4j.server.http.log.enabled=true org.neo4j.server.http.log.config=conf/neo4j-http-logging.xml $NEO4J_HOME3# vim conf/neo4j-server.properties org.neo4j.server.database.location=/data/vdb/neo4j/graph.db org.neo4j.server.webserver.address=10.1.1.78 org.neo4j.server.webserver.port=7474 org.neo4j.server.database.mode=HA org.neo4j.server.webadmin.rrdb.location=/data/neo4j/rrd org.neo4j.server.manage.console_engines= org.neo4j.server.http.log.enabled=true org.neo4j.server.http.log.config=conf/neo4j-http-logging.xml # vim conf/log4j.properties //zookeeper日志 在集群每台服务器上 log4j.appender.R.File=/data/vdb/neo4j/log/neo4j-zookeeper.log # vim neo4j-wrapper.conf //堆内存配置 在集群每台服务器上 # Uncomment the following line to enable garbage collection logging wrapper.java.additional.10=-Xloggc:data/log/neo4j-gc.log //GC日志 # Initial Java Heap Size (in MB) wrapper.java.initmemory=1024 # Maximum Java Heap Size (in MB) wrapper.java.maxmemory=1024 启动 $NEO4J_HOME1# ./bin/neo4j start $NEO4J_HOME2# ./bin/neo4j start $NEO4J_HOME3# ./bin/neo4j start 6. 验证 通过web界面访问 http:// 10.1.1.76:7474/webadmin/#/info/org.neo4j/High%20Availability/ http:// 10.1.1.77:7474/webadmin/#/info/org.neo4j/High%20Availability/ http:// 10.1.1.78:7474/webadmin/#/info/org.neo4j/High%20Availability/ CURL方式查看结果: # curl -H "Content-Type:application/json" -d '["org.neo4j:*"]' http:// 10.1.1.76:7474/db/manage/server/jmx/query "description" : "Information about all instances in this cluster", "name" : "InstancesInCluster", "value" : [ { "description" : "org.neo4j.management.InstanceInfo", "value" : [ { "description" : "address", "name" : "address" }, { "description" : "instanceId", "name" : "instanceId" }, { "description" : "lastCommittedTransactionId", "name" : "lastCommittedTransactionId", "value" : 1 }, { "description" : "machineId", "name" : "machineId", "value" : 1 }, { "description" : "master", "name" : "master", "value" : true } ], "type" : "org.neo4j.management.InstanceInfo" } Neo4j v1.9 High Availability 7. Neo4j 1.9版本的HA配置 Neo4j 1.9版本HA不需要依赖zookeeper。 在集群内,Neo4j HA使用它自己的Paxos来实现集群内所有成员的加入离开,master选举,状态信息报告。 通常情况下,在新的master选举期间,和完成角色转换短短几秒钟内,这段时间内不会有写操作发生。写操作被阻塞或极少情况下抛出异常。 仲裁节点:选出master节点。($neo4j_home# ./bin/neo4j-arbiter start) Neo4j HA配置参数: ha.server_id : 大于等于0的整数且唯一,必须参数 ha.server : 自动发现,当作为master时,主机和端口绑定,如my-domain.com:6001 ha.discovery.enabled : 是否使用ha.discovery.url定义群集 ha.discovery.url : 如果ha.discovery.enabled真,用于定义集群,如file://my.server:8080/my-cluster ha.initial_hosts : 如果ha.discovery.enabled假,其他成员以逗号分隔加入到集群的列表。如果没有可用成员,将创建一个新的集群。 ha.cluster_server : 自动发现。主机与端口绑定,集群管理通讯。 ha.pull_interval : 多少间隔时间slave从master主动拉取数据更新。在写事务时默认是不定期更新。 ha.read_timeout : 等待master响应超时时间,默认20s ha.lock_read_timeout : ha.state_switch_timeout : 最大多长时间,master/slave进行优雅的角色切换 ha.max_concurrent_channels_per_slave : 最大并发信道数量 ha.branched_data_policy : ha.tx_push_factor : ha.tx_push_strategy : Neo4j HA集群模式配置 红色字体是与单机配置不相同的地方。参见《Neo4j系列---(一)单机安装步骤》 $NEO4J_HOME1# vim conf/neo4j.properties neostore.nodestore.db.mapped_memory=10G neostore.relationshipstore.db.mapped_memory=60G neostore.propertystore.db.mapped_memory=20G neostore.propertystore.db.strings.mapped_memory=20G neostore.propertystore.db.arrays.mapped_memory=0M node_auto_indexing=true node_keys_indexable=uid,mobile keep_logical_logs=true online_backup_enabled=true online_backup_server=127.0.0.1:6362 ha.server_id = 1 ha.server = 10.1.1.76:6001 ha.cluster_server = 10.1.1.76:5001 ha.initial_hosts = 10.1.1.76:5001,10.1.1.77:5001,10.1.1.78:5001 $NEO4J_HOME1# vim conf /neo4j-server.properties org.neo4j.server.database.location=/data/neo4j/graph.db org.neo4j.server.webserver.address=10.1.1.76 org.neo4j.server.webserver.port=7474 org.neo4j.server.webserver.https.enabled=true org.neo4j.server.webserver.https.port=7473 org.neo4j.server.webserver.https.cert.location=conf/ssl/snakeoil.cert org.neo4j.server.webserver.https.key.location=conf/ssl/snakeoil.key org.neo4j.server.webserver.https.keystore.location=data/keystore org.neo4j.server.webadmin.rrdb.location=/data/neo4j/rrd org.neo4j.server.webadmin.data.uri=/db/data/ org.neo4j.server.webadmin.management.uri=/db/manage/ org.neo4j.server.database.mode=HA org.neo4j.server.db.tuning.properties=conf/neo4j.properties org.neo4j.server.manage.console_engines= org.neo4j.server.http.log.enabled=true org.neo4j.server.http.log.config=conf/neo4j-http-logging.xml $NEO4J_HOME1# vim conf /neo4j-wrapper.conf wrapper.java.additional.1=-Dorg.neo4j.server.properties=conf/neo4j-server.properties wrapper.java.additional.2=-Djava.util.logging.config.file=conf/logging.properties wrapper.java.additional.3=-Djava.net.preferIPv4Stack=true wrapper.java.additional.4=-Xloggc:/data/weblogs/neo4j_log/neo4j-gc.log wrapper.java.initmemory=1024 wrapper.java.maxmemory=1024 wrapper.java.app.mainclass=org.neo4j.server.Bootstrapper wrapper.pidfile=/data/neo4j/neo4j-server.pid wrapper.lockfile=/data/neo4j/neo4j-server.lck wrapper.name=neo4j $NEO4J_HOME1# vim conf /neo4j-http-logging.xml <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/data/weblogs/neo4j_log/neo4j_http.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/data/weblogs/neo4j_log/neo4j_http.%d{yyyy-MM-dd_HH}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <!-- Note the deliberate misspelling of "referer" in accordance with RFC1616 --> <pattern>%h %l %user [%t{dd/MMM/yyyy:HH:mm:ss Z}] "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern> </encoder> </appender> <appender-ref ref="FILE"/> </configuration> ------------------------------------------------------------------------------------------------- $NEO4J_HOME2# vim conf/neo4j.properties neostore.nodestore.db.mapped_memory=10G neostore.relationshipstore.db.mapped_memory=60G neostore.propertystore.db.mapped_memory=20G neostore.propertystore.db.strings.mapped_memory=20G neostore.propertystore.db.arrays.mapped_memory=0M node_auto_indexing=true node_keys_indexable=uid,mobile keep_logical_logs=true online_backup_enabled=true online_backup_server=127.0.0.1:6362 ha.server_id = 2 ha.server = 10.1.1.76:6001 ha.cluster_server = 10.1.1.76:5001 ha.initial_hosts = 10.1.1.76:5001,10.1.1.77:5001,10.1.1.78:5001 $NEO4J_HOME2# vim conf /neo4j-server.properties org.neo4j.server.database.location=/data/neo4j/graph.db org.neo4j.server.webserver.address=10.1.1.77 org.neo4j.server.webserver.port=7474 org.neo4j.server.webserver.https.enabled=true org.neo4j.server.webserver.https.port=7473 org.neo4j.server.webserver.https.cert.location=conf/ssl/snakeoil.cert org.neo4j.server.webserver.https.key.location=conf/ssl/snakeoil.key org.neo4j.server.webserver.https.keystore.location=data/keystore org.neo4j.server.webadmin.rrdb.location=/data/neo4j/rrd org.neo4j.server.webadmin.data.uri=/db/data/ org.neo4j.server.webadmin.management.uri=/db/manage/ org.neo4j.server.database.mode=HA org.neo4j.server.db.tuning.properties=conf/neo4j.properties org.neo4j.server.manage.console_engines= org.neo4j.server.http.log.enabled=true org.neo4j.server.http.log.config=conf/neo4j-http-logging.xml $NEO4J_HOME2# vim conf /neo4j-wrapper.conf wrapper.java.additional.1=-Dorg.neo4j.server.properties=conf/neo4j-server.properties wrapper.java.additional.2=-Djava.util.logging.config.file=conf/logging.properties wrapper.java.additional.3=-Djava.net.preferIPv4Stack=true wrapper.java.additional.4=-Xloggc:/data/weblogs/neo4j_log/neo4j-gc.log wrapper.java.initmemory=1024 wrapper.java.maxmemory=1024 wrapper.java.app.mainclass=org.neo4j.server.Bootstrapper wrapper.pidfile=/data/neo4j/neo4j-server.pid wrapper.lockfile=/data/neo4j/neo4j-server.lck wrapper.name=neo4j $NEO4J_HOME2# vim conf /neo4j-http-logging.xml <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/data/weblogs/neo4j_log/neo4j_http.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/data/weblogs/neo4j_log/neo4j_http.%d{yyyy-MM-dd_HH}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <!-- Note the deliberate misspelling of "referer" in accordance with RFC1616 --> <pattern>%h %l %user [%t{dd/MMM/yyyy:HH:mm:ss Z}] "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern> </encoder> </appender> <appender-ref ref="FILE"/> </configuration> --------------------------------------------------------------------------------------------------------------- $NEO4J_HOME3# vim conf/neo4j.properties neostore.nodestore.db.mapped_memory=10G neostore.relationshipstore.db.mapped_memory=60G neostore.propertystore.db.mapped_memory=20G neostore.propertystore.db.strings.mapped_memory=20G neostore.propertystore.db.arrays.mapped_memory=0M node_auto_indexing=true node_keys_indexable=uid,mobile keep_logical_logs=true online_backup_enabled=true online_backup_server=127.0.0.1:6362 ha.server_id = 3 ha.server = 10.1.1.76:6001 ha.cluster_server = 10.1.1.76:5001 ha.initial_hosts = 10.1.1.76:5001,10.1.1.77:5001,10.1.1.78:5001 $NEO4J_HOME3# vim conf /neo4j-server.properties org.neo4j.server.database.location=/data/neo4j/graph.db org.neo4j.server.webserver.address=10.1.1.78 org.neo4j.server.webserver.port=7474 org.neo4j.server.webserver.https.enabled=true org.neo4j.server.webserver.https.port=7473 org.neo4j.server.webserver.https.cert.location=conf/ssl/snakeoil.cert org.neo4j.server.webserver.https.key.location=conf/ssl/snakeoil.key org.neo4j.server.webserver.https.keystore.location=data/keystore org.neo4j.server.webadmin.rrdb.location=/data/neo4j/rrd org.neo4j.server.webadmin.data.uri=/db/data/ org.neo4j.server.webadmin.management.uri=/db/manage/ org.neo4j.server.database.mode=HA org.neo4j.server.db.tuning.properties=conf/neo4j.properties org.neo4j.server.manage.console_engines= org.neo4j.server.http.log.enabled=true org.neo4j.server.http.log.config=conf/neo4j-http-logging.xml $NEO4J_HOME3# vim conf /neo4j-wrapper.conf wrapper.java.additional.1=-Dorg.neo4j.server.properties=conf/neo4j-server.properties wrapper.java.additional.2=-Djava.util.logging.config.file=conf/logging.properties wrapper.java.additional.3=-Djava.net.preferIPv4Stack=true wrapper.java.additional.4=-Xloggc:/data/weblogs/neo4j_log/neo4j-gc.log wrapper.java.initmemory=1024 wrapper.java.maxmemory=1024 wrapper.java.app.mainclass=org.neo4j.server.Bootstrapper wrapper.pidfile=/data/neo4j/neo4j-server.pid wrapper.lockfile=/data/neo4j/neo4j-server.lck wrapper.name=neo4j $NEO4J_HOME3# vim conf /neo4j-http-logging.xml <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/data/weblogs/neo4j_log/neo4j_http.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/data/weblogs/neo4j_log/neo4j_http.%d{yyyy-MM-dd_HH}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <!-- Note the deliberate misspelling of "referer" in accordance with RFC1616 --> <pattern>%h %l %user [%t{dd/MMM/yyyy:HH:mm:ss Z}] "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern> </encoder> </appender> <appender-ref ref="FILE"/> </configuration> Neo4j 备份与还原 备份介绍: Neo4j企业版本才提供备份服务。只有配置了参数 online_backup_enabled=true 的数据库才可以进行备份,默认端口是6362。(neo4j 1.8版本默认开启,neo4j 1.9版本需要指定) 支持两种备份类型:完整备份和增量备份。 一个完整备份在不进行任何锁定的情况下拷贝数据库文件,而不影响线上任何操作。为了确保备份数据的一致性,当备份完成后,在整个备份过程中的事务都会在备份文件上重新执行一遍。 增量备份不会拷贝存储文件,而是拷贝在完整备份或增量备份之后的事务日志,然后在已经存在的备份上面执行一次。比完整备份更高效,要求在进程增量备份前必须要存在一个完整备份。 备份一旦创建,备份文件都表示一个持久化的数据库快照,都可以用来启动一个Neo4j数据库实例。 备份语法如下: <running mode>://<host>[:port]{,<host>[:port]*} running mode必须指定,且只能是single(单机模式)或ha(集群模式)。 # ./neo4j-backup -full -from single://10.1.242.124 -to /data/backup/neo4j-backup //单机模式下执行一次完整备份 Performing full backup from 'single://10.1.242.124' ............................. [29 Files copied] Full consistency check .................... 10% .................... 20% .................... 30% .................... 40% .................... 50% .................... 60% .................... 70% .................... 80% .................... 90% .................... 100% Done # ./neo4j-backup -incremental -from single://10.1.242.124 -to /data/backup/neo4j-backup //单机模式下执行一次增量备份 Performing incremental backup from 'single://10.1.242.124' [0 Transactions applied] Done HA模式下备份: Neo4j v1.8版本下,需要指定一个或多个管理集群的协调器。如果为HA集群指定了一个集群名称,那么在备份的时候需要指定这个名称(增加一个配置参数: -cluster my_custom_cluster_name),以至于备份系统知道哪些集群需要备份。 注意:指定ha.coordinators地址。 # ./neo4j-backup -full -from ha://10.1.1.76:2181,10.1.1.77:2181 -to /backup/neo4j-backup //HA模式下,执行一次完整备份 # ./neo4j-backup -incremental -from ha://10.1.1.76:2181 -to /backup/neo4j-backup //HA模式下,执行一次增量备份 Neo4j v1.9版本下,需要指定一个或多个HA集群中的目标成员。 注意: 必须指定ha.cluster_server地址而不是ha.server地址。 # ./neo4j-backup -full -from ha://10.1.1.76:5001,10.1.1.77:5001 -to /backup/neo4j-backup //HA模式下,执行一次完整备份 # ./neo4j-backup -incremental -from ha://10.1.1.76:5001 -to /backup/neo4j-backup //HA模式下,执行一次增量备份 恢复: Neo4j备份的内容是某一时刻的完整数据库。恢复时,只需要将数据库目录指定到备份的数据目录即可。 Neo4j 安全 Neo4j在数据层面没对安全做限制。在生产环境下应考虑安全问题。 1. 对服务器端口做白名单限制。 Port Desc 7473/7474 Webadmin管理端口 6001 集群内成员通讯端口 1337 远程shell端口 6362 Single备份服务端口 2181 HA备份服务端口(v1.8) 5001 HA备份服务端口(v1.9) 2. 使用第三方安全认证插件 # wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz # wget --no-check-certificate https://github.com/neo4j-contrib/authentication-extension/archive/1.8.zip -O neo4j-1.8-authentication-extension.zip # unzip neo4j-1.8-authentication-extension.zip # cd authentication-extension-1.8/ # /usr/local/apache-maven-3.0.5/bin/mvn clean package //打包 # cp authentication-extension-1.8.1-1.0-SNAPSHOT.jar /usr/local/neo4j/plugins/authentication-extension-1.8.1-1.0.jar # vim neo4j-server.properties org.neo4j.server.credentials=admin:nd.com.cn //用户名:密码 org.neo4j.server.thirdparty_jaxrs_classes=org.neo4j.server.extension.auth=/auth 用户管理操作: # curl --user admin:nd.com.cn -d "user=user1:passwd1" -XPOST http://10.1.242.124:7474/auth/add-user-rw //添加读写用户 OK //返回OK说明成功 # curl --user admin:nd.com.cn -d "user=user2:passwd2" -XPOST http://10.1.242.124:7474/auth/add-user-ro //添加只读用户 OK # curl-user admin:nd.com.cn 10.1.242.124:7474/auth/list //列出所有用户 {"user1:passwd1":"RW","user2:passwd2":"RO"} # curl --user admin:nd.com.cn -d "user=user2:passwd2" http://10.1.242.124:7474/auth/remove-user //删除用户 OK # curl --user admin:nd.com.cn 10.1.242.124:7474/auth/list {"user1:passwd1":"RW"} 验证: # curl -I 10.1.242.124:7474 HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="neo4j graphdb" Content-Type: text/html; charset=iso-8859-1 Cache-Control: must-revalidate,no-cache,no-store Content-Length: 1371 Server: Jetty(6.1.25) Web管理界面: 转载请注明出处http://www.ttlsa.com/html/1541.html

转载于:https://my.oschina.net/766/blog/211246

猜你喜欢

转载自blog.csdn.net/weixin_34174322/article/details/91547960