1.安装mysq之前首先学会数据卷(持久化)
数据卷我自己理解就是 容器共享宿主机文件夹下的文件!我们部署项目 可以直接把写好的项目放到共享的数据卷下!这样 我们只需要共享数据卷中加内容不用再容器内的tomcat中加内容啦! 很方便
2.mysql的安装与使用
1.查找镜像:
docker search mysql
也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本:https://hub.docker.com/_/mysql/
2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版):
docker pull mysql:5.7
3.创建配置文件
创建配置文件存放位置 和数据映射位置
mkdir -p /mysql/config /mysql/data
- 1创建编辑配置文件
vi /mysql/config/my.conf
my.conf配置文件内容如下
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
启动容器
docker run -d -p 3306:3306 --restart always --privileged=true --name dream_mysql -e MYSQL_ROOT_PASSWORD=123456 -v /mysql/config/my.conf:/etc/my.cof -v=/mysql/data:/var/lib/mysql mysql:5.7.21
参数说明:
-d 后台运行容器
-p 3306:3306 指定端口映射(主机(宿主)端口:容器端口)
--restart=always 开机启动
--privileged=true 提升容器内权限
--name 为容器指定一个名称
-e 设置环境变量
MYSQL_ROOT_PASSWORD=123456 初始密码
-v /mysql/config/my.conf:/etc/my.cof 映射配置文件
-v=/mysql/data:/var/lib/mysql 映射数据目录
mysql 镜像名称
创建成功会打印出容器ID
4.无法远程连接
- 检查防火墙
- 是否配置安全组规则
如果,用navicat for mysql连接mysql发现报错:Client does not support authentication protocol requested by server。。。
解决方案:
进入容器:
docker exec -it 62349aa31687 /bin/bash
进入mysql:
mysql -uroot -p
授权:
mysql> GRANT ALL ON *.* TO 'root'@'%';
刷新权限:
mysql> flush privileges;
更新加密规则:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
更新root用户密码:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限:
mysql> flush privileges;
如果linux重启 mysql 访问不到 我们首先重启下docker在重启下mysql就好啦
#重启docker
sudo systemctl restart docker
#重启docker 中mysql 容器 restart后是容器id
docker restart 1b4671904bfa
#如果还是访问不到关闭下防火墙
systemctl stop firewalld.service