背景
使用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/
复制以下内容,为了解决中文乱码问题
[mysqld]
pid-file = /var/run/mysqld/
socket = /var/run/mysqld/
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//
运行容器
docker run --restart=always -d -v /usr/local/mysql/conf/:/etc/mysql/ -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;
参考文章