Docker安装MySQL,挂载外部配置和数据

3,806 阅读1分钟

背景

使用Docker容器搭建数据库,可以极为方便的移植到其他环境。本文有两种配置方式,一种是在全部文件数据都在容器内部,一种是挂载到外部配置和数据,这要的好处是打包的容器不会随着使用而越来越大。

挂载在容器内部配置文件和数据

docker拉取最新MySQL

docker pull mysql
docker images //查看是否有镜像

启动docker,创建MySQL

docker run --name=mysql -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

设置远程访问

use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;

挂载外部配置文件和数据

docker拉取最新MySQL

docker pull mysql:8.0.18

创建配置文件

可以根据需要设置到合适的目录

mkdir -p /usr/local/mysql/conf
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/logs

创建MySQL配置文件

vi /usr/local/mysql/conf/my.cnf

复制以下内容,为了解决中文乱码问题

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

运行容器

docker run --restart=always -d -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data/mysql:/var/lib/mysql  -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.18
-d 后台运行
-v 目录映射;主机目录:容器目录
-p 端口映射;主机端口:容器端口
-name 容器名称
-e 运行执行

设置远程访问

use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
flush privileges;

参考文章