使用 docker 安装 mysql

安装mysql

  • cmd(以管理员身份运行)
  • 查看docker版本,是否安装成功:docker --version
  • 拉去docker mysql镜像: docker pull mysql:latest (国内镜像daocloud.io/library库下载 docker pull daocloud.io/library/mysql:5.7)
  • 查看镜像是否存在:docker images
  • 启动mysql镜像:docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    • -itd 表示启动交互式会话模拟linux tty 但是docker将会分离并且在后台运行
    • --name mysql-test 表示容器名称
    • -p 3306:3306 表示从docker的服务器端口(后)映射到主机的端口(前)
    • -e MYSQL_ROOT_PASSWORD=123456 表示配置用户名和密码(root用户密码123456)
    • mysql 表示需要启动的镜像名称
  • 查看mysql服务是否在docker运行:docker ps
docker run -itd --restart=always --name mysql-8.0.0 -p 3306:3306 -v D:/dockervolumes/mysql_8_0_0_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.0

mysql大小写敏感问题

在docker安装MySQL后,进行项目连接数据库,发现查询的表不存在了:Table 'XXXX.XXXX' doesn't exist

Linux下:

  • 数据库名与表名是严格区分大小写的;
  • 表的别名是严格区分大小写的;
  • 列名与列的别名在所有的情况下均是忽略大小写的;
  • 变量名也是严格区分大小写的;

Windows下:

  • 都不区分大小写

lower_case_table_names 参数说明

参数值 解释
0 使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows或Mac OS x上我们不能将该参数设为0,如果在大小写不敏感的文件系统上将–lowercase-table-names强制设为0,并且使用不同的大小写访问MyISAM表名,可能会导致索引破坏。
1 表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写在存储和查找表上。该行为也适合数据库名和表的别名。该值为Windows的默认值。
2 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上。名称比较对大小写不敏感,即按照大小写来保存,按照小写来比较。注释:只在对大小写不敏感的文件系统上适用! innodb表名用小写保存。

Docker 部署 MySql 并修改为大小写不敏感

  • 直接在Docker启动的时候,添加参数,设置为对小写不敏感

    docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --lower_case_table_names=1
    
  • Docker容器内进行修改(将文件var/lib/mysql 挂载出来可直接在宿主机修改)

    • 进入 docker 容器 MySQL: docker exec -it mysql /bin/bash
    • 进入配置文件目录: cd /etc/mysql/conf.d
    • 需要用到vim(安装过的请跳过)
      • apt-get update
      • apt-get install vim
    • 启动编辑配置文件: vim mysqld.cnf
    • 在[mysqld]下添加 lower_case_table_names=1
    • 退出重启

折腾了半天还是无法通过修改配置忽略大小写问题。索性删掉容器重新启动(直接在Docker启动的时候,添加参数,设置为对小写不敏感)

后面遇到再研究吧!!!

参考:
http://t.zoukankan.com/aixing-p-13327251.html
https://stackoverflow.com/questions/51803216/lower-case-table-names-settings-in-mysql-8-0-12

posted @ 2021-10-27 22:01  weichangk  阅读(1617)  评论(0编辑  收藏  举报