想自己搭一个博客( halo
按照文档Halo Documents通过 docker componse 创建 Halo + MySQL 的实例。halo 启动报错,连接数据库 Access denied
参考https://blog.csdn.net/qq_36493719/article/details/104246271未解决
docker-componse.yml:
version: "3"
services:
halo:
image: halohub/halo:2.1.0
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./:/root/.halo2
ports:
- 6666:8090
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://xxx:3316/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password= halodb
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://xxx/
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=admin
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=pwd@halo
halodb:
image: mysql:8.0.31
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
- ./mysqlConf/my.cnf:/etc/mysql/my.cnf
ports:
- 3316:3306
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
MYSQL_ROOT_PASSWORD: halodb
TZ: Asia/Shanghai
MYSQL_DATABASE: halo
networks:
halo_network:
1
cMoon OP 容器内也无法登录,修改密码没用
|
2
Still4 2023-02-01 14:36:38 +08:00
MYSQL_ROOT_HOST=%
加上这个试试 |
4
wdssmq 2023-02-01 14:58:56 +08:00
- --spring.r2dbc.url=r2dbc:pool:mysql://xxx:3316/halo
↓ ↓ - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo |
5
1120101929 2023-02-01 15:13:10 +08:00
--spring.r2dbc.password= halodb
password 多了空格? |
6
xuyang2 2023-02-01 15:17:25 +08:00
MySQL 报错难道就给你报个 "Access denied" ?
Access denied **for whom** ? |
7
TiDao 2023-02-01 15:25:03 +08:00
1 docker ps 确认 halodb 是 running 的状态;
|
8
cMoon OP |
9
TiDao 2023-02-01 15:30:11 +08:00
1 docker ps 确认 halodb 是 running 的状态;2 用 root 账号看能不能登录再容器外部登录,不能登录需要进入 halodb 容器里给 root 远程登录权限;
|
10
cMoon OP |
11
cMoon OP @TiDao 我容器内部登录都进不去,配置文件加了 skip-grant-tables 可以进去,但是改完密码重启容器又是 access denied for user 了
|
12
TiDao 2023-02-01 15:38:17 +08:00
@cMoon MYSQL_ROOT_PASSWORD: halodb 这是 root 的密码,你使用的是这个密码吗? mysql -uroot -p 进 db 容器里,用这个命令登录
|
13
xuyang2 2023-02-01 15:44:10 +08:00
https://github.com/halo-dev/docs/blob/main/docs/getting-started/install/docker-compose.md:
environment: # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值 - MYSQL_ROOT_PASSWORD=o#DwN&JSa56 - MYSQL_DATABASE=halo yours: environment: MYSQL_ROOT_PASSWORD: halodb TZ: Asia/Shanghai MYSQL_DATABASE: halo |
14
gumuxi 2023-02-01 15:48:31 +08:00
|
15
cMoon OP @TiDao 我查了 user 表的信息,
mysql> SELECT User, authentication_string, Host FROM user; +------------------+------------------------------------------------------------------------+-----------+ | User | authentication_string | Host | +------------------+------------------------------------------------------------------------+-----------+ | root | halodb | % | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost | | root | halodb | localhost | +------------------+------------------------------------------------------------------------+-----------+ |
18
xuyang2 2023-02-01 15:59:14 +08:00
environment 的格式
应该是 list 而不是 dict 吧 |
21
xuyang2 2023-02-01 16:14:21 +08:00
换个 MYSQL_USER 不要用 root 试试?
|
23
joesonw 2023-02-01 16:55:28 +08:00 via iPhone
network 内端口用 3306
|
24
moshiyeap100 2023-02-01 17:14:23 +08:00
halo 的这个 docker-compose 配置最早应该是我写的,但是和我最初提的 pr 有些差异。不过你这个问题尝试下把整个 mysql 容器 rm 掉,然后删除 MYSQL 宿主机挂载的文件,然后重新创建一个 mysql 容器就好了。
rm -rf ./mysql ./mysqlBackup ./mysqlConf |
25
moshiyeap100 2023-02-01 17:20:59 +08:00
而且 MYSQL_ROOT_PASSWORD: halodb 和 - MYSQL_ROOT_PASSWORD=o#DwN&JSa56 这两种写法是 Map syntax 和 Array syntax ,有些细微差异的
environment defines environment variables set in the container. can use either an array or a map. Any boolean values; true, false, yes, no, SHOULD be enclosed in quotes to ensure they are not converted to True or False by the YAML parser.environment |
26
magewu1223ll 2023-02-01 17:23:45 +08:00
我之前遇到过的是 host 配置 127.0.0.1 失败 要改成 0.0.0.0 才能访问,不过看样子跟楼主不是同一个问题
|
27
moshiyeap100 2023-02-01 17:24:59 +08:00
如果是 access denied for user ‘root‘@, 那就在 environment 中加一条 MYSQL_ROOT_HOST: '%'
|
28
aichunya 2023-02-01 17:28:31 +08:00
- --default-authentication-plugin=mysql_native_password
把这个删掉就好了 |
29
liuxingdeyu 2023-02-01 18:30:24 +08:00
environment:
- TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=123456 |
30
noparking188 2023-02-01 22:30:24 +08:00
spring.r2dbc.url=r2dbc:pool:mysql://xxx:3316/halo
你这里是写的本机地址吧,是地址试一下给 MySQL root 加远程登录权限,或者试一下换成 halodb 的容器名称 我遇到过类似问题,官方 MySQL 镜像默认配置没给 root 远程登录权限,还有一些其它坑,需要自己改配置 |
31
noparking188 2023-02-01 22:31:34 +08:00
@noparking188 #30 27 楼老哥的方法
|
32
dy0425 2023-02-02 00:27:34 +08:00 via Android
我上次腾讯云上的测试数据库默认端口弱密码,被勒索了,重新起个容器改了密码,死活登不上去,搞了半天发现原来弱密码还能进去,挂载的配置没删
|
33
cMoon OP @moshiyeap100 谢谢大佬,应该就是这个挂载的文件的问题.现在解决了
|
34
muhahaha 2023-02-05 22:32:20 +08:00 via iPhone
请问 Halo 这个博客好用吗?
|