1、安裝 MySQL
1.1、拉取mysql
docker pull mysql:5.7
1.2、啟動mysql
docker run -p 3306:3306 –name mysql
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7
參數說明
-p 3306:3306 將容器的3306埠映射到主機的3306埠,3306是和宿主機的通信介面,所有docker內部容器的連接使用3306介面,集群配置需連接容器內部3306埠,故最好保持前後埠一致
–name mysql 容器名字
-v
/mydata/mysql/log:/var/log/mysql 將配置文件夾掛載到主機
-v
/mydata/mysql/data:/var/lib/mysql 將日誌文件夾掛載到主機
-v
/mydata/mysql/conf:/etc/mysql 將配置文件夾掛載到主機
-e MYSQL_ROOT_PASSWORD=root 初始化 root 用戶的密碼
-d mysql:5.7 以守護進程方式啟動 mysql:5.7 鏡像
1.3. 查看啟動是否成功
docker ps
註:如啟動失敗可通過docker logs mysql查看日誌排錯

1.4、mysql 配置
vi /mydata/mysql/conf/my.cnf
文件內容如下:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect=’SET collation_connection = utf8_unicode_ci’
init_connect=’SET NAMES utf8′
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
#允許最大連接數;MySQL的max_connections參數用來設置最大連接(用戶)數。每個連接MySQL的用戶均算作一個連接,max_connections的默認值為100
#MySQL無論如何都會保留一個用於管理員(SUPER)登陸的連接,用於管理員連接資料庫進行維護操作,即使當前連接數已經達到了max_connections。因此MySQL的實際最大可連接數為max_connections+1;
這個參數實際起作用的最大值(實際最大可連接數)為16384,即該參數最大值不能超過16384,即使超過也以16384為準;
增加max_connections參數的值,不會佔用太多系統資源。系統資源(CPU、內存)的佔用主要取決於查詢的密度、效率等;
max_connections=1000
============== 2020/05/20 添加 ==============
bug:
導入 SQL 的時候出現 Error #1055
reason:
在MySQL5.7之後,sql_mode中默認存在ONLY_FULL_GROUP_BY,SQL語句未通過ONLY_FULL_GROUP_BY語義檢查所以報錯。
ONLY_FULL_GROUP_BY:ONLY_FULL_GROUP_BY要求select語句中查詢出來的列必須是明確的(其他語句也是一樣)。
fix:
1. 在配置文件 [mysqld] 下添加
sql_mode=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
2. 重啟 mysql 容器。
注意: mysql為容器的名字,不同的請更換。或使用容器ID即可。
docker restart mysql
=======================================
1.5、mysql 隨 docker 自啟動
docker update mysql –restart=always
注意:這裡的 mysql 是容器的名字,不是鏡像的名字。
1.6、進入 mysql (optional)
docker exec -it mysql /bin/bash
按Ctrl+D或輸入exit退出。
1.7、登錄 mysql (optional)
mysql -u root -p

注意:密碼root密碼是上面設置的root
1.8、修改mysql開啟遠程訪問
1.8.1、查看用戶信息
mysql> select host,user,plugin,authentication_string from mysql.user;

備註:host為 % 表示不限制ip localhost表示本機使用 plugin非mysql_native_password 則需要修改密碼
navicat鏈接錯誤;我們繼續往下看;

1.8.2、開啟遠程訪問:
mysql> ALTER user ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘root’;
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

註:如本機已安裝有mysql,3306埠被佔用,外部埠可以映射為其他埠,如下:
docker run -p 13306:3306 –name mysql …

1.9、查看日誌
docker logs mysql
1.10、開啟binlog日誌
查看是否開啟binlog日誌:
show variables like ‘%log_bin%’

找到剛掛載到本地的mysql設置目錄/mydata/mysql/conf
[root@slave132 conf]# cd /mydata/mysql/conf
[root@slave132 conf]# ll
總用量 4
-rw-r–r–. 1 root root 481 9月 22 10:12 my.cnf
[root@slave132 conf]# vi my.conf

新增內容如下:
#binlog setting
log-bin=/var/lib/mysql/mysql-bin server-id=12345
第一個參數:作用是mysql會根據這個配置自動設置log_bin為on狀態,自動設置log_bin_index文件為你指定的文件名後跟.index
第二個參數:用的如果是5.7及以上版本的話,重啟mysql服務會報錯,這個時候我們必須還要指定這樣一個參數,隨機指定一個不能和其他集群中機器重名的字元串,如果只有一台機器,那就可以隨便指定了
設置完後重啟mysql容器
docker restart mysql
show variables like ‘%log_bin%’

這個時候,在資料庫中創建一個資料庫、表,插入一些數據,就會在/var/lib/mysql容器中看到以下,或者是看掛載出來對應的目錄上(/mydata/mysql/data)

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231183.html
微信掃一掃
支付寶掃一掃