mysql版本: 8.0.29
拉取myql (镜像已上传阿里云,解决国内仓库被封的问题)
docker pull docker:8.0.29
通过命令运行docker (由于安装tars需要关闭 ssl 以及启用 mysql_native_password)
docker run -d --restart=always --net=host -p 3308:3306 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=lbkj168188 -e TZ=Asia/Shanghai --privileged registry.cn-hangzhou.aliyuncs.com/a_rm64/mysql-arm64:8.0.29 --skip_ssl --default-authentication-plugin=mysql_native_password
通过docker-compose运行docker
services:tars-mysql:image: mysql:8.0.29ports:- "3310:3306"networks:tars_net:ipv4_address: 172.25.0.2environment:MYSQL_ROOT_PASSWORD: "tars@12345"TZ: Asia/Shanghairestart: alwaysvolumes:- ~/app/tars/framework-mysql:/var/lib/mysql- /etc/localtime:/etc/localtime
下载容器内的配置文件
docker cp 容器ID:/etc/my.cnf .
修改配置文件后保存
[mysqld]
# 设置InnoDB缓冲池大小。对于专用服务器,建议从总RAM的70%开始设置;对于非专用服务器,从10%开始。
# 示例:如果你的服务器有4GB RAM,专用服务器可以设置为3GB(约3072M),非专用服务器为400M。
# innodb_buffer_pool_size = 128M# 启用二进制日志,这对于数据备份和恢复非常重要。
# log_bin# 这些设置主要用于报告服务器,默认值对事务和快速SELECT操作更快。
# 根据需要调整大小,通过实验找到最佳值。
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M# 禁用主机缓存,减少DNS解析的依赖,提高性能。
skip-host-cache# 禁用主机名解析,提高性能。
skip-name-resolve# 数据目录
datadir=/var/lib/mysql# 套接字文件位置
socket=/var/run/mysqld/mysqld.sock# 限制LOAD DATA, SELECT ... OUTFILE, 和 LOAD_FILE()等操作的目录。
secure-file-priv=/var/lib/mysql-files# 运行MySQL服务的用户
user=mysql# 禁用SSL (适配tars)
skip_ssl# 切换回旧的认证插件以增加与旧客户端的兼容性 (适配tars)
default-authentication-plugin=mysql_native_password# PID文件位置
pid-file=/var/run/mysqld/mysqld.pid[client]
# 客户端使用的套接字文件位置
socket=/var/run/mysqld/mysqld.sock# 包含其他配置文件的目录
!includedir /etc/mysql/conf.d/
# 注意:上面的"!includedir"行本身不是注释,它告诉MySQL去包含指定目录下的所有配置文件。
# 如果你想要添加注释来说明这一行的作用,可以在前面加上"#"。
# 例如:
# # 包含其他配置文件的目录
# !includedir /etc/mysql/conf.d/
上传配置文件覆盖容器内文件
docker cp my.cnf 容器ID:/etc/my.cnf
重启容器
docker restart 容器ID
由于 MySQL 8 开始,默认的 authentication plugin 从 mysql_native_password 修改为 caching_sha2_password,需要手动修改 root 用户的 plugin,以此来兼容旧的 mysqlclient 能正常连接 MySQL 8,登录 MySQL 执行以下语句:
#进入容器
docker exec -it 容器ID /bin/bash#登录mysql
mysql -u root -p#设置mysql_native_password 密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'tars@12345';#刷新配置
FLUSH PRIVILEGES;