docker 安装 mysql 8.4.5 单机版

1 参考博文链接如下

使用 Docker 安装 MySQL 的详细教程_docker安装mysql-优快云博客文章浏览阅读6.8k次,点赞46次,收藏76次。Docker 是一种开源的容器化平台,可以轻松地将应用程序及其依赖项打包在一个容器中,从而在任何环境中运行。本文将详细介绍如何使用 Docker 安装 MySQL 数据库,并包括端口配置和防火墙设置。_docker安装mysql https://blog.youkuaiyun.com/weixin_73426010/article/details/146273028

    【Docker系列十一】使用 Docker Compose 部署 MySQL_51CTO博客_docker-compose mysql【Docker系列十一】使用 Docker Compose 部署 MySQL,???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得https://blog.51cto.com/u_15281655/13701885

2 准备环境

   确保你的环境已经安装完docker 和dockercompoose

  docker 环境查看

docker -v

 docker compoose 环境查看

docker compose version

如果没有安装,请先安装(如果还没有安装 Docker,请参考以往篇博,或者百度也可以)。

dockerhub 官方mysql的镜相的版本

docker pull mysql:8.4.5

可以拉镜相,后续docker compoose启动就很快

https://hub-stage.docker.com/_/mysql/tags?name=8.4.5

3 docker compse 文件

3.1 目录约定

  数据和配置目录(可以根据自已的情况来,但需要同yaml里的配置一样)

mkdir -p /data/docker-data/mysql/8.4.5/data/mysql
mkdir -p /data/docker-data/mysql/8.4.5/config
mkdir -p /data/docker-data/mysql/8.4.5/backups

注意文件目录权限避免后续写文件的错误,作者偷赖直接给了最大的权限:

chmod -R  777 /data/docker-data/mysql/8.4.5

3.2 docker compose 文件

# dev-mysql-docker.yml
name: dev-db-mysql
services:
  #节点1
  mysql:
    # zk镜像版本
    image: mysql:8.4.5
    # 当前容器名
    container_name: dev_db_msql
    # 当前容器主机名
    hostname: dev_db_msql
    ports:
      # 端口
      - "3306:3306"
    volumes:
      # 数据持久化目录
      - mysql_data:/var/lib/mysql
      # 配置文件
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf:ro
      - ./backups:/backups
      - /etc/localtime:/etc/localtime:ro
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: dev_db
      MYSQL_USER: dbuser1
      MYSQL_PASSWORD: db123456
      TZ: "Asia/Shanghai"
    # 获取宿主机root权限
    privileged: true
    # 容器开机自启
    restart: unless-stopped
    networks:
      - backend
    # 健康检查配置
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 3
    # 资源限制(生产环境必备)
    deploy:
      resources:
        limits:
          memory: 256M
          cpus: "1.0"
volumes:
  mysql_data:
    driver: local
    driver_opts:
      type: none
      device: ./data/mysql
      o: bind

networks:
  # 自定义网络定义
  backend:
    driver: bridge

  3.3 my.cnf 配置文件

my.cnf 在config的目录下

文件内容

###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
###### [mysqld]配置模块 ######
[mysqld]
# 绑定 IP 允许远程访问
bind-address=0.0.0.0
port=3306
user=mysql
# 设置sql模式 sql_mode模式引起的分组查询出现*this is incompatible with sql_mode=only_full_group_by,这里最好剔除ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id = 1
# MySQL8.4以前的密码认证插件如果不设置低版本navicat无法连接,以后不需要了
# default_authentication_plugin=mysql_native_password
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 允许最大连接数
max_connections=500
# InnoDB 缓冲池大小
innodb_buffer_pool_size=512M
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 0: 表名将按指定方式存储,并且比较区分大小写;
# 1: 表名以小写形式存储在磁盘上,比较不区分大小写;
lower_case_table_names=0
max_allowed_packet=128M
# 设置时区
default-time_zone='+8:00'

这表配置文件权限

chmod +x my.cnf

4 启动 compose

可以查镜相是否拉取完成(docker images),不看也可以,在运行时不存在也会去拉取的

启动

docker compose -f dev-db-mysql-docker.yaml up -d

4.1  MySQL 命令:

 进入容器命令

docker exec -it dev_db_msql bash
  • docker exec -it dev_db_msql bash:进入名为 mysql 的容器并启动一个 bash shell,允许你在容器内执行命令

mysql -u root -p
mysql -uroot -p:使用 root 用户登录 MySQL。系统会提示你输入密码(在之前的命令中设置为 King1Q2W#F)。
CREATE USER 'admin'@'%' IDENTIFIED BY 'King1Q2W#F'; 
GRANT ALL ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
CREATE USER 'admin'@'%' IDENTIFIED BY 'King1Q2W#F';:创建一个名为 admin 的新用户,允许从任何主机(%)连接,并设置其密码为 King1Q2W#F。
admin'@'%'设置 MySQL 远程访问属性
GRANT ALL ON *.* TO 'admin'@'%';:授予 admin 用户对所有数据库和表的所有权限。
FLUSH PRIVILEGES;:刷新权限,使刚才的权限修改生效

4.2 开放 3306 端口
检查防火墙状态:
sudo firewall-cmd --list-ports

或者:

sudo iptables -L -n


如果使用 firewalld,可以这样开放 3306 端口:

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent 
sudo firewall-cmd --reload

4.3 连接IDEA测试mysql是否正常

查看自定义配置的一些参数值如max_connections:

show variables like 'max_connections';

到此,docker 安装mysql 8.4.5 已经初步完成了,可以开始使用mysql了。

4.4 停止:
docker compose -f dev-db-mysql-docker.yaml stop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值