ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
密码不能带有这种乱七八糟的字符:)(!$
docker-compose.yaml文件内容如下:
version: '3.3'
services:
trading_system_redis:
container_name: trading_system_redis
restart: always
image: redis:latest
ports:
- "6379:6379"
trading_system_mysql:
container_name: trading_system_mysql
restart: always
image: mysql:5.7
volumes:
- /home/snakejohn/minio/db_data:/var/lib/mysql
- /home/snakejohn/minio/db_config:/etc/mysql/conf.d
ports:
- "3214:3306"
environment:
MYSQL_ROOT_PASSWORD: xxxxx
MYSQL_DATABASE: trading_system
command:
--max_connections=1000
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--default-authentication-plugin=mysql_native_password
--explicit_defaults_for_timestamp=true
--privileged=true
minio:
container_name: trading_system_minio
restart: always
image: minio/minio
ports:
- "9000:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
volumes:
- /home/snakejohn/minio/minio_data:/data
- /home/snakejohn/minio/minio_config:/root/.minio
command: server /data --console-address ":9000" --address ":9090"
privileged: true
trading_system:
container_name: trading_system
restart: always
image: registry.cn-shanghai.aliyuncs.com/fengzx120/trading_system:latest
depends_on:
- trading_system_mysql
- trading_system_redis
- minio
environment:
MYSQL_IP: localhost
MYSQL_PORT: 3214
MYSQL_USER: root
MYSQL_PASSWORD: xxxxx
MINIO_IP: 192.168.1.30
network_mode: "host"
trading_system_frontend:
container_name: trading_system_frontend
restart: always
image: registry.cn-shanghai.aliyuncs.com/fengzx120/trading_system_frontend:latest
depends_on:
- trading_system
network_mode: "host"
额 这错误是部署时候的?
不是,是连接数据库时候报的错,容器内部登录mysql也会报错
那这个是容器内还是容器外连接,容器外连接的时候带端口号了吗
密码认证不对,确认一下密码。如果不行,清空MySQL挂载路径里数据,MYSQL_PASSWORD: 后面密码字符上加上引号 “xxxx” 试试
mysql的root有2个账号,一个是root@localhost,一个是root@%
忘记默认是不是存在root@%了,但是root@localhost是一定存在的,你进到容器里面,用mysql命令行连连看是否可以成功
docker exec -it trading_system_mysql /bin/bash
mysql -uroot -pxxxxx
一般是可以连上的,剩下的就是你要查一下怎么把root@%设置上密码,或者是默认没有root@%,就添加一个,并给上权限
如果你在容器里也出错,你试试docker compose down,(也把数据卷删掉)再重新部署,没记错的话,root密码只在第一次运行的时候会生效,如果你部署了以后又改了环境变量重新部署,是不生效的
version: '3.1'
services:
mysql:
image: mysql:5.7
container_name: mysql5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
- ./log:/var/log/mysql
- ./conf:/etc/mysql/conf.d
然后再conf目录下建一个my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
lower_case_table_names=1
密码是对的,我试一下加引号
但是报错信息里面有using password:YES的字样
我待会回去了试试,谢谢
你有部署过,然后又修改了环境变量再部署吗
有好几次重新部署过
你部署之后再改环境变量中的密码,再部署,新密码不会生效,因为你的数据卷没变,数据库使用的还是你第一次设置的密码。
好像是一开始设置了一个密码,后面改的另一个密码
大佬,请问这种情况怎么办?是要把文件全删除后重新部署吗?还是要删除镜像
方法已经给你了啊,删掉你的数据卷重新部署吧,你可以只删除mysql的数据卷,
我删了volumes里面的数据,部署后登录还是报错。。。。
原因找到了。密码使用了特殊字符。。。。。