阿里云安装和远程连接mysql8.0数据库

article/2025/9/19 2:11:10

目录

在云服务器安装MySQL8.0(详细版):

安装过程中遇到的两个问题的解决方式

无法获取'support-files/mysql.server' 的文件状态(stat): 没有那个文件或目录

解决不能进行远程连接,报错Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.


在云服务器安装MySQL8.0(详细版):

1、下载Linux安装包:MySQL :: Download MySQL Community Server (Archived Versions)

2、安装libaio依赖

libaio 是一个用于异步输入/输出操作的库,它提供了对异步 I/O 接口的支持。它是许多应用程序和数据库引擎所需的依赖项之一。在安装MySQL等数据库引擎时,通常需要安装 libaio 作为其依赖项,因为这些数据库引擎通常会使用异步 I/O 操作来提高数据读写的效率和性能。

yum install libaio

 3、将下载的mysql压缩包放到 /usr/local/目录,我是使用finalshell进行云服务器的连接的,所以可以直接把刚刚下载的压缩包上传到云服务器:

cd /usr/local/

4、解压MySQL

tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

5、重新命名文件夹

mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql8

6、在刚刚重新命名的mysql8文件夹下创建两个新的文件夹

mkdir data
mkdir tmp

 7、创建用户组以及用户和密码,可能会出现mysql用户已经存在,问题不大,不用管。

groupadd mysql
useradd -g mysql mysql

8、对mysql用户进行文件授权

chown -R mysql.mysql /usr/local/mysql8/

9、编辑my.cnf文件 vi /etc/my.cnf

vi /etc/my.cnf 

配置:直接复制进行就行

[mysqld]
basedir = /usr/local/mysql8
datadir = /usr/local/mysql8/data
port = 3306
socket = /usr/local/mysql8/tmp/mysql.sock#必填项
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
socket = /usr/local/mysql8/tmp/mysql.sock

10、切换到mysql8的bin目录下,进行初始化

cd bin            或者是  sd /usr/local/mysql8/bin./mysqld --initialize --user=mysql   初始化mysql

初始化后会出现一个随机密码,这个用来登录用的,需要记录下来,方便后面进行密码的修改.

11、添加mysqld服务到系统

先切换到support-files目录:

先查询刚刚解压包中mysql.server文件的位置:
find / -name mysql.server

 进行文件的复制:

cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql.server

为文件进行授权和添加mysql服务:

chmod +x /etc/init.d/mysql.serverchkconfig --add mysql.server

查看是否添加成功:

chkconfig --list

 12、将mysql命令添加到服务

ln -sf /usr/local/mysql8/bin/mysql /usr/bin

13、启动服务

service mysql.server start

14、查看MySQL的启动状态

service mysql.server status

15、登录MySQL

mysql -uroot -p   密码是刚刚生成的随机密码

修改root密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';flush privileges;

16、切换到mysql库进行远程连接的权限设置:

use mysql;select host,user,plugin from user;update user set host = '%' where user ='root';
flush privileges;select host,user,plugin from user;

17、在阿里云服务器配置安全组,开放3306端口

 18、在防火墙开放3306端口

1、检查防火墙状态:如果防火墙处于活动状态,将显示相关信息,包括防火墙是否正在运行。
sudo systemctl status firewalld2、查看防火墙规则:显示当前防火墙规则的详细列表,包括允许和拒绝的规则。
sudo firewall-cmd --list-all3、允许数据库端口:如果发现防火墙规则中没有允许数据库端口的规则,可以添加相应的规则:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanentsudo firewall-cmd --reload

19、远程连接测试:

创建数据库进行测试:

create database reggie;use reggie;CREATE TABLE `user` (`id` bigint NOT NULL COMMENT '主键',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '姓名',`phone` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '手机号',`sex` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '性别',`id_number` varchar(18) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '身份证号',`avatar` varchar(500) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '头像',`status` int DEFAULT '0' COMMENT '状态 0:禁用,1:正常',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='用户信息';INSERT INTO reggie.`user`
(id, name, phone, sex, id_number, avatar, status)
VALUES(1526738180875788289, '小白', '115874605588', NULL, NULL, NULL, 1);

使用dbeaver进行远程连接:

 测试连接,连接成功!

安装过程中遇到的两个问题的解决方式

无法获取'support-files/mysql.server' 的文件状态(stat): 没有那个文件或目录

问题1:执行 cp support-files/mysql.server /etc/init.d/mysql.server 命名复制mysql.server到指定的文件时,会出现:无法获取'support-files/mysql.server' 的文件状态(stat): 没有那个文件或目录

解决方法:使用 find / -name mysql.server 来查找mysql.server文件的路径,找到后替换上面指令的路径,重新执行上面的cp指令即可。

第二个问题:不能使用远程连接这个服务器中的MySQL,通过下面的各种排查后发现是云服务器没有对3306这个端口进行开放。

使用Dbeaver进行远程连接报错:Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. connect timed out  connect timed out

网上的查询资料后,各种说法都有,比如:服务器上的MySQL没有启动,配置文件中的端口写错了,阿里云的安全组没有开放3306连接权限,驱动类名中没有加cj(com.mysql.cj.jdbc.Driver)。如果是根据上面的参考文章来进行安装的话,都不是这些原因导致不能远程连接的,经过各种排查后发现是服务器的防火墙没有开放3306这个端口。

解决方法:

1、检查防火墙状态:如果防火墙处于活动状态,将显示相关信息,包括防火墙是否正在运行。
sudo systemctl status firewalld2、查看防火墙规则:显示当前防火墙规则的详细列表,包括允许和拒绝的规则。
sudo firewall-cmd --list-all3、允许数据库端口:如果发现防火墙规则中没有允许数据库端口的规则,可以添加相应的规则:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanentsudo firewall-cmd --reload4、重新测试连接

解决不能进行远程连接,报错Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

解决不能远程连接的思路:前提是配置文件是对的,阿里云服务器的入数据的安全组也配置了,数据库也允许远程连接,但是还不能进行远程连接数据库。

1、检查网络连接问题:确保网络连接正常,并且能够与数据库服务器进行通信。

ping 目标主机ip地址   看没有字节可以接受到,如下56(84) bytes of data.
64 bytes from 目标主机的 IP 地址: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 目标主机的 IP 地址: icmp_seq=2 ttl=64 time=0.056 ms
...

2、查看数据库服务器是否成功未运行:

ps -ef | grep mysqld  检查MySQL数据库是否在运行netstat -tuln | grep 3306  检查数据库监听的端口

 3、检查数据库服务器的配置,确保它正在监听正确的端口并允许远程连接:

telnet 目标主机 端口  正确的回应应该如下:
Trying 目标主机的 IP 地址...
Connected to 目标主机的 IP 地址.
Escape character is '^]'.
如果无法连接到该端口,则表示该端口可能未被监听或存在连接问题。

4、防火墙问题:如果数据库服务器位于防火墙后面,请确保防火墙已正确配置以允许远程连接(用的是CentOS 操作系统)。通常 MySQL 默认的端口 3306。

1、检查防火墙状态:如果防火墙处于活动状态,将显示相关信息,包括防火墙是否正在运行。
sudo systemctl status firewalld2、查看防火墙规则:显示当前防火墙规则的详细列表,包括允许和拒绝的规则。
sudo firewall-cmd --list-all3、允许数据库端口:如果发现防火墙规则中没有允许数据库端口的规则,可以添加相应的规则:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanentsudo firewall-cmd --reload4、重新测试连接

上面四个是我检查排查不能远程连接的过程。最后排查出是防火墙没有对3306端口开放,所以添加后,就可以远程连接了。希望对你有帮助!

参考文章:参考文章里面遇到了两个问题,已经在该篇博客文章中解决:

阿里云ECS服务器安装mysql8_阿里云安装mysql8.0_昨日晨曦丶的博客-CSDN博客


http://chatgpt.dhexx.cn/article/gqVXcDfZ.shtml

相关文章

阿里云服务器安装mysql8

1. 安装前准备 查看是否安装: rpm -qa | grep mysql移除不想要的版本: yum remove 名称查找关于mysql的所有文件(配置文件) find / -name mysql ##或者 whereis mysql删除配置文件 rm -rf 文件最后需要注意的是:卸载后…

阿里云安装mysql

最近在学习activiti7工作流的使用,需要安装一个mysql,于是在自己的阿里云服务(CentOS7)上安装了mysql并且实现在本地远程访问数据,以下是自己操作中的经验总结。 步骤如下: 1、在线下载安装包 rpm -ivh …

阿里云服务器安装Mysql

文章目录 1.更新服务器2.下载Mysql安装包3.安装Mysql4.配置my.cnf5.设置开机启动6.设置开启服务7.查看Mysql默认密码8.登陆Mysql,输入用户名和密码9.修改Mysql登录密码10.开启远程登录,授权root远程登录11.在阿里云安全:防火墙添加端口 因为我…

阿里云服务器快速安装Mysql,贴心手把手教你安装,本人踩过很多坑!(我的服务器系统CentOS 7.8 64位)

1.先查询服务器是否安装了Mysql数据库 rpm -qa | grep mysqlrpm -e 文件名(卸载数据库,没有就跳过)2.可以先新建一个文件夹 mkdir 文件夹名3.下载mysql包放进改文件夹 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-…

阿里云服务器的mysql安装

阿里云服务器的mysql安装 寻找了大量的阿里云服务器ECS下载安装的教程,整理以下流程和遇到的问题以及解决方式 以下为本文参考的文章博客: https://blog.csdn.net/ChenLijiong/article/details/104089932 https://blog.csdn.net/a2814282061/article/de…

如何在阿里云服务器安装Mysql数据库

阿里云服务器安装Mysql数据库 前言一、卸载Mysql1.查看是否安装mysql2. 删除配置的mysql空间3.检查剩余的mysql信息4.mysql卸载完成 二、安装Mysql1.确保服务器系统处于最新状态2.重启服务器(可选)3.下载MySql安装包4.安装MySql5.修改mysql默认字符集6.…

阿里云安装MySQL数据库全过程(适合小白)

前言: 前一阵子买了三年的服务器,一直闲着,最近才开始研究,前两天刚把Java环境装上,因为过于简单就没写教程,如果有需求的话可以给我留言。MySQL数据库是装了两次,可以本地正常链接了&#xff0…

时间复杂度主定理分析及练习

本文主要分析主定理,时间复杂度详细分析请移步至此。主定理是一种现在常用分析时间复杂度的方法,它主要适用于递归形式如下: 当 和 为常量且是一个渐进正函数时有以下三种情况: 如果,则如果,则如果&…

【算法导论-主定理】用主方法求解递归式 学练结合版

问题:若某算法的计算时间表示为递推关系式:T(N)2T(N/2)NlogN 且 T(1)1 则该算法的时间复杂度为( )。 O(Nsqrt(N)) O(NlogN) O(N(logN)^2) O(N^2logN) O(N^2) 解析: 应该是 O(N(logN)^2) 参考网址:主定理和《算法导论》 但是博…

【算法设计与分析】12 主定理及其应用

主定理是一个非常有用的定理,前面我们学习的所有知识都可以用主定理来求解,而不必要使用复杂的计算方法来求解 文章目录 1. 主定理1.1 主定理的应用背景1.2 主定理内容 2. 主定理的应用2.1 求解递推方程 例12.2 求解递推方程 例22.3 求解递推方程 例3 3.…

主定理 Master Theorem

分治法主定理 主定理的证明 假设有递归式: T ( n ) a T ( n b ) f ( n ) T(n) aT(\frac{n}{b}) f(n) T(n)aT(bn​)f(n) 证明: T ( n ) a T ( n / b ) f ( n ) T(n) aT(n/b) f(n) T(n)aT(n/b)f(n) a [ a T ( n / b 2 ) f ( n / b ) ] f ( n…

基于主定理以及递推树求解递归算法的时间复杂度

非递归算法的时间复杂度可以通过找到执行次数最多的代码,计算其执行次数即可。但是递归算法的时间复杂度则无法通过这种方式求得。有一种最简单的求递归算法的方式,即利用递推方法求解时间复杂度。如下所示: 这种方法求时间复杂度很简单&…

时间复杂度-主定理分析

目录 1.定理 2.举例 1.定理 主定理分析是一种时间复杂度的计算方式,当时间复杂度推根据实际情况推算出来是下面T(n)的形式的时候,可以通过主定理分析计算它的时间复杂度。 其实就是根据前半部分的a,b,计算出一个结果,再和后面的…

递归式求解-主定理

1.主定理:设a>1和b>1为常数,设f(n)为一函数,T(n)由递归式 对非负整数定义,其中n/b指下取整或上取整.那么T(n)可能有如下的渐进界: (1)若对于某常数 ε>0,有,则; (2)若.则; (3)若对于某常数 ε>0,有,且某常数 c<1与所有足够大的n,有,则 2.主定理的使用方法. 由主…

使用主定理求时间复杂度

文章目录 使用主定理求时间复杂度主定理直接可用主定理转化之后可以利用主定理使用主定理求时间复杂度 很多算法最后都可以写出 T ( n ) = a T ( n b ) + f ( n ) ) ( a ≥ 1 , b ≥ 1 ) T(n)=aT(\frac{n}{b}) + f(n)) (a\ge1,b\ge1) T(n)=aT(bn​)+f(n))(a≥1,b≥1) 的递推式…

