拉取官方镜像
% sudo docker pull mysql:5.7
启动mysql
- 建立数据文件夹
% mkdir /home/jon/data/jed
- 启动镜像
% sudo docker run --name jed-mysql -v /home/jon/data/jed:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="1234" -p "127.0.0.1:3306:3306" -d mysql:5.7 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
75d087e0566dbee6ad54eac362c1bea909da36607bc494f6d56cc1eb2828a90b # 返回的容器ID
-v选项,是把宿主机的/home/jon/data/jed目录映射到容器的/var/lib/mysql数据目录;
-e MYSQL_ROOT_PASSWORD是设置初始启动mysql的root密码,若是/home/jon/data/jed已经初始化,则会自动忽略,使用已经初始化密码;
-p "127.0.0.1:3306:3306"是映射容器的3306端口到宿主机的127.0.0.1:3306;
-d选项,是后台执行;
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci是使用mysql的最佳实践选项;
注意: mysql的utf8一定要选用utf8mb4
初始化数据库
% sudo docker exec -it 75d087e0566 bash # 进入容器bash
$ mysql -uroot -p # mysql客户端登录
mysql> create database jed # 创建jed数据库
宿主机测试连接
mysql -uroot -p -h127.0.0.1 -P 3306
注意:
该命令一定要加-h 127.0.0.1,这样是通过TCP连接到mysql
若是不加该选项或使用localhost当做主机,mysql会通过socket连接主机
而容器是通过TCP EXPOSE端口,所以宿主机连接要通过TCP连接
网友评论