使用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
相关推荐
qq_54702617920 小时前
Linux 常用快捷键及文本编辑器
linux·运维·服务器
醇氧21 小时前
【Linux】 安装 Azul Zulu JDK
java·linux·运维
喵叔哟1 天前
15.故障排查与调试
后端·docker·容器·服务发现
梦帮科技1 天前
第三十四篇:开源社区运营:GitHub Stars增长策略
开发语言·前端·爬虫·python·docker·架构·html
ICT系统集成阿祥1 天前
Linux运维最万能的三条指令
linux·运维·服务器
长安即是故里1 天前
保姆级docker安装教程,含国内加速镜像地址
docker·docker安装教程·国内加速
chenyuhao20241 天前
Linux网络编程:数据链路层
linux·运维·网络
QT 小鲜肉1 天前
【Linux命令大全】002.文件传输之uupick命令(实操篇)
linux·运维·服务器·chrome·笔记
QT 小鲜肉1 天前
【Linux命令大全】003.文档编辑之colrm命令(实操篇)
linux·运维·服务器·chrome·笔记