docker 安装 mysql 详解

        在平常的开发工作中,我们经常需要用到 mysql 数据库。那么在docker容器中,应该怎么安装mysql数据库呢。简单来说,第一步:拉取镜像;第二步:创建挂载目录并设置 my.conf;第三步:启动容器,第四步:测试连接。

        1:拉取镜像:docker  pull  mysql:版本

        选择合适的mysql版本,如 拉取8.0.33版本:docker  pull  mysql:8.0.33,如果拉取镜像拉取不成功,那么可以修改宿主机 Docker 的配置文件 /etc/docker/daemon.json,修改镜像加速器配置。拉取成功后,可以通过 docker images mysql 命令查看:

               

        2:创建挂载目录 并 配置 my.conf :

            1)创建挂载目录:

                  mkdir -p /docker/mysql/conf

                  mkdir -p /docker/mysql/data

                  mkdir -p /docker/mysql/log

            2)创建 my.conf 并配置内容:在 conf 文件夹 下新建 my.conf 文件,配置内容如下: 

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'

# 设置密码验证规则
authentication_policy=mysql_native_password

# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录
# 为NULL,禁止导入与导出功能
secure_file_priv=/var/lib/mysql

init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
skip-name-resolve
max_connections=1000
# lower_case_table_names=1
skip-log-bin
        3:启动容器:
        1) docker run:
docker run --name mysql-8.0.33 \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -e MYSQL_CHARSET=utf8mb4 \
  -e MYSQL_COLLATION=utf8mb4_unicode_ci \
  -p 3306:3306 \
  -v /docker/mysql:/var/lib/mysql \
  -d mysql:8.0.33

       命令解释:

        a:--name mysql-8.0.33:设置容器名称
        b:-e MYSQL_ROOT_PASSWORD=your_password:设置root用户密码
        c:-e MYSQL_CHARSET=utf8mb4:为 MySQL 数据库设置字符集为 utf8mb4
        d:-e MYSQL_COLLATION=utf8mb4_unicode_ci:数据库设置排序规则为 utf8mb4_unicode_ci
        e:-p 3306:3306:-p 用于将容器内部的端口映射到主机的端口,将宿主机3306端口映射到容器3306端口
        f:-v /docker/mysql:/var/lib/mysql:v 是挂载选项,用于将主机上的目录挂载到容器内部的目录,实现数据的持久化存储。
        g:/data/mysql:/var/lib/mysql 表示将主机上的 /data/mysql 目录挂载到容器内的 /var/lib/mysql 目录,这样容器内 MySQL 数据库的数据会存储在主机的 /data/mysql 目录中,即使容器被删除,数据也不会丢失。
        h:-d mysql:8.0.33:表示以守护进程模式运行容器,即容器将在后台运行。Docker 将从 Docker Hub 或本地镜像仓库拉取该镜像,如果不存在,则会先拉取再运行。

        2)docker-compose.yml,命令 docker compose up  -d  mysql
version: '1'
services:
  mysql:
    image: mysql:8.0.33
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: your_password
      TZ: Asia/Shanghai
      
    ports:
      - "3306:3306"
      
    volumes:
      - /docker/mysql/log:/var/log/mysql
      - /docker/mysql/data:/var/lib/mysql 
      - /docker/mysql/conf:/etc/mysql/conf.d
      
    command:
      --max_connections=1000
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
	  
	privileged: true
    network_mode: "host"

        启动完成后,可以使用 docker ps 命令查看当前容器启动状态,可以 使用  docker logs  容器id 或者 docker  logs  mysql 查看启动日志。

        4:测试

        使用数据连接客户端工具测试。

                        

        以上为 docker 下 部署 mysql 数据库的基本步骤。我们只有不断的学习,才能遇见更好的自己,加油,美好的风景一直在路上。

### Docker 安装 MySQL 8.3 详细教程 #### 查询并拉取 MySQL 镜像 为了在 Docker安装 MySQL 8.3 版本,首先需要从 Docker Hub 上查找合适的 MySQL 镜像版本。可以使用 `docker search` 命令来搜索可用的镜像: ```bash docker search mysql ``` 确认所需的具体标签后,通过指定版本号的方式拉取特定版本的 MySQL 镜像: ```bash docker pull mysql:8.3 ``` 这一步骤确保获取到的是官方发布的 MySQL 8.3 版本[^1]。 #### 启动 MySQL 容器 成功下载镜像之后,可以通过运行下面命令创建一个新的 MySQL 容器实例,并设置必要的环境变量以初始化数据库服务: ```bash docker run --name some-mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=your_password_here \ -d mysql:8.3 ``` 上述命令中的参数解释如下: - `--name`: 给容器命名以便于管理; - `-p`: 将主机端口映射至容器内部的服务监听端口; - `-e`: 设置环境变量用于配置 MySQL 的 root 用户密码; - `-d`: 表示以后台模式启动容器; 此操作会基于之前拉取下来的 MySQL 8.3 镜像自动完成容器化部署过程[^2]。 #### 访问与验证 MySQL 实例 一旦容器正常启动,就可以尝试连接新建立好的 MySQL 数据库来进行初步测试或进一步配置工作了。进入正在运行的 MySQL 容器的方法有两种,一种是直接执行 SQL 命令行工具,另一种则是登录 bash shell 来手动控制更多细节: ##### 方法一:直接访问 MySQL CLI ```bash docker exec -it some-mysql mysql -uroot -pyour_password_here ``` ##### 方法二:先获得 Bash Shell 再访问 MySQL CLI ```bash docker exec -it some-mysql /bin/bash mysql -uroot -pyour_password_here ``` 以上两种方式都可以实现对 MySQL 数据库的操作和维护功能[^3]。 #### 开启 Binlog 功能 (可选) 如果计划利用复制特性或者其他依赖于事务日志的应用场景,则可能还需要启用 Binary Logging(简称Binlog),即开启 MySQL 的二进制日志记录机制。具体做法是在 `/etc/my.cnf.d/server.cnf` 或者其他适当位置添加相应的配置项: ```ini [mysqld] server-id=1 log-bin=mysql-bin binlog-format=row ``` 保存更改后的文件并将更新应用给当前活动的 MySQL Server: ```bash docker restart some-mysql ``` 这样就完成了对于 MySQL 8.3 在 Docker 环境下的基本安装流程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值