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
相关推荐
2401_840192275 小时前
k8s的StorageClass存储类和pv、pvc、provisioner、物理存储的链路
docker·容器·kubernetes
因为奋斗超太帅啦8 小时前
MySQL学习笔记(一)——MySQL下载安装配置
笔记·学习·mysql
小王不会写code8 小时前
Docker安装、配置Redis
redis·docker
SDL大华9 小时前
【备忘】在Docker中安装宝塔面板,实现环境隔离,又能快速迁移服务器环境
服务器·docker·容器
搬码红绿灯9 小时前
数据库——MySQL数字函数和子查询
数据库·mysql
Android 小码峰啊10 小时前
Android Dagger 2 框架的注解模块深入剖析 (一)
android·adb·android studio·android-studio·androidx·android runtime
ifanatic10 小时前
[每周一更]-(第138期):MySQL 子查询详解:原理、应用及优化方案
数据库·mysql
TC139811 小时前
docker 终端打不开rviz2界面,报错qt.qpa.xcb: could not connect to display
docker·容器
kfepiza11 小时前
Debian编译安装mysql8.0.41源码包 笔记250401
数据库·笔记·mysql·debian·database
牛马小陈同学11 小时前
Kafka+Zookeeper从docker部署到spring boot使用完整教程
linux·spring boot·docker·zookeeper·kafka·prettyzoo·kafka-ui