Docker(二)| 創建MySQL容器並持久化
- 下載
mysql
鏡像,命令:
docker pull mysql:5.7
- 創建
mysql
容器並設置掛載持久化和密碼root
,命令:
docker run -d -p 3306:3306 --name mysql -v /data/mysql:/data/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
- -d:守護進程
- -p 3306:3306:映射主機和容器之間的端口
- –name mysql:容器別名
- -v /data/mysql:/data/mysql:掛載/共享主機上的/data/mysql,方便持久化,不至於每次停止mysql容器都丟失數據
- -e MYSQL_ROOT_PASSWORD=root:設置數據庫的密碼爲:root
- 進入
mysql
容器,命令
docker exec -it mysql bash
- 設置
utf8
編碼格式
查看mysql字符集
,如果是以下的utf8
則不需要設置編碼格式,如果是latin1
編碼格式則需要
show variables like 'character_set_%';
執行命令:
vi /etc/mysql/my.cnf
找到 /etc/mysql/my.cnf
文件,然後編輯,加入下面的配置,沒有則加上,有則修改
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
如果vim命令不能用,提示:bash: vim: command not found
參考:Docker 問題 | 編輯文件出現 bash: vi: command not found.
- 重啓
mysql
,輸入下面命令:
service mysql restart
- 這時會停止容器,所以我們要再啓動容器:
docker start mysql
- 再進入
mysql
容器,命令
docker exec -it mysql bash
- 導入
sql 腳本
,在外面我有個smart_remmend.sql 的腳本
,裏面包含創建表結果和導入數據。
sql腳本創建:通過Navicat,選中數據庫—>右鍵—>選擇轉儲SQL文件—>結構和數據
通過Xftp
軟件放入上面第二步的主機掛載/共享
的目錄下,然後切換到掛載/目錄下
執行命令:
docker cp smart_recommend.sql mysql:/data/mysql
意思是將主機上的smart_recommend.sql文件複製到mysql容器下的/data/mysql目錄,因爲是掛載/共享目錄
導入如果出現這個:data too long for column ‘name’ at row 1
就需要設置編碼,重新查看第4步
- 登陸
mysql
,命令:
mysql -uroot -p
再輸入密碼(由於前面初始化設置了,密碼就是:root
)
- 執行sql腳本
首先創建名字爲smart_recommend
的數據庫,命令:
create database smart_recommend;
使用smart_recommend
數據庫,命令:
use smart_recommend;
執行sql腳本
,命令:(後面是sql腳本在容器中的路徑)
source /data/mysql/smart_recommend.sql
- 在Windows上用Navicat登錄 mysql 容器
查看虛擬機ip命令:ip a
端口號:3306
得到ip和端口,再使用用戶名:root
,密碼:root
登錄即可
登錄成功後如果看到數據庫中的字段裏的中文值出現亂碼,參考第4步
注意:
如果測試是否持久化,將上面步驟走完後,將mysql容器停止,再啓動mysql容器,查看上面導入的數據是否存在即可