springboot部署阿里云(ubuntu22.04)
云服务器配置
安装jdk17
1)下载jdk压缩包
wget+下载地址
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
2) 解压jdk压缩包
tar -zxvf file-name
tar -zxvf jdk-17_linux-x64_bin.tar.gz
3)jdk转移到/usr/local/目录下
最开头的/:是从根目录下的执行的
sudo mv jdk-17.0.10 /usr/local/
4)配置环境变量
sudo vim /etc/profile #编辑环境变量文件
输入命令后打开环境变量文件进行配置,按 i 建开始编辑,
在文件最后一行输入如下命令:
export JAVA_HOME=/usr/local/jdk-17.0.10
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=.:$JAVA_HOME/bin:$PATH
按Esc 输入 :wq退出
5)配置环境生效
source /etc/profile
6)查看java版本号,测试是否安装成功
java --version
安装mysql8
1)更新软件包索引运行
sudo apt update
2)安装MySQL服务器
sudo apt install mysql-server
whereis mysql #查看mysql路径
3)验证MySQL服务器是否正在运行
sudo systemctl status mysql
运行结果
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-02-27 20:30:20 CST; 1h 3min ago
Process: 33443 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 33452 (mysqld)
Status: "Server is operational"
Tasks: 40 (limit: 1939)
Memory: 389.2M
CPU: 12.630s
CGroup: /system.slice/mysql.service
└─33452 /usr/sbin/mysqld
4)配置MYSQL
当MySQL安装完成后,你可能会想运行命令 mysql -u root -p
登录到MySQL服务器。
如果你登录到Ubuntu的用户不是root用户你将不能访问MySQL服务器。如果你尝试使用密码登录也将被拒绝连接,MySQL root用户默认是没有密码。
你将会收到类似于这样的消息(28000): Access denied for user 'root'@'localhost' (using password: YES)或者ERROR 1045 (28000): Access denied for user 'root'@'localhost'。
这是因为在MySQL 8.0上,对root用户使用 auth_socket
插件进行身份验证。auth_socket
插件仅对从 localhost
连接到Unix socket文件用户进行身份验证。
这意味着您无法通过提供密码来以root用户连接到MySQL服务器。但你可以通过命令 sudo mysql
连接到MySQL服务器。
sudo mysql
5)配置MYSQL远程连接
默认情况下,MySQL服务器仅监听来自本地主机的连接,这意味着它只能由运行在同一主机上的应用程序访问。
但是,在某些情况下,有必要从远程位置访问MySQL服务器。例如,当您想从本地系统连接到远程MySQL服务器时。
或者当使用多服务器部署时,应用程序与数据库服务器不在同一台计算机上运行。
一种选择是通过SSH隧道访问MySQL服务器,另一种是将MySQL服务器配置为接受远程连接。
- 配置MySQL服务器接受远程的连接。包括添加或更改
bind-address
选项指定监听地址0.0.0.0
,授权MySQL用户远程访问权限。 - 配置防火墙iptable,UFW,FirewallD允许连接3306端口。验证MySQL数据库服务器的远程连接。相同的说明适用于MariaDB。
配置MYSQL服务器
错误信息: SQL Error (1130): Host ‘x.x.x.x’ is not allowed to connect to this MySQL server
说明所连接的用户帐号没有远程连接的权限,只能在本机(localhost)登录。
需更改 mysql 数据库里的 user表里的 host项
mysql -u root -p
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
exit;
# 云服务器设置远程访问别忘了开放3306端口,否则连接不上
# 查看添加信息
select host,user from user;
sudo service mysql restart #重启数据库
第一步是设置MySQL服务器监听计算机所有IP地址。如果MySQL服务器和客户端可以通过专用网络相互通信,那么最好的选择是将MySQL服务器设置为仅在指定IP上监听。
如果要通过公共网络连接到MySQL服务器,请将MySQL服务器设置为监听计算机上的所有IP地址。
因此,您需要编辑MySQL配置文件并添加或更改 bind-address
选项的值。您可以设置一个IP地址和IP范围。
如果地址为 0.0.0.0
,则MySQL服务器接受所有远程主机IPv4接口上的连接。如果你需要使用IPv6,请使用 ::
代替 0.0.0.0
。
MySQL配置文件的位置因Linux发行版而异。在Ubuntu和Debian中,文件位于 /etc/mysql/mysql.conf.d/mysqld.cnf
,而在基于Red Hat的发行版(如CentOS)中,文件位于 /etc/my.cnf
。
我们通过vim打开文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
搜索以 bind-address
开头的行,并将其值设置为MySQL服务器应监听的IP地址。默认情况下,该值设置为 127.0.0.1
即仅在本地主机中监听。
在此示例中,我们将值更改为 0.0.0.0
,将MySQL服务器设置为监听所有IPv4地址。
bind-address = 0.0.0.0
# skip-networking
在MySQL 8.0和更高版本中,bind-address
指令可能不存在。在这种情况下,请将 bind-address = 0.0.0.0
其添加到 [mysqld]
下。
完成后,重新启动MySQL服务以使更改生效。在现代的Linux发行版中,MySQL通常使用systemd的服务在后台运行,因此你可以使用systemctl命令重启MySQL服务。
只有root用户或具有sudo权限的用户才能重新启动MySQL服务。要在Debian或Ubuntu上重新启动MySQL服务。
在基于RedHat的发行版上,例如CentOS/Fedora。MySQL服务名称是mysqld。
sudo systemctl restart mysql #ubuntu
sudo systemctl restart mysqld #centOS
允许从远程计算机访问
下一步是允许远程用户访问数据库。首先以root用户登录到MySQL服务器。运行命令 sudo mysql
。
如果您使用本地MySQL身份验证插件以root用户身份登录,请运行 mysql -uroot -p
命令并在出现提示时输入密码。
在MySQL Shell中,使用 GRANT
语句为用户授予远程访问权限。
sudo mysql
mysql -u root -p
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
其中 database_name
是用户将连接到的数据库的名称。user_name
是MySQL用户的名称。
ip_address
是用户本地计算机的IP地址。使用 %
允许用户从任何IP地址进行连接。user_password
是用户密码。
例如,仅允许IP是 10.8.0.5
的客户端使用密码 my_passwd
和用户名为 foo
访问数据库 dbname
,请运行以下命令,如需允许所有IP,请使用 %
代替IP地址。
GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
配置防火墙
最后一步是配置防火墙,以允许来自远程计算机到MySQL默认端口 3306
上的连接。
如果你使用iptables作为防火墙,则下面的命令将允许从Internet上的所有IP地址访问MySQL端口。但这通常是不建议使用。
你也可以使用第二个命令设置仅允许从指定的IP地址访问,iptables的 -s
选项表示源IP地址, --destination-port
表示目标端口, -p tcp
表示所有TCP连接。
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW是Ubuntu中的默认防火墙工具。要允许从Internet上的任何IP地址访问,请运行,我们不建议使用此防火墙规则。
同样你也可以设置为允许从指定的IP地址访问。from 10.8.0.5
表示源ip地址。
sudo ufw allow 3306/tcp
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD是CentOS中的默认防火墙管理工具。可以允许从Internet上的任何IP地址访问,但不建议使用此防火墙规则。
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
要仅允许从指定IP地址进行访问,您可以创建新的FirewallD区域和规则。--new-zone=mysqlzone
命令将创建一个名为 mysqlzone
的新区域和规则。
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
6)验证远程用户可以连接到MySQL服务器
要验证远程用户是否可以连接到MySQL服务器,可以运行命令 mysql -u user_name -h mysql_server_ip -p
。
mysql -u user_name -h mysql_server_ip -p
其中 user_name
是您授予远程访问权限的用户名,mysql_server_ip
是运行MySQL服务器的主机的IP地址。如果一切设置正确,您将能够登录到远程MySQL服务器。
如果收到类似以下的错误,则说明端口3306未打开,或者MySQL服务器未监听IP地址。ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
"ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server"。错误表示您尝试登录的用户无权访问远程MySQL服务器。
Linux查看端口占用
Address already in use这个提示,想必大家遇到过,那么如何快速找到问题并解决这个问题,这里列出了可以解决这种问题方式。
在对网络连接或者应用程序的问题进行故障排除时,首先要检查的事情之一应该是系统实际使用哪些端口,以及哪个应用程序正在监听指定的端口。
1)监听端口
网络端口由其编号及关联IP地址和通信协议组成的类型标识,这些协议包括TCP或UDP协议。
监听端口是应用程序或进程在监听的网络端口,充当通信端点。每个监听端口都可以使用防火墙打开或关闭与过滤。
一般而言,打开端口是一个网络端口,它接受来自远程计算机的传入数据包。你不能让两个服务监听同一IP地址同一端口。
如果你的计算机正在运行着Apache Web服务器监听端口 80
和 443
,并且尝试安装Nginx ,Nginx将无法启动,因为HTTP和HTTPS端口已经被Apache使用。
2)查看端口进程
netstat是一个命令行工具,可以提供网络连接的信息。要列出所有正在监听的TCP或UDP端口。
包括使用端口的服务和套接字状态,可以运行命令 sudo netstat -tunlp
。这里说明一下命令使用的选项。
-t
显示TCP端口。-u
显示UDP端口。-n
显示数字地址而不是解析主机。-l
仅显示监听端口。
-p
显示监听端口的进程PID和名称。仅当以root或具有sudo权限的用户运行命令时,才会显示进程PID和名称。
sudo netstat -tunlp
防火墙设置
防火墙是用于监控和过滤传入和传出网络流量的工具。 它通过定义一组确定是允许还是阻止特定流量的安全规则来工作。
Ubuntu 20.04安装了一个称为UFW的防火墙配置工具。它是用于管理iptables防火墙规则的用户友好型前端。它的主要目标是使防火墙的管理变得更容易,简单。
只有root或具有sudo权限的用户可以管理系统防火墙。最佳做法是以sudo用户运行管理任务系统防火墙。
ufw是Ubuntu 20.04标准安装的一部分,它应该已安装于您的系统中。
如果由于某种原因未安装,则可以通过apt软件管理器安装UFW。
sudo apt update
sudo apt install ufw
UFW默认情况下处于禁用状态。 您可以运行命令 sudo ufw status verbose
检查UFW服务的状态。
sudo ufw status verbose
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!