参考 : docker安装Mysql8.0并挂载外部配置和数据-八零岁月
1.下载镜像
docker pull mysql:8.0.23
2.启动mysql
work_path=`pwd`
# 创建挂载目录
mkdir -p $work_path/conf
mkdir -p $work_path/logs
mkdir -p $work_path/data
# 创建index.html
cat > $work_path/conf/my.cnf << 'EOF'
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[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
# 最大连接数
max_connections = 1000
# binlog保存2日
expire_logs_days = 2
# 时区设置
default-time_zone = '+8:00'
# Custom config should go here
!includedir /etc/mysql/conf.d/
# 关闭binlog
skip-log-bin
EOF
# 挂载目录启动mysql
echo "docker run --restart=always -d \
-v $work_path/conf/my.cnf:/etc/mysql/my.cnf \
-v $work_path/logs:/logs \
-v $work_path/data/mysql:/var/lib/mysql \
-p 3306:3306 --name mysql \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.23" > run.sh
sh run.sh
sleep 10s
# 查看数据库列表
docker exec -it --env LANG=C.UTF-8 mysql /bin/bash -c 'mysql -uroot -p123456 -e "show databases" -vvv'
3.开启远程访问
set global time_zone = '+8:00';
set time_zone = '+8:00';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER "root"@"localhost" IDENTIFIED BY "123456";
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;
123456 是root账户的密码
6.连接
本地连接
mysql -uroot -p123456
远程连接
mysql -h 1.1.1.1 -P 3306 -uroot -p123456
END。