使用docker安装myql 8.0

一、前置条件

确保 Linux 系统已安装 Docker:

bash 复制代码
# 检查Docker是否安装
docker -v

# 若未安装,执行以下命令安装Docker(以CentOS/Ubuntu通用脚本为例)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 启动Docker并设置开机自启
systemctl start docker
systemctl enable docker

二、Docker 安装 MySQL 8 完整步骤

1. 拉取 MySQL 8 镜像(推荐指定具体版本,避免最新版兼容问题)
bash 复制代码
# 拉取MySQL 8.0.36(稳定版),也可直接用mysql:8
docker pull mysql:8.0.36

若拉取速度慢,可使用阿里云镜像加速

2. 创建数据挂载目录(避免容器删除后数据丢失)
bash 复制代码
# 创建目录并设置权限(重要,避免权限不足)
mkdir -p /usr/local/mysql/{data,conf,logs}
chmod -R 777 /usr/local/mysql

在同一个目录下创建多个同级文件夹,可使用花括号将这些同级文件夹括起来。

3. 创建 MySQL 配置文件(自定义配置,可选但推荐)
bash 复制代码
# 编辑配置文件
vim /usr/local/mysql/conf/my.cnf

粘贴以下基础配置(适配 MySQL 8,解决中文乱码、时区等问题):

bash 复制代码
[mysqld]
# 基础配置
default-authentication-plugin=mysql_native_password  # 兼容旧客户端
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time_zone = '+8:00'  # 中国时区
lower_case_table_names=1  # 表名不区分大小写(Windows兼容)

# 性能配置(基础版)
max_connections=1000
innodb_buffer_pool_size=256M
skip-name-resolve  # 跳过域名解析,提升连接速度

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

mysql默认端口号为3306,如果要指定3306以外的端口号,需在[mysqld]里指定端口:

bash 复制代码
port=3309

否则直接在启动命令里指定将不生效,远程连接不上mysql

  1. 启动 MySQL 容器(核心命令)
bash 复制代码
docker run -d \
  --name mysql8 \
  --restart=always \
  -p 3306:3306 \
  -v /usr/local/mysql/data:/var/lib/mysql \
  -v /usr/local/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
  -v /usr/local/mysql/logs:/var/log/mysql \
  -e MYSQL_ROOT_PASSWORD=你的密码 \
  -e MYSQL_ROOT_HOST=% \
  mysql:8.0.36

将上面你的密码替换为要设置的密码。

参数说明

  • -d:后台运行容器;
  • --name mysql8:容器命名为 mysql8,方便管理;
  • --restart=always:开机自启;
  • -p 3306:3306:端口映射(主机 3306→容器 3306);
  • -v:目录挂载(数据 / 配置 / 日志持久化);
  • MYSQL_ROOT_PASSWORD:设置 root 用户密码(必须改!);
  • MYSQL_ROOT_HOST=%:允许 root 从任意主机连接(生产环境建议指定 IP)。
5. 验证安装是否成功
bash 复制代码
# 查看容器状态(运行中则显示Up)
docker ps | grep mysql8

# 进入MySQL容器
docker exec -it mysql8 mysql -uroot -p

# 输入密码后,执行版本查询(验证版本)
SELECT VERSION();
# 输出类似 8.0.36 即为成功

# 验证远程连接权限
use mysql;
select host, user from user where user='root';
# 若host为%,说明允许远程连接

三、常用运维命令

bash 复制代码
# 启动/停止/重启容器
docker start mysql8
docker stop mysql8
docker restart mysql8

# 查看容器日志(排错用)
docker logs -f mysql8

# 导出/导入数据(示例)
# 导出
docker exec mysql8 mysqldump -uroot -p密码 数据库名 > /tmp/备份.sql
# 导入
docker exec -i mysql8 mysql -uroot -p密码 数据库名 < /tmp/备份.sql

# 删除容器(谨慎!数据已挂载到主机,删除容器不丢数据)
docker rm -f mysql8
相关推荐
蝎子莱莱爱打怪8 小时前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
碳基沙盒16 小时前
OpenClaw 多 Agent 配置实战指南
运维
小p1 天前
docker学习7:docker 容器的通信方式
docker
小p1 天前
docker学习5:提升Dockerfile水平的5个技巧
docker
小p1 天前
docker学习3:docker是怎么实现的?
docker
小p3 天前
docker学习: 2. 构建镜像Dockerfile
docker
小p3 天前
docker学习: 1. docker基本使用
docker
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀4 天前
Docker部署Nacos
docker·容器
缓解AI焦虑4 天前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器