docker 安装mysql 5.7

1,docker 安装mysql 5.7

下载MySQL5.7的docker镜像

bash 复制代码
docker pull mysql:5.7

使用如下命令启动MySQL服务:

bash 复制代码
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

参数说明

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
  • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
  • -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

遇到问题:如果遇到如下问题,说明映射的配置文件有问题

bash 复制代码
root@liusongshan-X55VDR:/etc# docker logs 6c69c0c7e86174b60597b515d0cec9018ea58f109f9ecfac2396beeac0c593f5
2023-09-14 07:01:37+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.43-1.el7 started.
2023-09-14 07:01:37+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
        command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.5pVGLvMw7t
        mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

解决方式:

在/mydata/mysql/conf下面执行创建.cnf文件,文件名随意

bash 复制代码
touch my.cnf

2,修改密码

1.查看启动的MySQL容器id

bash 复制代码
docker ps |grep mysql

2.进入启动的MySQL容器中

bash 复制代码
docker exec -it a00ba5071c1e /bin/bash

3.修改MySQL配置文件

在最后一行添加skip-grant-tables代码( //跳过mysql的密码验证)

(如果容器中没有vim命令的话,可以依次使用命令apt-get update ,apt-get install vim 下载安装vim)

bash 复制代码
vim /etc/mysql/conf.d/docker.cnf

4.重启数据库

bash 复制代码
service mysql restart

5.重启MySQL容器

bash 复制代码
docker restart a00ba5071c1e

6.再次进入启动的MySQL容器内

bash 复制代码
docker exec -it a00ba5071c1e /bin/bash

6.使用语句mysql -u root -p 语句

登录数据库,不用输入密码,直接回车

mysql -u root -p

7.使用MySQL数据库

use mysql

8.更新用户密码

update mysql.user set authentication_string=password('123') where user='root';

9.退出mysql

10.再次编辑mysql配置文件

删除刚刚添加的skip-grant-tables

bash 复制代码
vim /etc/mysql/conf.d/docker.cnf

11.再次重启mysql

bash 复制代码
service mysql restart

12.再次重启docker容器

bash 复制代码
docker restart a00ba5071c1e

3,开启远程访问

sql 复制代码
use mysql;

-- 修改host
update user set host = '%' where user = 'root';

-- 配置生效
flush privileges;
相关推荐
五阿哥永琪6 小时前
MySQL中操作json的函数!
数据库·mysql·json
来者皆善6 小时前
了解Mysql优化吗?如何优化索引?
数据库·mysql
隔窗听雨眠11 小时前
生产级Kubernetes集群部署完全指南:从kubeadm到高可用架构落地
容器·架构·kubernetes
Ai拆代码的曹操11 小时前
MySQL GROUP BY 性能优化:执行计划分析 + 索引重构实战
mysql·性能优化·重构
小小洋洋11 小时前
OpenWrt 从U盘迁移到内置 eMMC,并完成扩容与 Docker 安装
java·docker·eureka
Eloudy12 小时前
docker build 与 docker buildx build 的应用场景
docker·构建
瞬间&永恒~12 小时前
【Docker】(三)联合文件系统UnionFS + Overlay2
docker·云原生·容器
数据知道15 小时前
主机入侵检测(HIDS):OSSEC / Wazuh 部署与规则编写
安全·网络安全·docker
安_15 小时前
MySQL SQL 调优完整指南
数据库·sql·mysql
逐光老顽童16 小时前
第 5 章:搞懂 K8s Service:从 ClusterIP 到负载均衡
docker·云原生·容器