自定义修改我们需要的mysql8数据库并打包镜像
1、sql文件内容 1.sql
- mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接。
- 启动容器后root密码为123,需要自己修改下密码。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
2、mysql.cnf配置文件
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
# 开启事件
event_scheduler = 1
# 设置时区为东八区
default-time-zone = '+8:00'
# 修改log_bin_trust_function_creators=1,不然无法创建函数
log_bin_trust_function_creators = 1
[mysql]
default-character-set=utf8
3、Dockerfile文件内容
# mysql 官方镜像
FROM mysql:8.0.27
# 作者
# 复制配置文件
COPY mysql.cnf /etc/mysql/conf.d/
# 把要执行的sql文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个sql
COPY 1.sql /docker-entrypoint-initdb.d/
# 给执行文件增加可执行权限
RUN chmod a+x /docker-entrypoint-initdb.d/1.sql
4、根据dockerfile编译新镜像
# 构建镜像
docker build -t 6013/mysql:8.0.27 .
# 运行容器,-e MYSQL_ROOT_PASSWORD=123 这个参数不能少,设置的密码没用,默认还是123
docker run -d --restart=always --name mysql8 -p 5306:3306 -e MYSQL_ROOT_PASSWORD=123 6013/mysql:8.0.27
# 根据实际情况修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
FLUSH PRIVILEGES;