【运维篇】Docker安装启动MySQL8
·
Docker安装启动MySQL8
文章目录
1.1-拉取镜像
# 1.拉取镜像
docker pull mysql:8.0
1.2-MySQL文件挂载到 Linux 中
创建配置文件路径
vim /liuhanlin/docker-solftware/solft-config/mysql-config/my.cnf
在配置文件中写入如下内容,这里是 mysql8.0 的配置文件示例
[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满
expire_logs_days=30
#解决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'
给文件目录开权限
chmod 777 /liuhanlin/docker-solftware/log/mysql-log/log
chmod 644 /liuhanlin/docker-solftware/solft-config/mysql-config/my.cnf
my.cnf配置文件必须设置644权限,设置777在登录mysql时报警告配置文件无法生效。
1.3-启动 MySQL 镜像
docker run -p 3306:3306 \
--restart=always \
--name mysql \
--privileged=true \
-v /home/mysql/log:/liuhanlin/docker-solftware/log \
-v /home/mysql/data:/liuhanlin/docker-solftware/data/mysql-8.0-data \
-v /home/mysql/conf/my.cnf:/liuhanlin/docker-solftware/solft-config/mysql-config/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0 \
--lower-case-table-names=1
- -p:主机端口:容器端口
- -d:启动的镜像名称
- –name:设置容器名称
- –privileged=true:赋予容器权限修改宿主文件权利
- –restart=always:设置docker启动时,容器跟随自启
- –lower-case-table-names=1:用于指定表名是否进行大小写不敏感的处理
- -e MYSQL_ROOT_PASSWORD=123456:设置MySQL的root用户的密码
- -v /home/mysql/log:/var/log/mysql:挂载容器日志到宿主,方便查看日志
- -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf:挂载容器配置文件到宿主,方便修改配置文件
- -v /home/mysql/data:/var/lib/mysql:挂载容器存储文件到宿主,避免因不小心卸载容器或者容器损坏导致数据丢失不可找回风险。
注意点:-v 参数前面路径的是docker镜像里的路径,后面这个可以自己设置,我设置的就是/liuhanlin/docker-solftware
1.4-踩坑
1.4.1-docker 杀死容器后,使用相同的容器名,再次重启时报错
在杀死容器后,再次重启时报错,问题如下

解决:
- 使用
docker ps -a命令能够看到所有docker容器,包括已经被杀死的 - 使用
docker rm 容器id/容器名 - 然后再使用
docker ps -a可以看到删除了,再次运行时就不会出现这种问题了
1.4.2-在远程使用DBeaver等工具连接不上容器中的 MySQL
使用SQLYog 连接时报错

解决:进入到容器中的MySQL 中,连接上MySQL 后执行如下命令
进入docker 的MySQL
# 进入docker
docker exec -it 容器名 bash
# 登录MySQL
mysql -u用户名 -p -P3306
# 如下示例
docker exec -it mysql bash
mysql -uroot -p -P3306
执行如下命令
ALTER USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
# 如下示例;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)