Docker安装Mysql

前言

本章将使用docker安装Mysql,前提条件是已经安装完docker并会使用docker。
如果还没有安装docker,可以参考在CentOS7下安装Docker
如果还不会docker,但需要学习mongodb相关的知识,可以参考另一篇博客,那里详细讲述了如何在Linux上安装Mysql环境。

附上博客链接 博客传送门

安装MySql

在dockerhub上查找镜像


拉取镜像

这里我们拉取官网最新8.0镜像

[root@e2ab0x9jme3furrd ~]# docker pull mysql

查看镜像

在镜像列表中我们可以看到刚刚拉取的镜像

[root@e2ab0x9jme3furrd ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    b05128b000dd   10 days ago    516MB
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB
centos        latest    5d0da3dc9764   2 months ago   231MB

创建数据目录和配置文件

在宿主机创建mysql的配置文件的目录和数据目录

$ mkdir -p /usr/mysql/conf /usr/mysql/data

创建配置文件

在配置文件目录下创建MySQL的配置文件my.cnf

$ vim /usr/mysql/conf/my.cnf

添加配置文件信息

[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file        = /var/run/mysqld/mysqld.pid
#socket          = /var/run/mysqld/mysqld.sock
#datadir         = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
datadir = /usr/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/

创建容器

[root@e2ab0x9jme3furrd ~]# docker run --restart=unless-stopped -d --name mysql01 -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
e364ef1e8a4f7fa6f50ac66edfe5d66e7441e0ecc005fa6c43e9f5dc6237ece1

参数解释:
-v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录
-d : 后台运行容器
-p 映射容器端口号和宿主机端口号
-e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码

查看容器启动情况

[root@e2ab0x9jme3furrd ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
e364ef1e8a4f   mysql     "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql01

** 问题:虽然已经安装好了mysql,但是无法使用navicat工具进行连接时报错,即无法远程连接。**

解决问题

进入容器内部

[root@e2ab0x9jme3furrd ~]# docker exec -it mysql01 /bin/bash

连接mysql

root@e364ef1e8a4f:/# mysql -uroot -p
Enter password: 

修改访问主机以及密码,设置所有主机可访问

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.01 sec)

刷新权限

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

至此,通过Docker方式安装Mysql成功!!!

原文地址:https://www.cnblogs.com/Gazikel/p/15675924.html