目录
问题形貌
解决方法
重新导入
问题形貌
迩来在linux上部署了neo4j,参照之前写的博客:neo4j-数据的导出和导入_neo4j数据导入导出-CSDN博客
举行了数据导出、导入操纵。但是在举行导入后,重新登录网页版neo4j,发现对应的数据库状态变为了offline,感觉很莫名其妙。如下图所示:
中间兜兜转转也硬控了我好久,最后找到相识决办法。
解决方法
我查了一下neo4j的debug日志
- tail -n 50 /var/log/neo4j/debug.log
复制代码 找到了主要错误信息:
这个错误提示了 AccessDeniedException,即权限被拒绝,Neo4j 无法访问 neostore 文件,导致数据库启动失败。
Neo4j 无法读取或写入数据库文件,通常是由于文件的权限设置不精确,Neo4j 用户(通常是 neo4j 用户)没有对该文件或目录的访问权限。
初步确定是权限问题,我们登录neo4j网页时,用的是neo4j用户,而在linux中,neo4j用户没有neo4j相关文件的访问权限。
我们检察一下neo4j的demo2数据库的目录权限信息:
- ls -l /var/lib/neo4j/data/databases/demo2
复制代码 输出信息如下:
可以看到,除了第一个文件,其他文件的全部者清一色是root.
为了确保 neo4j 用户对相关文件和目录有足够的权限,我们利用 chown 下令将demo2数据库目录及其全部文件的全部者更改为 neo4j 用户:
- sudo chown -R neo4j:neo4j /var/lib/neo4j/data/databases/demo2
复制代码 此下令会将demo2目录及其全部子文件和子目录的全部者更改为 neo4j 用户,并将所属组也更改为 neo4j。
然后,利用 chmod 下令确保 neo4j 用户对文件有得当的读写权限:
- sudo chmod -R 755 /var/lib/neo4j/data/databases/demo2
复制代码 权限修复完成后,重新启动 Neo4j 服务:
- sudo systemctl restart neo4j
复制代码 重新导入
注:导入前要关闭neo4j
/root 目录是 root 用户专用的,建议将文件移到对 neo4j 用户可访问的位置,比方 /var/lib/neo4j/import 目录
- sudo mv /root/neo4jData/demo2.dump /var/lib/neo4j/import/
复制代码 将要导入的数据文件的全部者设置为neo4j
- sudo chown neo4j:neo4j /var/lib/neo4j/import/demo2.dump
复制代码 确保 Neo4j 用户(neo4j)对全部 Neo4j 数据目录有得当的读写权限。你可以通过以下下令设置权限:
- sudo chown -R neo4j:neo4j /var/lib/neo4j/data
复制代码 这将递归地将 neo4j 用户和组设置为 /var/lib/neo4j/data 及其全部子目录和文件的全部者。
你可以利用以下下令确认权限:
- sudo ls -l /var/lib/neo4j/data
复制代码 为了确保导入的数据库文件归 neo4j 用户全部,(neo4j-admin 可能利用 root 用户来执行操纵,导致文件的全部者在导入过程中被还原为 root),可以尝试以 neo4j 用户身份执行导入操纵,而不是利用 root 用户。你可以利用 sudo 来切换到 neo4j 用户执行下令:
- sudo -u neo4j neo4j-admin database load demo2 --from-path=/var/lib/neo4j/import --overwrite-destination=true
复制代码 重新打开neo4j网页,可以看到,demo2数据库恢复正常了:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |