阿里云ECS云服务器基于docker安装mysql并且远程连接

  本次介绍如何在阿里云ECS云服务器中使用docker安装最新mysql 8 并且进行远程访问。

  前言,安装docker:阿里云ECS云服务器安装docker并配置阿里云镜像仓库

1 拉取mysql镜像

  该命令直接拉取最新mysql镜像。

docker pull mysql

  如果想要指定版本,那么在官网可以找到mysql镜像所有版本:https://hub.docker.com/_/centos,latest就表示最新版本,使用“:”分隔,在后面加上版本号即可,比如:

docker pull mysql:5.7

在这里插入图片描述

2 查看镜像

docker images

在这里插入图片描述

3 创建mysql容器实例并运行

  随后创建一个mysql容器实例,即可开始使用:

docker run -it --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

-it :分配一个伪tty,一般与 -i 连用。可以省去。
–name mymysql :设置当前mysql容器实例名为“mymysql” ,可以自己指定。
-e MYSQL_ROOT_PASSWORD=123456 :设置当前mysql容器实例密码为“123456” ,可以自己指定。
-p 3306:3306 :设置当前mysql容器实例端口映射,前一个是远程访问时的端口,后一个是默认端口。
-d mysql : 表示以后台形式mysql镜像标签

4 查看容器实例

  查看正在运行的容器实例

 docker ps -a

在这里插入图片描述

  到此,实际上一个mysql容器实例就创建好了并且运行起来了,相对于传统的安装mysql,是不是很简单啊?
  这个mysql实例已经被保存下来了,后续直接使用 docker start CONTAINER_ID 即可启动, docker restart CONTAINER_ID即可重启, docker stop CONTAINER_ID。

6 进入mysql容器并登陆

  如何进入mysql容器(这一步不是必须要做的)?

docker exec -it 013392c286a4 bash

  这里的“013392c286a4 ”,表示当前容器id,可通过 docker ps -a 命令查看。
  此时已经进入了容器,随后可以进行登陆。

mysql -uroot -p

  随后再输入密码,即可进入mysql服务中!

5 远程连接navicat

  第四步完成之后即可开始连接。注意,远程连接之前需要在安全组开放访问的端口,在上一篇文章已经讲了。这里的端口是前一个指映射的端口!
  随后直接使用navicat连接即可,这里的ip使用我们的服务器远程ip,端口使用映射的端口,用户名root(也可以自己创建用户),密码就是启动实例是指定的密码!
在这里插入图片描述
  至于代码连接,则同样非常简单,普通设置都是一样的!

5.1 mysql 8 远程连接

  mysql 8以上默认使用的是caching_sha2_password身份验证机制,之前用的是mysql_native_password,所以远程连接可能会抛出1521、2059 等错误(大多是因为navicat不是最新版,而是老的盗版,最新版支持mysql 8加密方式),需要修改用户的密码加密校验方式!
  进入mysql容器并登陆mysql,执行:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

  这里的password是自己指定的密码,‘root’@’%'表示任何ip都可以连接。随后刷新,即可正常远程连接!

flush privileges;

  至于远程访问权限,默认都是授予的,因此不必设置。

7 修改时区

  mysql默认存储时间类型的数据的时间值与系统时间总是不对应,相差8个小时。如果使用简单的设置,那么docker中每一次启动mysql实例,设置信息还是会被还原,因此我们这里需要修改配置文件,达到永久设置系统时区的功能!
  首先进入mysql容器(不需要登陆),第6点已经讲了。随后进入my.cnf的目录:

cd /etc/mysql

  添加一行:default-time_zone = ‘+8:00’ 配置到my.cnf末尾即可实现永久更改。

echo "default-time-zone = '+08:00'">>my.cnf

  在代码的url中也可以添加serverTimezone=Asia/Shanghai参数来临时设置时区。

### 如何在阿里云ECS服务器安装配置和使用MySQL数据库 #### 一、通过官方软件源安装 MySQL 数据库 对于大多数用户来说,最简单的方法是从官方软件仓库安装 MySQL。这通常只需要几条简单的命令。 ```bash sudo apt update sudo apt install mysql-server ``` 上述命令适用于基于 Debian 的 Linux 发行版,如 Ubuntu[^4]。如果 ECS 实例运行的是 CentOS 或其他 Red Hat 衍生版本,则应替换为 `yum` 命令: ```bash sudo yum install mysql-server ``` 完成安装后,启动 MySQL 并设置开机自启: ```bash sudo systemctl start mysqld.service sudo systemctl enable mysqld.service ``` #### 二、手动部署 MySQL 软件包 另一种方法是下载并解压预编译好的 MySQL 版本到指定目录下,这种方式提供了更多的灵活性来定制环境变量以及路径设置等细节问题。 将下载后的 MySQL 压缩包上传至服务器上的特定文件夹内,例如 `/root/opt/software/` 文件夹,并执行如下操作以解压缩该档案: ```bash cd /root/opt/software/ tar zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz ``` 此过程会创建一个新的子目录用于存放已解压的内容[^2]。需要注意的是,在继续之前应当阅读官方文档确认后续初始化步骤。 #### 三、利用 Docker 部署 MySQL 容器化服务 Docker 提供了一种轻量级虚拟化的解决方案,可以快速构建可移植的应用程序镜像。为了简化管理和维护工作流,推荐采用这种方法来进行 MySQL 的部署。 首先拉取最新的 MySQL 映像,接着启动一个新容器实例: ```bash docker pull mysql/mysql-server:latest docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql/mysql-server:latest ``` 要访问正在运行中的 MySQL 容器内部环境,可以通过下面这条指令获取交互式的 shell 访问权限: ```bash docker exec -it $(docker ps | grep 'some-mysql' | awk '{print $1}') /bin/bash ``` 这里假设容器名称被命名为 "some-mysql"[^3];实际应用时可以根据个人喜好更改这个标签名。 #### 四、解决 Navicat 远程连接失败的问题 当遇到无法远程登录的情况时,除了确保防火墙规则允许外部流量到达目标端口外,还需检查 MySQL 自身的安全策略是否阻止了来自公网 IP 地址的请求尝试。 编辑 MySQL 主配置文件(通常是 my.cnf),找到 bind-address 参数将其修改成监听所有网络接口的方式即 `bind-address=0.0.0.0` ,保存变更重启服务生效即可[^1]。 另外建议开启 SSL 加密传输通道保障数据交换安全性的同时也满足某些企业合规性的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值