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
相关推荐
Fleshy数模5 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
az44yao6 小时前
mysql 创建事件 每天17点执行一个存储过程
mysql
秦老师Q7 小时前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
橘子138 小时前
MySQL用户管理(十三)
数据库·mysql
Dxy12393102168 小时前
MySQL如何加唯一索引
android·数据库·mysql
我真的是大笨蛋8 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化
怣508 小时前
MySQL数据检索入门:从零开始学SELECT查询
数据库·mysql
啦啦啦小石头8 小时前
Docker 换源
docker
人道领域9 小时前
javaWeb从入门到进阶(SpringBoot事务管理及AOP)
java·数据库·mysql
千寻技术帮10 小时前
10404_基于Web的校园网络安全防御系统
网络·mysql·安全·web安全·springboot