Docker从0安装MySql8(Linux)

前言

Manjaro 安装MySQL8很简单粗暴,为什么还要装 Docker 呢?

滚动更新惹得祸!!!

当前状态 MySQL8.0.16 更新之后需要 GLIBGXX_3.4.26 ,我这里的 GCC 8.3.0-1版本正好没有 GLIBGXX_3.4.26 ,但是还是最新的,搞了一次社区 GCC 9.1.0 版本,操作系统都起不来了。

最后选择Docker,确实简单粗暴!

此处MySql是一个示例,其它安装操作一样的。

安装

ArchLinux 安装

1
2
3
sudo pacman -S docker
sudo systemctl enable docker
sudo systemctl start docker

其它安装

Ubuntu Docker 安装
CentOS Docker 安装
Windows Docker 安装
MacOS Docker 安装

使用其它国内源(可跳过)

直接使用

1
docker pull registry.docker-cn.com/library/mysql

配置源

使用 –registry-mirror 配置 Docker 守护进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vim /etc/docker/daemon.json
# 写入
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}

sudo systemctl restart docker

使用清华大学 yum 源

1
sed  's!//download\.docker\.com!//mirrors.tuna.tsinghua.edu.cn/docker-ce!g' -i /etc/yum.repos.d/docker-ce.repo

安装MySQL8

一、镜像安装

查找 MySql 镜像

1
sudo docker search mysql

获取 MySql 镜像

1
sudo  docker pull mysql

这里下载好的镜像为最新版的 MySql

Downloaded newer image for mysql:latest

启动镜像

1
2
3
4
5
6
7
8
9
# 创建容器
sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=maxzhao -d mysql
# 启动
sudo docker start mysql
# 进入容器
sudo docker exec -it mysql bash
# 登录mysql 密码 maxzhao
# 注意:这是容器内登录
mysql -u root -p

实例

1
2
3
4
5
6
7
8
mkdir -p /opt/mysql8/data /opt/mysql8/logs /opt/mysql8/conf
cd /opt/mysql8
sudo docker run -p 3306:3306 --name mysql \
-v /opt/mysql8/conf:/etc/mysql/conf.d \
-v /opt/mysql8/logs:/logs \
-v /opt/mysql8/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=xxx1 \
-d mysql

命令说明

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
  • -v /opt/mysql8/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
  • -v /opt/mysql8/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
  • -v /opt/mysql8/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
  • -e MYSQL_ROOT_PASSWORD=maxzhao:初始化 root 用户的密码。
  • -d mysql:IMAGE 的名称

二、Dockerfile 构建

仔细思考了一下,还是把这章去掉了,毕竟,这篇文章讲的是新手操作。

我们的需求是用MySql而不是操作Docker

其它操作

解决需要添加sudo的问题

1
2
3
4
# sudo gpasswd -a 用户名 用户组
sudo gpasswd -a maxzhao docker
# groups 用户名 查看所在组
groups maxzhao

查看容器运行情况

1
docker ps 

创建用户

1
2
3
4
5
CREATE USER 'maxzhao'@'localhost' IDENTIFIED BY 'maxzhao';
grant all privileges on *.* TO 'maxzhao'@'localhost' WITH GRANT OPTION;

CREATE USER 'maxzhao'@'%' IDENTIFIED BY 'xxx';
GRANT ALL PRIVILEGES ON *.* TO 'maxzhao'@'%' WITH GRANT OPTION;

容器外登录MySQL

1
2
3
# mysql 登录工具
sudo pacman -S mysql-clients
mysql -h127.0.0.1 -uroot -p

查看镜像

1
2
sudo docker images
sudo docker ps

启动镜像

1
sudo docker start mysql

RUN | START

docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。

推荐:

MySQL8.0创建用户及其配置

本文地址: https://github.com/maxzhao-it/blog/post/43590/