log:
https://pastebin.com/SJ6AV5B0
运行之后会循环重启几次,然后就自己没了。后台也进不去
我检查了我配置的数据库信息,没有问题
求助大佬们帮我解决!

Caused by: io.r2dbc.spi.R2dbcPermissionDeniedException: Access denied for user 'blog_tuboshu233_'@'localhost' to database 'halo'

根据日志来看,就是无法连接到数据库。

    可以检查一下halo工作目录中的db(数据库文件夹)文件夹及其中文件的权限是否是775

      Ryan Wang 👍 数据库账户密码没问题,端口也放开了,请问是为什么连不上呢a?

      土拨鼠 从截图上看,你应该是在宝塔面板使用 Docker Compose 方式部署的 halo 。那么,这个文件夹,其实不是真正的工作目录。你需要到宝塔面板的 Docker 界面,在容器详情中找到 mount 标签,并在其中找到真正的工作目录地址。(因为我改用1Panel部署了,所以没办法给出截图)
      但是,这应该不是重点。从下一条回复的截图看,你在使用宝塔面板管理数据库。
      如果你是在宝塔面板使用 Docker Compose 方式部署的 halo ,那么 Halo 使用的应该是容器组中的数据库容器,而这个数据库,默认在宝塔面板的服务器界面是看不到的。很有可能,你设置账号密码的数据库,和 Halo 实际使用的数据库,不是同一个数据库。

        chiyu 如果确实是这种情况,你有两种解决方法。
        方法一:在找到容器组中,数据库容器的外部端口,远程访问数据库,修改正确的账号密码。
        方法二:直接删除这个容器组,重新部署 Halo 。部署时,需要注意 docker-compose.yaml 文件中,部署时,需要注意此文件中,两处关于数据库账号密码的设置要一致。
        ...
        command:
        - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
        - --spring.r2dbc.username=root

        MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。

        - --spring.r2dbc.password=o#DwN&JSa56
        - --spring.sql.init.platform=mysql
        ...
        environment:

        请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值

        - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
        - MYSQL_DATABASE=halo

          chiyu 但是如果按照你的步骤来,那么容器内的mysql端口就不对了,他就会因为端口重叠而报错,所以我选择的是仅创建 Halo 实例(使用已有外部数据库,MySQL 为例):

          端口被占用,是因为你已经在主机安装了 MySQL ,也很容易解决。
          情况一:如果你仅仅是想在服务器上部署 Halo ,主机上的 MySQL 没有其他作用的话,可以卸载,任何就可以正常通过官方文档中的使用Docker Compose 部署,创建 Halo + MySQL 的实例,来部署 Halo 。
          情况二:你主机原有的 MySQL 有其他用途。Docker 容器的端口,并不是只能绑定在相同的主机端口上的,你可以换一个没有被占用的端口。

           halodb:
          ...
              ports:
                - "[没有被占用的其他端口]:3306"
          ...

          spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo这里的3306可能也需要改成对应端口。
          情况三:最为便捷的一种方式是,直接使用官方文档中,“创建 Halo + PostgreSQL 的实例”的方式解决。PostgreSQL 使用与 MySQL 不同的默认端口,不会与主机的 MySQL 产生冲突,也不需要考虑主机的 MySQL 是否需要卸载。

          你这是宿主机的数据库吗?宿主机的数据库要把docker容器的网络模式改为host

          1 年 后