主定理学习笔记

主定理用于求递推方程的阶。 设a>1, b>1为常数&#xff0c;f(n)为函数&#xff0c;T(n)为非负整数&#xff0c;且 T(n) aT(n/b) f(n) &#xff08;注意a、b取值范围&#xff09; a代表递归调用子问题的个数(子问题数>小于原问题&#xff0c;故a>1)n / b代表子…

主定理证明

转自GoogleSite算法导论习题解答&#xff0c;先fork一下 算法导论其实已经给出了具体的证明步骤&#xff0c;但是还是有些省略&#xff0c;此文章是对主定理进行了完全的证明&#xff1b; 主定理的证明大致分为两个阶段&#xff1a; (1)假设n为b的整数次幂&#xff0c;如1,b,b^…

主定理(递归式分析)

上图来自《算法导论》 其意思为&#xff1a; 令a≥1&#xff0c;b>1都是常数&#xff0c;f(n)是一个函数 T&#xff08;n&#xff09;是定义在非负整数上的递推式&#xff1a; 1、对某个常数&#xff0c;有&#xff0c;则 2、若&#xff0c;则 3、对某个常数&#xff…

主定理学习及理解

主定理证明 请参考该文章: https://wenku.baidu.com/view/993d716a84868762cbaed522.html 主定理理解运用 看完上面的推导证明, 想必对主定理的推导有了一定理解, 那么又如何理解运用呢? 先晒下公式: 公式大致阐明了三种情况: f(n) < nlogb a, 则取时间复杂度为O(nlogb…