Docker安装Mysql

1.拉取Mysql

powershell 复制代码
docker pull mysql:8.3.0

2.检查成功了没有

powershell 复制代码
docker images mysql:8.3.0

3.创建先关目录

powershell 复制代码
# conf放配置文件,data放数据,log放日志
mkdir -p  /home/mysql/{conf,data,log}

4.创建配置文件

powershell 复制代码
vim /home/mysql/conf/my.cnf

把这些cv进去,写好保存

powershell 复制代码
[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
binlog_expire_logs_seconds = 2592000
#解决MySQL8.0版本GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'

5.启动容器

  • docker run: 启动一个新的容器。
  • -p 3306:3306: 将主机的 3306 端口映射到容器的 3306 端口,这是 MySQL 默认的服务端口。
  • --restart=always: 设置容器总是自动重启,无论容器退出代码是什么。
  • --name mysql: 为容器指定一个名称 "mysql"。
  • --privileged=true: 给予容器扩展权限,通常在需要更高级别的系统访问权限时使用(注意:这会降低容器的安全性)。
  • -v /home/mysql/log:/var/log/mysql : 将主机的 /home/mysql/log 目录挂载到容器内的 /var/log/mysql,用于存储 MySQL 的日志文件。
  • -v /home/mysql/data:/var/lib/mysql : 将主机的 /home/mysql/data 目录挂载到容器内的 /var/lib/mysql,这是 MySQL 数据库存储数据的地方。
  • -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf : 将主机的配置文件 /home/mysql/conf/my.cnf挂载到容器内作为 MySQL 的主配置文件。
  • -e MYSQL_ROOT_PASSWORD=123456 : 设置环境变量 MYSQL_ROOT_PASSWORD,其值是数据库的 root 用户密码,正式的不要写这么简单。
  • -d mysql:8.3.0: 在后台运行(-d)指定的 Docker 镜像,这里是指定版本为 8.3.0 的 MySQL 镜像。
powershell 复制代码
docker run \
-p 3306:3306 \
--restart=always \
--name mysql \
--privileged=true \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.3.0  

测试连接,成功

6.进入容器修改密码(可选)

  1. 进入名为mysql的容器
powershell 复制代码
docker exec -it mysql bash
  1. 连接数据库并输入密码
powershell 复制代码
mysql -u root -p
  1. 修改密码为abcdef
powershell 复制代码
ALTER USER 'root'@'%' IDENTIFIED BY 'abcdef';
  1. 刷新权限
powershell 复制代码
FLUSH PRIVILEGES;
  1. 测试一下

  2. 退出

powershell 复制代码
# 退出MySQL
exit;
# 退出容器
exit;

7.关闭/重启容器(可选)

  1. 关闭容器
powershell 复制代码
# 等10s关
docker stop mysql
# 立即关
docker stop -t 0 mysql
  1. 检查一下
powershell 复制代码
# 查看所有容器,包括未启动的
docker ps -a
  1. 重新启动
powershell 复制代码
docker start mysql
  1. 再看一下,没有问题,搞定
powershell 复制代码
docker ps
相关推荐
小白教程1 小时前
解读和分析mysql性能数据时,如何确定性能瓶颈的具体位置?
数据库·mysql·mysql教程·mysql优化教程
LaughingZhu1 小时前
PH热榜 | 2025-04-26
前端·数据库·人工智能·mysql·开源
二猛子7 小时前
Linux(Centos版本)中安装Docker
linux·docker·centos
老友@8 小时前
小集合 VS 大集合:MySQL 去重计数性能优化
数据库·mysql·性能优化
SlowFeather9 小时前
Unity 使用 ADB 实时查看手机运行性能
android·unity·adb·性能优化·profiler
记得开心一点嘛9 小时前
Docker compose 部署微服务项目(从0-1出发纯享版无废话)
docker·容器·eureka
猿小猴子9 小时前
在 Ubuntu24.04 LTS 上 Docker 部署英文版 n8n 和 部署中文版 n8n-i18n-chinese
docker·容器·n8n
麦麦大数据10 小时前
vue+neo4j+flask 音乐知识图谱推荐系统
vue.js·mysql·flask·知识图谱·neo4j·推荐算法·音乐推荐
io无心10 小时前
Docker绑定端口报错
运维·docker·容器
爱吃烤鸡翅的酸菜鱼11 小时前
【SpringMVC】概念引入与连接
java·开发语言·mysql