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
相关推荐
梁萌3 分钟前
保姆级的MySQL执行计划(Explain)解读
数据库·mysql·explain·执行计划
cq林志炫24 分钟前
MySQL 英文逗号隔开的数据如何模糊精确查询
mysql
阿里巴巴P8资深技术专家1 小时前
docker容器启动报错
运维·docker·容器
杨云龙UP1 小时前
MySQL 8.0.x InnoDB 写入链路优化:Redo Log 与 Buffer Pool 扩容与缓冲区调优实战记录-20251029
linux·运维·数据库·sql·mysql
元气满满-樱5 小时前
docker网络模式详解
网络·docker·容器
UCoding5 小时前
新能源技术面试 -- 给出一套mysql备份容灾方案
mysql·面试·主从
空中楼阁,梦幻泡影5 小时前
Docker安装MinIO
运维·docker·容器·minio·存储
CodeAmaz5 小时前
MySQL 事务隔离级别详解
数据库·mysql·事务隔离级别
千寻技术帮5 小时前
10398_基于SSM的教学评价管理系统
数据库·mysql·毕业设计·ssm·教学评价
PWRJOY6 小时前
【MySQL】使用mycli查看数据库的基本操作
数据库·mysql