使用 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM