docker-compose安装MySQL8并开启远程登录(1045)
编写docke-compose.yml文件
vim docker-compose.yml
version: '3'
services:
mysql:
image: mysql:8.0.31
container_name: mysql
environment:
# 时区上海
TZ: Asia/Shanghai
# root 密码
MYSQL_ROOT_PASSWORD: PASSWORD
# 初始化数据库
ports:
- "3306:3306"
volumes:
# 数据挂载
- ./data/mysql/data/:/var/lib/mysql/
- ./data/mysql/logs/:/var/lib/logs/
# 配置挂载
- ./data/mysql/conf/:/etc/mysql/conf.d/
command:
# 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
privileged: true
# restart: always
networks:
my_net:
ipv4_address: 172.30.0.36
deploy:
resources:
limits:
cpus: 0.25
memory: 768M
reservations:
# cpus: 0.2
memory: 256M
networks:
my_net:
driver: bridge
ipam:
config:
- subnet: 172.30.0.0/16
启动mysql8
docker-compose up -d mysql
登录mysql8
在主机上登录:
mysql -hmysql -uroot -p
在容器里登录:docker exec -it mysql mysql -uroot -p
设置mysql8密码为空
-- 依次输入如下sql
use mysql;
UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';
UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='%';
FLUSH PRIVILEGES;
exit;
重启mysql8
docker restart mysql
重新登录mysql8
mysql -hmysql -uroot
设置密码
-- 依次输入如下sql
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED BY 'PASSWORD' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
FLUSH PRIVILEGES;
- docker-compose compose docker MySQL8 MySQLdocker-compose compose docker mysql8 docker-compose compose docker mysql docker-compose docker-compose compose docker docker-composed docker-compose compose docker gitlab docker-compose compose docker failed docker docker-compose compose ubuntu docker-compose compose docker emqx docker-compose compose docker redis