使用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
相关推荐
Acrellea9 小时前
告别粗放式能耗管理!安科瑞EIOT平台助力产业园区智慧低碳运营
运维·安全·能源
Databuff10 小时前
五款主流 SSH 免费工具介绍
运维·ssh·运维开发
菜鸟学编程o10 小时前
Linux常见指令
linux·运维·服务器
pt104311 小时前
AIOps机器学习——当警报阈值被调高之后
运维·人工智能·自动化
迪康coolmu11 小时前
企业文件外发管控落地实践 —— 基于迪康端点安全一体化管理系统
运维·网络·经验分享·安全
见闻小天地12 小时前
四方电气DL300变频器面向雕铣机多工况的技术参数与适配验证
运维·人工智能·业界资讯
千舟软件13 小时前
【宿舍管理小程序】新生入住不靠纸质表
大数据·运维·服务器·科技·业界资讯
程序员老赵13 小时前
Docker 部署 XXL-JOB:轻松搭建分布式任务调度平台
后端·docker·开源
j7~13 小时前
【Linux网络加餐课】(篇八)网络版计算器(终篇):守护进程、标准 IO 重定向与部署打包
linux·运维·网络编程·tcp·守护进程·io重定向·部署打包
迹_start14 小时前
Docker
docker