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

目录

在云服务器安装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)

阿里云安装和远程连接mysql8.0数据库_第1张图片

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

阿里云安装和远程连接mysql8.0数据库_第2张图片

 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.server

chkconfig --add mysql.server

查看是否添加成功:

chkconfig --list

阿里云安装和远程连接mysql8.0数据库_第3张图片

 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;

阿里云安装和远程连接mysql8.0数据库_第4张图片

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

阿里云安装和远程连接mysql8.0数据库_第5张图片

 18、在防火墙开放3306端口

1、检查防火墙状态:如果防火墙处于活动状态,将显示相关信息,包括防火墙是否正在运行。
sudo systemctl status firewalld

2、查看防火墙规则:显示当前防火墙规则的详细列表,包括允许和拒绝的规则。
sudo firewall-cmd --list-all

3、允许数据库端口:如果发现防火墙规则中没有允许数据库端口的规则,可以添加相应的规则:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent

sudo firewall-cmd --reload

阿里云安装和远程连接mysql8.0数据库_第6张图片

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进行远程连接:

阿里云安装和远程连接mysql8.0数据库_第7张图片

阿里云安装和远程连接mysql8.0数据库_第8张图片

 测试连接,连接成功!

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

无法获取'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指令即可。

阿里云安装和远程连接mysql8.0数据库_第9张图片

第二个问题:不能使用远程连接这个服务器中的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 firewalld

2、查看防火墙规则:显示当前防火墙规则的详细列表,包括允许和拒绝的规则。
sudo firewall-cmd --list-all

3、允许数据库端口:如果发现防火墙规则中没有允许数据库端口的规则,可以添加相应的规则:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent

sudo firewall-cmd --reload

4、重新测试连接

阿里云安装和远程连接mysql8.0数据库_第10张图片

阿里云安装和远程连接mysql8.0数据库_第11张图片

阿里云安装和远程连接mysql8.0数据库_第12张图片

解决不能进行远程连接,报错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.

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

阿里云安装和远程连接mysql8.0数据库_第13张图片

阿里云安装和远程连接mysql8.0数据库_第14张图片

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  检查数据库监听的端口

阿里云安装和远程连接mysql8.0数据库_第15张图片

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

telnet 目标主机 端口  

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

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

1、检查防火墙状态:如果防火墙处于活动状态,将显示相关信息,包括防火墙是否正在运行。
sudo systemctl status firewalld

2、查看防火墙规则:显示当前防火墙规则的详细列表,包括允许和拒绝的规则。
sudo firewall-cmd --list-all

3、允许数据库端口:如果发现防火墙规则中没有允许数据库端口的规则,可以添加相应的规则:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent

sudo firewall-cmd --reload

4、重新测试连接

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

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

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

你可能感兴趣的:(数据库MySQL,云学习,阿里云,服务器,mysql)