一、拉取鏡像
docker pull mysql:5.7
創(chuàng)建數(shù)據(jù)目錄
mkdir /usr/local/dockerdata/mysql/conf
mkdir /usr/local/dockerdata/mysql/logs
mkdir /usr/local/dockerdata/mysql/mysql
二、創(chuàng)建配置文件
設(shè)置編碼為utf8mb4
cd /usr/local/dockerdata/mysql/conf
vi my.cnf
需要手動(dòng)添加上[client]和[mysql]。
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
default-time_zone = '+8:00' #默認(rèn)時(shí)區(qū)配置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#設(shè)置數(shù)據(jù)庫支持分組
lower_case_table_names=1 #表名不區(qū)分大小寫
設(shè)置utf8編碼只需要在 [mysqld]后添加 character_set_server=utf8
三、運(yùn)行鏡像
docker run --restart always -p 33306:33306 --name mysql -v /usr/local/dockerdata/mysql/conf/my.conf:/etc/mysql/my.cnf -v /usr/local/dockerdata/mysql/logs:/logs -v /usr/local/dockerdata/mysql/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
四、進(jìn)入鏡像
docker exec -it mysql bash
五、 進(jìn)入mysql
mysql -uroot -p
六、 設(shè)置遠(yuǎn)程可以登錄
現(xiàn)在這樣是無法在本地用工具登錄訪問的,現(xiàn)在要做兩件事,一件事是將云服務(wù)器上的3306端口開放;另一件事是配置遠(yuǎn)程可以訪問。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;
解決Navicat連接docker中mysql容器10060/10061錯(cuò)誤
1.關(guān)閉防火墻
stemctl status firewalld 查看防火墻狀態(tài)
service iptables stop 永久關(guān)閉防火墻
systemctl stop firewalld 暫時(shí)關(guān)閉防火墻
2.指定容器內(nèi)部端口為3306

因?yàn)槲胰萜髦杏衅渌麘?yīng)用的端口用到3306所以這里改了,若容器內(nèi)沒有把3306端口占用
docker run --restart always -p 33306:3306 --name mysql -v /usr/local/dockerdata/mysql/conf/my.conf:/etc/mysql/my.cnf -v /usr/local/dockerdata/mysql/logs:/logs -v /usr/local/dockerdata/mysql/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
3.進(jìn)入 mysql.conf 把bind-address去掉注釋同時(shí)改為0.0.0.0,并且加上port=33306。再重啟mysql容器就可以了。