使用 neo4j-admin 命令后出现“权限被拒绝”错误
如果您使用 Debian 或 RPM 软件包在 Linux 上安装 Neo4j(或使用了其中一个公共云市场产品),则需要小心文件和文件夹的权限。安装会创建一个用户:“neo4j”,该用户拥有 Neo4j 安装的所有文件。
$ sudo ls -l /var/lib/neo4j/data/databases/
total 4
drwxr-xr-x 4 neo4j neo4j 4096 Sep 18 17:59 graph.db
-rw-r--r-- 1 neo4j neo4j 0 Sep 18 17:59 store_lock
许多操作任务都是通过neo4j-admin
实用程序完成的。由于此实用程序读取和写入文件系统,因此必须特别注意确保以正确的权限运行它。
例如,请考虑如下所示的备份
$ sudo neo4j-admin backup --from=localhost --name=graph.db_backup --backup-dir=/tmp
.................... 10%
.................... 20%
.................... 30%
.................... 40%
.................... 50%
.................... 60%
.................... 70%
.................... 80%
.................... 90%
Checking node and relationship counts
Backup complete.
请注意,使用了sudo
,这意味着它将以 root 身份运行。我们可以在备份位置看到这一点
$ ls -l /tmp/graph.db_backup/
total 372
-rw-r--r-- 1 root root 58959 Sep 18 18:09 debug.log
-rw-r--r-- 1 root root 57805 Sep 18 18:07 debug.log.1568830062412
-rw-r--r-- 1 root root 58726 Sep 18 18:07 debug.log.1568830143398
drwxr-xr-x 2 root root 4096 Sep 18 18:07 index
drwxr-xr-x 2 root root 4096 Sep 18 18:07 metrics
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore
-rw-r--r-- 1 root root 96 Sep 18 18:07 neostore.counts.db.a
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.id
-rw-r--r-- 1 root root 40960 Sep 18 18:09 neostore.labelscanstore.db
-rw-r--r-- 1 root root 0 Sep 18 18:07 neostore.labeltokenstore.db
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.labeltokenstore.db.id
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.labeltokenstore.db.names
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.labeltokenstore.db.names.id
-rw-r--r-- 1 root root 0 Sep 18 18:07 neostore.nodestore.db
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.nodestore.db.id
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.nodestore.db.labels
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.nodestore.db.labels.id
-rw-r--r-- 1 root root 0 Sep 18 18:07 neostore.propertystore.db
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.propertystore.db.arrays
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.propertystore.db.arrays.id
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.propertystore.db.id
-rw-r--r-- 1 root root 0 Sep 18 18:07 neostore.propertystore.db.index
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.propertystore.db.index.id
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.propertystore.db.index.keys
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.propertystore.db.index.keys.id
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.propertystore.db.strings
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.propertystore.db.strings.id
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.relationshipgroupstore.db
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.relationshipgroupstore.db.id
-rw-r--r-- 1 root root 0 Sep 18 18:07 neostore.relationshipstore.db
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.relationshipstore.db.id
-rw-r--r-- 1 root root 0 Sep 18 18:07 neostore.relationshiptypestore.db
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.relationshiptypestore.db.id
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.relationshiptypestore.db.names
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.relationshiptypestore.db.names.id
-rw-r--r-- 1 root root 8192 Sep 18 18:07 neostore.schemastore.db
-rw-r--r-- 1 root root 9 Sep 18 18:09 neostore.schemastore.db.id
-rw-r--r-- 1 root root 106 Sep 18 18:09 neostore.transaction.db.0
drwxr-xr-x 2 root root 4096 Sep 18 18:07 profiles
如果管理员在某个时候使用此备份进行恢复
$ sudo neo4j-admin restore --from=/tmp/graph.db_backup --database=graph.db --force=true
恢复的数据库文件夹和文件现在将由 root 拥有
$ sudo ls -l /var/lib/neo4j/data/databases/
total 4
drwxr-xr-x 5 root root 4096 Sep 18 18:12 graph.db
-rw-r--r-- 1 neo4j neo4j 0 Sep 18 17:59 store_lock
尝试启动 Neo4j 服务现在将失败,并出现类似以下错误
Starting Neo4j. Sep 18 18:13:55 proddb1-ubuntu neo4j[6805]: 2019-09-18 18:13:55.143+0000 INFO ======== Neo4j 3.5.9 ======== Sep 18 18:13:55 proddb1-ubuntu neo4j[6805]: 2019-09-18 18:13:55.163+0000 INFO Starting... Sep 18 18:13:56 proddb1-ubuntu neo4j[6805]: 2019-09-18 18:13:56.624+0000 INFO Initiating metrics... Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: 2019-09-18 18:13:57.116+0000 ERROR Failed to start Neo4j: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@2b52c0d6' was successfully initial Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: org.neo4j.server.ServerStartupException: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@2b52c0d6' was successfully initialized, but failed Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.server.exception.ServerStartupErrors.translateToServerStartupError(ServerStartupErrors.java:45) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:187) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:124) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:91) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at com.neo4j.server.enterprise.CommercialEntryPoint.main(CommercialEntryPoint.java:22) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.server.database.LifecycleManagingDatabase@2b52c0d6' was successfully initialized, but failed to sta Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:473) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:180) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: ... 3 more Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: Caused by: java.lang.RuntimeException: Error starting org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory, /var/lib/neo4j/data/databases Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory.initFacade(GraphDatabaseFacadeFactory.java:232) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at com.neo4j.commercial.edition.CommercialGraphDatabase.<init>(CommercialGraphDatabase.java:20) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at com.neo4j.server.database.CommercialGraphFactory.newGraphDatabase(CommercialGraphFactory.java:40) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.server.database.LifecycleManagingDatabase.start(LifecycleManagingDatabase.java:90) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:452) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: ... 5 more Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@4b6166aa' was successfully initialized, but failed to start. Please see t Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:473) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:116) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:452) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: at org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory.initFacade(GraphDatabaseFacadeFactory.java:227) Sep 18 18:13:57 proddb1-ubuntu neo4j[6805]: ... 9 more
建议对所有neo4j-admin
命令(如backup
、restore
、store-info
、import
)都使用sudo -u neo4j
$ sudo -u neo4j neo4j-admin backup --from=localhost --name=graph.db_backup_with_user --backup-dir=/tmp
$ sudo -u neo4j neo4j-admin restore --from=/tmp/graph.db_backup --database=graph.db --force=true
此页面是否有帮助?