neo4j-解决导入数据后出现:Database ‘xxxx‘ is unavailable. Run :sysin ...

打印 上一主题 下一主题

主题 919|帖子 919|积分 2757

目录
问题形貌
解决方法
重新导入


问题形貌

迩来在linux上部署了neo4j,参照之前写的博客:neo4j-数据的导出和导入_neo4j数据导入导出-CSDN博客
举行了数据导出、导入操纵。但是在举行导入后,重新登录网页版neo4j,发现对应的数据库状态变为了offline,感觉很莫名其妙。如下图所示:

中间兜兜转转也硬控了我好久,最后找到相识决办法。
解决方法

我查了一下neo4j的debug日志
  1. tail -n 50 /var/log/neo4j/debug.log
复制代码
找到了主要错误信息:

这个错误提示了 AccessDeniedException,即权限被拒绝,Neo4j 无法访问 neostore 文件,导致数据库启动失败。
Neo4j 无法读取或写入数据库文件,通常是由于文件的权限设置不精确,Neo4j 用户(通常是 neo4j 用户)没有对该文件或目录的访问权限。
初步确定是权限问题,我们登录neo4j网页时,用的是neo4j用户,而在linux中,neo4j用户没有neo4j相关文件的访问权限。
我们检察一下neo4j的demo2数据库的目录权限信息:
  1. ls -l /var/lib/neo4j/data/databases/demo2
复制代码
输出信息如下:

可以看到,除了第一个文件,其他文件的全部者清一色是root.
为了确保 neo4j 用户对相关文件和目录有足够的权限,我们利用 chown 下令将demo2数据库目录及其全部文件的全部者更改为 neo4j 用户:
  1. sudo chown -R neo4j:neo4j /var/lib/neo4j/data/databases/demo2
复制代码
此下令会将demo2目录及其全部子文件和子目录的全部者更改为 neo4j 用户,并将所属组也更改为 neo4j。
然后,利用 chmod 下令确保 neo4j 用户对文件有得当的读写权限:
  1. sudo chmod -R 755 /var/lib/neo4j/data/databases/demo2
复制代码
权限修复完成后,重新启动 Neo4j 服务:
  1. sudo systemctl restart neo4j
复制代码
重新导入

注:导入前要关闭neo4j
/root 目录是 root 用户专用的,建议将文件移到对 neo4j 用户可访问的位置,比方 /var/lib/neo4j/import 目录
  1. sudo mv /root/neo4jData/demo2.dump /var/lib/neo4j/import/
复制代码
将要导入的数据文件的全部者设置为neo4j
  1. sudo chown neo4j:neo4j /var/lib/neo4j/import/demo2.dump
复制代码
确保 Neo4j 用户(neo4j)对全部 Neo4j 数据目录有得当的读写权限。你可以通过以下下令设置权限:
  1. sudo chown -R neo4j:neo4j /var/lib/neo4j/data
复制代码
这将递归地将 neo4j 用户和组设置为 /var/lib/neo4j/data 及其全部子目录和文件的全部者。
你可以利用以下下令确认权限:
  1. sudo ls -l /var/lib/neo4j/data
复制代码
为了确保导入的数据库文件归 neo4j 用户全部,(neo4j-admin 可能利用 root 用户来执行操纵,导致文件的全部者在导入过程中被还原为 root),可以尝试以 neo4j 用户身份执行导入操纵,而不是利用 root 用户。你可以利用 sudo 来切换到 neo4j 用户执行下令:
  1. sudo -u neo4j neo4j-admin database load demo2 --from-path=/var/lib/neo4j/import --overwrite-destination=true
复制代码
重新打开neo4j网页,可以看到,demo2数据库恢复正常了:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表