在Ubuntu中使用Docker启动MySQL8的天坑

这篇具有很好参考价值的文章主要介绍了在Ubuntu中使用Docker启动MySQL8的天坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

简介: lower_case_table_names 是mysql设置大小写是否敏感的一个参数。

1.参数说明:

lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
unix,linux下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2

 lower_case_table_names最奇葩的地方就在于不同系统下的默认值是不一样的。不同的默认值设定就可能会导致同一个.sql文件中建表SQL语句在不同系统中失效,从而在数据库中(例如在Ubuntu系统下)出现单词相同但分别是大写和小写的两张数据表,更可怕的是,可能出现同名的外键从而产生错误。

2.查看方法:

# 进入mysql命令行 执行以下任一语句查看:
show variables like 'lower_case_table_names';
select @@lower_case_table_names;

在Ubuntu中使用Docker启动MySQL8的天坑,docker,容器,mysql

在Ubuntu下用DOCKER启动MySQL8,如果表格的大小写确实很重要的话,必须在第一次运行docker run时,添加上--lower_case_table_names=1 这个配置项

docker run -it -d --name mysql --net=host  --restart=always -p 3306:3306 -v /root/mysql/data:/var/lib/mysql -v /root/mysql/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql --lower_case_table_names=1

如果MYSQL启动起来了,数据库中内容改变了,并且容器与Ubuntu中有映射的话,等出现大小写问题是,就没有办法再修改 --lower_case_table_names的值了。

采用停止并删除原有容器,用docker run创建新容器,添加上 --lower_case_table_names,但只要你的映射(-v)与之前的容器是一样的(这样做是希望新容器中仍然能有原容器中创建的数据库与数据表),那新容器会在启动后(可以生成ID)几秒钟发生错并退出,如果你在docker run中还添加了 --restart=always,那就会看到容器一直在不停从重启。

采用网上给出的修改my.conf文件的方式添加 --lower_case_table_names=1,再新建容器的方式只适合DOCKER MySQL5.7,对DOCKER MySQL8的容器会依然是无效的。

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
lower_case_table_names=1

最后的结论就是,如果在Ubuntu或Linux环境中,启用DOCKER MySQL8,就务必记得在第一次启动,也就是MySQL8数据库最“干净”时候,添加上--lower_case_table_names=1 文章来源地址https://www.toymoban.com/news/detail-644456.html

到了这里,关于在Ubuntu中使用Docker启动MySQL8的天坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker 运行一个Ubuntu 容器 无法启动的问题

    我的环境 : Windows docker desktop + WSL2 Ubuntu 20.04 + Windows Terminal 运行一个Ubuntu容器 (这一步已经有问题了) 查看已有的容器: 发现我们已经根据 Ubuntu镜像创建了一个容器 查看在运行的容器 但是发现没有在运行的容器 手动启动一下创建的Ubuntu容器 然后再次查看正在运行的容器 do

    2024年02月02日
    浏览(43)
  • Docker启动多个mysql容器

    原有镜像mysql5.7.41,已启动mysql容器端口3306,再启动一个端口号为3400的容器。指定用户名root,mima ,密码123456 命令: docker run --name zjfz-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3400:3306 -d mysql 名字:zjfz-mysql 端口号:3400 效果:使用navicat连接刚指定端口的mysql,连接成功。 1、创建其他用户

    2024年02月06日
    浏览(52)
  • Ubuntu虚拟机下docker容器的自启动设置

    一.背景 希望启动虚拟机后,当然docker自动启动了的情况下,我们希望对应的容器也自动启动,比如tomcat或者redis。 二.设置过程 1.如果是已经有容器实例了,修改吧 命令为:sudo docker update --restart=always  容器id或者名称 不知道名称或者id,可以输入命令查看:sudo docker ps -a 关

    2024年02月09日
    浏览(54)
  • K8S部署后的使用:dashboard启动、使用+docker镜像拉取、容器部署(ubuntu环境+gpu3080+3主机+部署深度学习模型)

    0、k8s安装、docker安装 参考:前两步Ubuntu云原生环境安装,docker+k8s+kubeedge(亲测好用)_爱吃关东煮的博客-CSDN博客_ubantu部署kubeedge  配置节点gpu: K8S调用GPU资源配置指南_思影影思的博客-CSDN博客_k8s 使用gpu 1、重置和清除旧工程:每个节点主机都要运行 2、部署新的k8s项目:

    2023年04月20日
    浏览(62)
  • 解决docker启动mysql容器失败问题

    声明:我使用的mysql版本为:8.0.21 当我通过docker使用以下命令启动mysql mysql/data 是数据库文件存放的地方。必须要挂载到容器外,否则容器重启一切数据消失。 mysql/log 是数据库主生的log。建议挂载到容器外。 /etc/localtime:/etc/localtime:ro 是让容器的时钟与宿主机时钟同步,避免

    2024年02月11日
    浏览(61)
  • docker安装mysql容器创建成功但无法启动问题

    在我之前的文章里 使用docker安装mysql中在拉取了mysql:5.7版本的镜像后,使用了以下命令来创建容器,容器创建成功,但无法启动,如下: 执行创建命令后,docker ps 查看正在运行中的容器,显示为空, docker ps -a 查看,mysql容器已经创建成功,但是在创建好之后就退出了 鉴于上

    2024年02月12日
    浏览(41)
  • 【Docker 】Docker 客户端,容器使用,启动容器,启动已停止运行的容器,停止一个容器,进入容器

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 可以通过命令 dock

    2024年02月11日
    浏览(46)
  • docker启动容器指定时区 解决mysql时间非北京时间问题

    运行docker镜像的时候可以指定环境变量TZ来设置使用那个时区的时间。如果不指定有些镜像在制作的时候设置了跟自己想用的时区不一样的时区就会出现尴尬的问题。 指定使用东八区时区命令如下: docker run -e TZ=Asia/Shanghai … docker启动mysql容器命令,指定库表编码:

    2024年02月14日
    浏览(49)
  • Linux aarch64架构中使用docker安装mysql8

    1、遇到问题: 官网下载mysql包,安装完成后,启动mysql一直显示-bash: ./mysqld: 无法执行二进制文件。 网上找了各种资料,但是都没有作用,怀疑自己操作姿势不正确,以为是自己包下错了(其实也是包不对),重新下载了不同的各种包,换了各种安装方法,发现仍旧启动不了

    2024年02月14日
    浏览(49)
  • 使用docker 生成镜像,并启动容器。

    指令详情: 指令 解析 FROM 指定基础镜像,必须为第一个命令 MAINTAINER 维护者邮箱等信息 RUN 构建镜像docker build时执行的命令 ADD 将本地文件添加到容器中,tar 类型文件会自动解压 COPY 功能类似ADD,但是是不会自动解压文件,也不能访问网络资源 CMD 在docker run时会执行的命令,

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包