• 连接云服务器Docker中的Mysql 详细图文操作(全)


    目录

    前言

    在云服务器上通过docker搭建的mysql
    本地的navicat连接mysql的时候一直出现这个错误
    问题如下所示

    2003 - Can’t connect to MySQL server on 'xxx'(10060)
    
    • 1

    截图如下所示:
    在这里插入图片描述

    对于这个问题,可能是少了某些细节(一直出现这个,对此一个操作一个操作的检查)
    以下文章从零到有搭建mysql
    并且通过navicat连接mysql的图文操作

    1. 安装mysql

    在服务器上通过docker安装mysql
    安装mysql 5.7的镜像:sudo docker pull mysql:5.7
    在这里插入图片描述

    拉取镜像之后,可以通过检查镜像是否有安装 docker images
    创建实例并且启动:

    docker run -p 3306:3306 --name mysql 
    -v /mydata/mysql/log:/var/log/mysql 
    -v /mydata/mysql/data:/var/lib/mysql 
    -v /mydata/mysql/conf:/etc/mysql 
    -e MYSQL_ROOT_PASSWORD=123456 
    -d mysql:5.7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    代码模块的说明:

    • -p为端口映射,将其linux的3306端口与mysql容器内部的3306端口进行映射
    • -v为挂载(etc为配置文件,log为日志文件,lib为配置文件)
      将其mysql容器内部的文件挂载到linux中,每次变动都会在linux显示,而不用进入到容器内部查看
      -e初始化123456用户密码

    在这里插入图片描述

    修改配置文件:(主要是编码格式的配置文件修改)
    因为容器内部已经映射文件到linux中,在linux中修改即可
    具体命令如下:vim /mydata/mysql/conf/my.conf

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    查看其docker 中的mysql是否有映射:
    通过docker exec -it mysql /bin/bash进入容器,并且查看容器中的文件
    在这里插入图片描述
    确认映射成功之后,通过docker restart mysql容器id

    2. 开启远程连接

    默认mysql是不可以远程连接的

    通过上面的docker进入容器之后
    登录mysql:mysql -u root -p
    密码为123456,这个密码是docker安装mysql配置的
    在这里插入图片描述

    开启远程连接:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; ,(这个密码为123456,是之后远程连接mysql的密码)
    刷新生效:FLUSH PRIVILEGES;
    在这里插入图片描述

    再次查看:select host,user,plugin,authentication_string from mysql.user;

    在这里插入图片描述
    可以看到root授权的host为%,即为远程访问已经开启

    3. 防火墙

    可以开启一个端口映射出去或者直接关闭防火墙
    具体防火墙的知识点可看我之前的文章:

    1. ubuntu:防火墙配置详细讲解(全)
    2. linux之防火墙命令firewall、iptable以及端口号等详解诠释(全)

    如果只开启一个防火墙端口设置:(也就是3306mysql的端口)
    查看开启的端口号:firewall-cmd --list-ports
    永久开启一个3306的端口号:firewall-cmd --zone=public --add-port=3306/tcp --permanent
    重启防火墙:firewall-cmd --reload
    再次查看端口号是否开启:firewall-cmd --list-ports

    截图如下:
    在这里插入图片描述


    另一种方式是直接关闭

    或者直接关闭防火墙:systemctl stop firewalld.service
    查看防火墙的状态:systemctl status firewalld.service

    在这里插入图片描述

    4. 入站规则

    云服务器的安全规则需要配置入站规则
    具体什么服务器可看其官网的说明,(我是华为云服务器):配置安全组规则

    配置入站规则如下:

    在这里插入图片描述
    配置成功之后

    在linux中可以通过命令行检查端口号是否打开,通过lsof、netstat
    具体的使用方法为lsof -i查看端口是否开放,netstat提供主机的网络相关信息,可通过netstat -anp

    大致命令:netstat -anp | grep 3306
    截图如下:(有这个配置说明端口映射已经成功)
    在这里插入图片描述

    5. 连接mysql

    navicat连接mysql
    ip地址为服务器而不是docker的,账号密码为mysql的而不是服务器的

    在本地ping ip地址可以通信么
    大致ip为云服务器的弹性ip地址而不是私有地址(保证可以通信)

    在这里插入图片描述

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    排序1:快速排序(三种)、归并排序、计数排序
    Oracle 定时任务job实际应用
    英特尔神经网络计算棒
    你必须知道的4种 Redis 集群方案及优缺点对比
    基于Unity引擎的RPG3D项目开发笔录
    SpringSecurity简介及其入门案例
    scrm系统源码该如何选择?快鲸scrm系统源码优势明显
    Go 锁扩展
    SAP CRM 模块:概述,体系结构
    生产环境下调试的技巧
  • 原文地址:https://blog.csdn.net/m0_67401382/article/details/126066952