docker-compose安装MySQL8并开启远程登录(1045)

发布时间 2023-07-07 21:55:34作者: 明月心~

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;