docker部署MySQL


1、拉取官方镜像

docker pull mysql:5.7

5.7 是MySQL的版本,如果不指定版本会拉取最新的
具体版本之间的差异,可以查看下别人的博客,这里就不多做介绍了

在这里插入图片描述

2、创建宿主机配置文件相关

我会创建一个目录,用于存放配置文件相关,这样就不用每次都进入容器内部进行更改

mkdir docker
mkdir mysql
mkdir conf  data  logs
cd conf
rz my.cnf

my.cnf:

[mysqld]
datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock 容器内部有配置 容器地址:/var/run/mysqld/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
# pid-file=/var/run/mariadb/mariadb.pid 容器内部有配置,容器地址:/var/run/mysqld/mysqld.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d


data, logs 为空,不用管

3、运行容器

docker run -p 3307:3306 --restart=always --name mysql -v /docker/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf -v /docker/mysql/logs:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=mypassword123 -d mysql:5.7
-p 3307:3306    指定端口映射,将容器的3306端口映射到宿主机的3307端口,格式为:主机(宿主)端口:容器端口(这个地方是由于我宿主机已经装了MySQL了,3306:3306会报端口占用,我只好写成3307)
 --restart=always  不受Exit Code的影响,总是重启
--name mysql   为容器指定一个名称
-v /docker/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf  挂载目录,将主机当前目录下的  /docker/mysql/conf/my.cnf 挂载到容器的 /etc/mysql/conf.d/my.cnf (可以指定是一个文件夹,也可以是一个文件)
 -v /etc/localtime:/etc/localtime  将宿主机的时间挂载到容器内部,如果不挂载这个,可能会出现容器内部时间和当前时间不匹配,就会出现我们数据库数据出现时间不对问题
-e MYSQL_ROOT_PASSWORD=mypassword123   设置环境变量;这里我们初始化 root 用户的密码为mypassword123
-d mysql:5.7  后台运行容器,并返回容器ID;(版本不是latest,需要带上对应的版本号)

在这里插入图片描述

4、查看日志

docker logs mysql

我是直接就成功了,如果失败了,就查看日志,找寻出错的原因,进行对应的修改就可以了

5、进入容器

docker exec -it mysql bash
# 连接数据库,有时可能会有问题,我们需要指定-h127.0.0.1
mysql -uroot -pmypassword123
# 退出容器
exit

6、使用SQLyog链接

在这里插入图片描述
是可以直接连上的,可以查看是否有开安全组,或者防火墙相关

7、关于数据方面

可能会有不小心将容器删除了,担心数据丢失等问题。这个时候我们查看data文件下,就会有我们的数据,已经挂载出来了。
这时你就算是把容器删除,镜像也删除了,只要data文件夹还保留在,我们就可以恢复数据,拉取相同版本的镜像,直接将data文件夹按照上面的方法进行挂载,数据就可以直接恢复

8、杂谈

挂载文件,当我们有修改的时候,直接在宿主机进行修改,重启容器,就会同步到容器内部
比如我现在在宿主机添加一行
在这里插入图片描述
重启容器:

docker restart mysql

进入容器查看
在这里插入图片描述
开启远程连接:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

刷新:

FLUSH PRIVILEGES;

好了,就这样吧,告辞!
提供一个群:807770565,欢迎各位进来尬聊
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值