Docker安装mysql并使用Navicat本地连接

1.拉取mysql镜像

# 获取镜像
docker pull mysql:5.7

2.运行容器

  • 运行mysql容器,需要做数据挂载,还需要配置密码
  • 官方测试:docker run --name som-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
  • 启动容器
    -d 后台运行
    -p 端口映射
    -v 卷挂载(容器外映射到容器内部)
    -e 环境配置
    –name 容器名
[root@zero /] docker run -itd -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d 
 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 
 --name mysql01 mysql:5.7
  • 在云服务器安全组配置中打开3306端口
    在这里插入图片描述
  • 查看容器是否运行成功
[root@zero /]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
7eedeb6049c2   mysql:5.7   "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql01

3.配置mysql

  • 进入MySQL容器
 docker exec -it 7eedeb6049c2 /bin/bash
  • 本机可以通过 root 和密码 123456 访问 mysql 服务
mysql -h localhost -u root -p
root@7eedeb6049c2:/ mysql -h localhost -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
  • 切换到mysql数据库 use mysql
  • 查询host和user的相关信息 select host, user from user;
    Docker安装mysql并使用Navicat本地连接_第1张图片
  • 可以看到,root的用户对应的host已经允许所有用户访问,如果不是,需要修改权限。
    Docker安装mysql并使用Navicat本地连接_第2张图片

4.使用Navicat本地测试连接

- 输入用户名密码,和远程主机的公网ip地址

Docker安装mysql并使用Navicat本地连接_第3张图片

  • 连接成功
    Docker安装mysql并使用Navicat本地连接_第4张图片

5.测试连接和挂载

  • 进入刚刚mysql的data目录挂载的服务器本地目录 /home/mysql/data
    Docker安装mysql并使用Navicat本地连接_第5张图片
  • 在本地创建test数据库
    Docker安装mysql并使用Navicat本地连接_第6张图片
  • 重新查看服务器目录,发现 test 数据库成功同步到本地
    Docker安装mysql并使用Navicat本地连接_第7张图片
  • 以后不论mysql容器是否存在,容器的数据将会永久地同步到本地/home/mysql/data目录下

5.本地数据库传输到服务器

  • 在Navicat中打开工具 --> 数据传输
    Docker安装mysql并使用Navicat本地连接_第8张图片
  • 选择本地要传输到服务器的数据库
    Docker安装mysql并使用Navicat本地连接_第9张图片
  • 选择全部表
    Docker安装mysql并使用Navicat本地连接_第10张图片
  • 点击传输
    Docker安装mysql并使用Navicat本地连接_第11张图片

6.时区配置

项目部署上线时候,发现项目和实际时间不一致,要比实际时间早八个小时,这是为什么?(1)项目问题(2)Mysql问题
这是因为项目默认使用 UTC(协调世界时,又称世界标准时间或世界协调时间)。而北京在东八区,比 UTC 快了 8 小时,即 UTC+8,所以差了八个小时。
首先查看服务器时间date,修改正确之后再进行以下操作:

(1)项目问题

SpringBoot项目发布之后发现,项目显示时间比实际时间要早八个小时。

  • 首先查看JDBC连接,在连接中添加字段serverTimezone=GMT%2B8
  • 然后在主启动类中添加TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
    Docker安装mysql并使用Navicat本地连接_第12张图片
  • 还需要在application.yml加上time-zone: Asiz/Shanghai,解决前后端时间不一致
    Docker安装mysql并使用Navicat本地连接_第13张图片

(2)Mysql问题

  • 首先使用select now()语句查看mysql时间和电脑时间是否一致。
  • 使用show variables like '%time_zone%';命令来查看时区配置
    Docker安装mysql并使用Navicat本地连接_第14张图片
    可以看到,MySQL 的当前时区是 SYSTEMSYSTEMUTC(协调世界时,又称世界标准时间或世界协调时间),比北京时间(东八区)早八个小时。
  • 修改Mysql容器的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,这个路径之前已经绑定了主机目录/home/mysql/conf,可以直接在主机目录下添加mysqld.cnf配置文件。(要注意加上[mysqld]字段)
    Docker安装mysql并使用Navicat本地连接_第15张图片
  • 修改完成之后重启mysql容器,再次查看时区
    Docker安装mysql并使用Navicat本地连接_第16张图片
    时区配置成功!

你可能感兴趣的:(docker,mysql,运维,navicat)