Docker 部署 MySQL
1.创建数据目录
这里在系统中创建目录用于挂载到容器,方便管理并避免数据丢失的问题。
首先在docker仓库中搜索mysql的镜像并下载
# docker search mysql
... ...
# docker pull mysql
查看本地镜像
# docker images -a
启动 mysql 容器,并进入 shell 命令交互界面:
# docker run -it mysql /bin/bash
查看 docker 容器中 mysql 的配置文件,并根据配置文件来创建本地目录,用于挂载到容器。一般配置文件位于 /etc/my.cnf
最好根据此配置文件中的配置来进行创建和挂载。免得出问题。
创建mysql的配置文件(-p为如果父目录不存在则自动创建)
# mkdir -p /usr/local/dockerdata/mysql/conf
创建mysql的日志文件
# mkdir /usr/local/dockerdata/mysql/logs
创建mysql的数据文件
# mkdir /usr/local/dockerdata/mysql/data
2.创建配置文件
# vi /usr/local/dockerdata/mysql/conf/my.cnf
可以直接复制容器中配置文件到本机,减少出错的概率,操作如下:
# docker cp mysql:/etc/my.cnf /usr/local/dockerdata/mysql/conf/
一切准备妥当,可以删除刚才生成的容器,因为下面将要生成一个正式的容器。
3.创建并启动容器
# docker run --restart always -p 3306:3306 --name mysql -v /usr/local/dockerdata/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/dockerdata/mysql/logs:/logs -v /usr/local/dockerdata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d mysql:5.7
解释说明:
- –restart always 重启docker时自动重启相关容器
- -p 3306:3306 将容器的3306端口映射到主机的3306端口
- –name mysql 启动后的容器名称为mysql
- -v /usr/local/dockerdata/mysql/conf/my.cnf:/etc/mysql/my.cnf 将主机/usr/local/dockerdata/mysql/conf/my.cnf文件挂载到容器的/etc/mysql/my.cnf(配置文件)
- -v /usr/local/dockerdata/mysql/logs:/logs 将主机/usr/local/dockerdata/mysql/logs目录挂载到容器的/logs(日志)
- -v /usr/local/dockerdata/mysql/data:/var/lib/mysql 将主机/usr/local/dockerdata/mysql/data目录挂载到容器的/var/lib/mysql(数据文件)
- -e MYSQL_ROOT_PASSWORD=123456 初始化root用户的密码为123456
- -e TZ=Asia/Shanghai 指定时区为亚洲-上海
- -d mysql:5.7 后台运行
4.查看启动的容器
# docker ps
5.进入mysql容器中
# docker exec -it mysql /bin/bash
6.登录mysql,设置mysql数据库的默认字符集为utf8
# mysql -uroot -p --default-character-set=utf8
执行后需输入数据库密码123456,再按回车
7.设置root用户在任何地方进行远程登录,并具有所有库的任何操作权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
8.刷新权限
mysql> FLUSH PRIVILEGES;
9.退出mysql
mysql> exit
10.退出容器并测试
使用 MySQL 客户端连接工具,输入mysql数据库用户名root,输入mysql数据库密码:123456,输入端口3306,点击测试连接