mysql容器化部署:
數據持久化(方便數據保存及遷移):
需要持久化兩個目錄:
創建/mysql
(1)mysql配置文件:
/mysql/mysql-cnf/my.cnf
vim my.cnf
'''
[mysqld]
pid-file ? ? ? ?= /var/run/mysqld/mysqld.pid
socket ? ? ? ? ?= /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 risks
symbolic-links=0
max_connections=1000
#sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
#mysql57需要設置該參數
#show_compatibility_56=1
#mysql8中需要添加
secure_file_priv=/var/lib/mysql
'''
(2)數據存儲目錄:
#如果需要遷移將老數據拷貝到該目錄下
/mysql/mysql-data
注意:在啟動mysql容器前刪除兩個文件:ib_logfile0和ib_logfile1
(3)啟動容器
#此時版本為Mysql8
#拉取鏡像
docker pull mysql
#啟動容器同時掛載持久化目錄
docker run -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /mysql/mysql-data:/var/lib/mysql -v /mysql/mysql-cnf/my.cnf:/etc/mysql/my.cnf --name=mysql --restart=always 3218b38490ce
(4)查看是否啟動成功:
docker ps|grep mysql
(5)mysql8無法連接navicat解決方法:
①進入容器內部:
docker exec -it 容器ID /bin/bash
②登錄mysql:
mysql -u root -p
③輸入密碼:
root密碼為MYSQL_ROOT_PASSWORD=123456
④mysql用戶登錄密碼加密規則還原成mysql_native_password:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
⑤嘗試使用navicat連接mysql
注意:注意給配置文件賦權限