log:
https://pastebin.com/SJ6AV5B0
运行之后会循环重启几次,然后就自己没了。后台也进不去
我检查了我配置的数据库信息,没有问题
求助大佬们帮我解决!
无法运行halo,循环重启!
Caused by: io.r2dbc.spi.R2dbcPermissionDeniedException: Access denied for user 'blog_tuboshu233_'@'localhost' to database 'halo'
根据日志来看,就是无法连接到数据库。
可以检查一下halo工作目录中的db(数据库文件夹)文件夹及其中文件的权限是否是775
土拨鼠 从截图上看,你应该是在宝塔面板使用 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
端口被占用,是因为你已经在主机安装了 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