使用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
相关推荐
腾讯蓝鲸智云1 天前
【运维自动化-节点管理】节点管理的插件策略如何使用
运维·自动化·云计算·sass·paas
苍煜1 天前
Docker容器网络详解+端口映射原理(系列第二篇:实战核心)
网络·docker·容器
疯狂成瘾者1 天前
服务器的单体和集群
运维·服务器
liuhuizuikeai1 天前
可视化门禁---Linux/Qt+SqLite篇
linux·运维·qt
charlie1145141911 天前
嵌入式Linux驱动开发——新 API 字符设备驱动完整教程 - 从设备结构体到应用测试
linux·运维·驱动开发
gwjcloud1 天前
Kubernetes从入门到精通(高级篇)04
云原生·容器·kubernetes
飞Link1 天前
2000 亿砸向算力:字节跳动 AI 基建跨越,后端与运维的“万亿 Token”生死战
运维·人工智能
SWAGGY..1 天前
Linux系统编程:(二)基础指令详解
linux·运维·服务器
张文君1 天前
上古世纪服务端编译安装AAEmu docker编译安装
运维·docker·容器
雾岛心情1 天前
小铭邮件管理工具箱的界面(公司版)
运维·服务器·工具·o365·小铭邮件工具箱(公司版)