目錄
一、Docker搭建MySQL
1. 獲取鏡像
docker pull mysql:5.7
2. 運行鏡像
2.1 不映射目錄
docker run -itd -p 主機端口:3306 -e MYSQL_ROOT_PASSWORD= 密碼 鏡像id
- -p 3306:3306 即將容器的3306端口映射到主機的3306端口上
- -e MYSQL_ROOT_PASSWORD=123456 設置用戶爲root,密碼爲123456
不映射目錄的情況下數據不能持久化保存,容器沒了就得跑路了
2.2 映射目錄
docker run -itd -p 主機端口:3306 -v 宿主機目錄:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= 密碼 鏡像id
- -v 宿主機目錄:容器目錄 將容器內的目錄文件映射到宿主機對應的目錄下
這樣就容器內的 /var/lib/mysql 目錄映射到了宿主機的D:/volume/mysql目錄上,容器沒了數據還在
2.3 設置UTF-8格式
docker run -itd -p 主機端口:3306 -e MYSQL_ROOT_PASSWORD=密碼 --mysql --character-set-server=utf8 --collation-server=utf8_general_ci 鏡像id
–character-set-server=utf8 : 設置字符集爲utf8
–collation-server=utf8_general_cli : 設置字符比較規則爲utf8_general_cli
3. 遠程連接
3.1 登錄MySQL
docker exec -it 容器id bash
mysql -u root -p
輸入剛纔設置的密碼
3.2 設置允許遠程登錄
grant all privileges on *.* to 'root'@'%' identified by 'MYSQL密碼';
flush privileges;
3.4 測試
新建一個數據庫Test
如果設置了目錄映射的話就能在宿主機中看見了
4.常見問題
4.1 中文亂碼問題
進入容器內,執行
echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf
service mysql restart
4.2 降低容器佔用內存
進入容器內,執行
vim /etc/mysql/mysql.conf.d/mysqld.cnf
在該文件的最後追加
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
重啓容器或者重啓MySQL服務即可