前言
本章将使用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成功!!!