1. 程式人生 > >Docker容器下MySQL遇到的兩個問題

Docker容器下MySQL遇到的兩個問題

今天在幫小夥伴部署Docker的時候遇到了兩個問題。特來總結一下。

1、MySQL資料庫Linux環境下設定表名不區分大小寫。

2、Docker中互相訪問的地址為Docker的容器地址,因此MySQL的地址需要設定為容器的IP地址。

首先解決第一個問題:

在Linux環境下,MySQL資料庫的表名預設是區分大小寫的。因此為了方便使用,需要設定MySQL資料庫表名不區分大小寫。因此可以修改MySQL的配置檔案 /etc/my.cnf 新增一行語句。lower_case_table_names=1[mysqld]lower_case_table_names=1pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql#log-error = /var/log/mysql/error.log# By default we only accept connections from localhost#bind-address = 127.0.0.1# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0修改說明如下:lower_case_table_names引數詳解:其中 0:區分大小寫,1:不區分大小寫MySQL在Linux下資料庫名、表名、列名、別名大小寫規則是這樣的:
  1. 資料庫名與表名是嚴格區分大小寫的;
  2. 表的別名是嚴格區分大小寫的;
  3. 列名與列的別名在所有的情況下均是忽略大小寫的;
  4. 變數名也是嚴格區分大小寫的;
MySQL在Windows下都不區分大小寫。如果想在查詢時區分欄位值的大小寫,則:欄位值需要設定BINARY屬性,設定的方法有多種:
  • 建立時設定:
CREATE TABLE T(A VARCHAR(10) BINARY);
  • 使用alter修改:
ALTER TABLE`tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
  • mysql tableeditor中直接勾選BINARY項。
在Docker中的修改操作如下:進入容器,找到配置檔案:docker exec -it mysql /bin/bashcd etc/mysql/mysql.conf.d然後將檔案拷貝到linux上修改:docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /root/testvi mysql.conf將檔案拷貝到容器當中:docker cp /root/test/mysql.conf mysql:/etc/mysql/mysql.conf.d/重啟服務:docker restart mysql

第二個問題:

Docker容器在啟動時便會配置IP地址,但如果忘記了可以使用如下命令獲得。

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器ID或名稱]

docker inspect [容器ID或名稱]

完結,撒花