准备docker环境
docker环境已就绪
准备mysql 环境相关文件
注释:主要是为了解决目前 pull超时问题
超时报错如下:(Error response from daemon: Get "https://index.docker.io/v1/search?q=mysql&n=25": dial tcp xx.xxx.xxx.xx:443: i/o timeout)
处理步骤:
1:目前国内可用源:[https://docker.m.daocloud.io]
2:更新源配置文件(目录):/etc/docker/daemon.json, 没有的话就新增此json
3:按 i 新增如下配置:
{
"registry-mirrors": [
"https://docker.m.daocloud.io"
]}
4:esc, wq保存此文件;
5: 执行刷新命令:
sudo systemctl restart systemd-resolved
sudo systemctl restart docker
6:我到此步骤 已经解决报错问题,如果你还是不好使的话 我还有几个思路,你参考一下:
7:检查防火墙: 是否可以先关闭防火墙来测试,sudo ufw disable
8:在配置文件(步骤3)中增加dns配置{ "dns": ["8.8.8.8", "114.114.114.114"]}
9:下载pull命令: docker pull docker.m.daocloud.io/mysql:8.0.3
mysql部署
1: mkdir -p /home/mysql/{conf,data,log}
2: vim my.cnf
#mysql 配置文件
[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
binlog_expire_logs_seconds = 2592000
#解决MySQL8.0版本GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'
run命令
#docker 启动命令
docker run -p 3306:3306 --restart=always --name mysql --privileged=true -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.3.0
结尾: ok 到此已经结束了, 你可以服务器中验证 或者在可视化工具中去严重