Basic Steps for MySQL Server Deployment with Docker
1 查找适合的mysql镜像,选择合适的版本
docker search -f stars=3 -f is-official=true mysql--查找tag为mysql,stars大于3官方镜像
2 下载
docker pull mysql:5.7
3 运行
(1)docker run -d --name mysql01 mysql:5.7
说明 此处通过查看日志(docker logs mysql01)不能正常启动,需要运行时传入指定的参数
错误提示:database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
(2)docker run -d -e MYSQL_ROOT_PASSWORD=password --name mysql01 mysql:5.7
4 查看日志
docker logs mysql01
5 查看运行情况
docker ps
6 访问mysql容器
docker exec –it mysql01 bash
7 创建新用户
mysql> CREATE USER ‘jack‘@‘localhost‘ IDENTIFIED BY ‘pwd123456‘;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘jack‘@‘localhost‘ WITH GRANT OPTION;
mysql> CREATE USER ‘jack‘@‘%‘ IDENTIFIED BY ‘pwd123456‘;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘jack‘@‘%‘
->WITH GRANT OPTION;
Mysql 配置和数据内容 挂载 volume
Key: Host上的文件系统 与 docker 容器中的文件的映射
1 在host创建自定目录用户存储配置和数据的目录,用于docker mysql容器中相应文件的映射
比如:
host目录
mysql docker 容器目录
/root/Software/docker/mysql/config/my.cnf
/etc/my.cnf
/root/Software/docker/mysql/data
/var/lib/mysql
说明 host下新建的my.cnf 文件 需要初始内容
my.cnf:
[mysqld]
user=mysql
2 运行
docker run -d -p 3307:3307 -v=/root/Software/docker/mysql/config/my.cnf:/etc/my.cnf -v=/root/Software/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password --name mysql01 mysql:5.7
2 bash 进入mysql01 docker容器,登入mysql 查看默认字符集
> docker exec -it mysql01 bash
>mysql –uroot –p
......
>show variables like ‘%char%’;
说明:显示为lanti字符集
3 修改mysql字符集为utf-8,通过修改my.cnf完成
my.cnf:
[mysqld]
user=mysql
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
4 删除当前容器
>docker stop mysql01
>docker rm mysql01
5 重新启动一个新容器
docker run -d -p 3307:3307 -v=/root/Software/docker/mysql/config/my.cnf:/etc/my.cnf -v=/root/Software/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password --name mysql01 mysql:5.7
6 查看字符集,此时默认使用了之前修改后的字符集utf-8
说明:配置被共享了,目的:容器删除 后数据文件也会删除, 挂载可以实现数据的持久化和共享
参考资料:
学习群石墨文档:https://shimo.im/docs/anrlYMFEYloN52c8/
Xmind 文档 : docker的基本命令
Docker命令文档:https://docs.docker.com/engine/reference/commandline