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;
相关推荐
小白银子1 小时前
零基础从头教学Linux(Day 60)
linux·数据库·mysql·oracle
憋问我,我也不会1 小时前
MYSQL 命令
数据库·mysql
计算机小手2 小时前
使用 llama.cpp 在本地高效运行大语言模型,支持 Docker 一键启动,兼容CPU与GPU
人工智能·经验分享·docker·语言模型·开源软件
无泡汽水2 小时前
MySQL入门练习50题
数据库·mysql
岚天start3 小时前
KubeSphere在线安装单节点K8S集群
docker·容器·kubernetes·k8s·kubesphere·kubekey
xyhshen3 小时前
记录一次K8S跨命名空间访问 xxx.xxx.svc.cluster.local 类似内部服务不通的问题
云原生·容器·kubernetes
栗子~~3 小时前
shell-基于k8s/docker管理容器、监控模型训练所消耗的最大CPU与最大内存脚本
docker·容器·kubernetes
海鸥813 小时前
在k8s中部署seaweedfs,上传文件到seaweedfs方法
云原生·容器·kubernetes
半梦半醒*3 小时前
k8s——pod详解2
linux·运维·docker·容器·kubernetes·负载均衡
AAA小肥杨3 小时前
K8s从Docker到Containerd的迁移全流程实践
docker·容器·kubernetes