springboot+VUE+部署(9。安装MySql)

1。先更新系统包列表:sudo apt update && sudo apt upgrade -y

2。 安装MySQL服务器核心包

sudo apt install -y mysql-server

安装过程中如果弹出密码设置界面,直接设置root密码(记好!);

如果未弹出密码界面,继续下一步初始化。

3。安全初始化配置(关键)

执行 MySQL 安全配置脚本,修复默认安全漏洞、设置密码(若第一步未设置):

bash

运行

sudo mysql_secure_installation

按提示逐步操作(全程用Y/N确认,建议如下):

设置 root 密码:若第一步已设,直接输入;未设则在此设置(密码需符合复杂度:数字 + 字母 + 特殊字符,如MySQL@123456);

4。移除匿名用户:输入Y(禁止匿名登录,提升安全性);

禁止 root 远程登录:输入N(云服务器需要远程访问数据库,若仅本地使用可输Y);

删除 test 测试数据库:输入Y(无用数据库,删除避免风险);

刷新权限表:输入Y(使配置立即生效)

5。

验证安装是否成功

bash

运行

查看MySQL服务状态(确认是否开机自启、运行正常)

sudo systemctl status mysql

正常输出会显示 "active (running)"

6。

本地登录MySQL测试

sudo mysql -uroot -p

输入之前设置的root密码,能进入MySQL命令行即成功(提示符变为 "mysql>")

7。

配置远程访问(云服务器必做)

默认 MySQL 仅允许本地(localhost)访问,需修改配置开启远程连接:

步骤 1:修改 MySQL 绑定地址

bash

运行

编辑MySQL配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address = 127.0.0.1这一行,修改为:

bind-address = 0.0.0.0 # 允许所有IP访问

保存退出(vim 中按Esc→输入:wq→回车)。

步骤 2:授权 root 用户远程访问

登录 MySQL 命令行:

运行

sudo mysql -uroot -p

执行以下 SQL 语句:

sql

-- 切换到mysql系统数据库

USE mysql;

-- 修改root用户的访问权限(%表示允许所有IP)

UPDATE user SET host='%' WHERE user='root' AND host='localhost';

-- 刷新权限,使配置生效

FLUSH PRIVILEGES;

-- 退出MySQL

EXIT;

步骤 3:重启 MySQL 服务

bash

运行

sudo systemctl restart mysql

  1. 开放防火墙端口

MySQL 默认端口是 3306,需开放 Ubuntu 防火墙:

bash

运行

允许3306端口访问

sudo ufw allow 3306/tcp

重启防火墙使配置生效

sudo ufw reload

查看防火墙状态(确认3306已开放)

sudo ufw status

注意:如果是云服务器(阿里云 / 腾讯云等),还需在云控制台安全组中添加规则,允许 3306 端口的入站访问(否则远程仍无法连接)。

三、常用运维命令

bash

运行

启动/停止/重启MySQL

sudo systemctl start mysql

sudo systemctl stop mysql

sudo systemctl restart mysql

设置开机自启(默认已开启,可验证)

sudo systemctl enable mysql

查看MySQL版本

mysql -V

遇到的问题:安装后没有提示更改密码,要在装好后手动改。

第一步:先查询当前存在的 root 相关用户(关键前置操作)

登录 MySQL 终端(mysql -u root)后,先执行以下命令,查看实际存在的 root 用户对应的主机名,避免继续使用错误的用户组合:

sql

复制代码
-- 1. 切换到mysql系统数据库(存储用户信息的核心数据库)
USE mysql;

-- 2. 查询所有用户的「用户名」和「登录主机」组合
SELECT User, Host FROM user;

执行后会返回类似如下结果(示例),你可以看到实际存在的 root 用户对应的 Host 值(比如 %127.0.0.1 等):

plaintext

复制代码
+------+-----------+
| User | Host      |
+------+-----------+
| root | %         |
| root | 127.0.0.1 |
+------+-----------+

记录下查询结果中 Userroot 对应的 Host 值(这是后续命令的关键)。

三、解决方案(两种可选,优先方案 1)

方案 1:使用查询到的「实际用户组合」修改密码(推荐,最直接)

根据上面查询到的 root 对应的 Host 值,替换命令中的主机名,执行正确的密码设置命令(MySQL 8.x 适用)。

示例(根据不同查询结果对应修改):

  1. 若查询到 root@'%'

    sql

    复制代码
    -- 方式1:SET PASSWORD 命令
    SET PASSWORD FOR 'root'@'%' = 'root@12345678';
    
    -- 方式2:ALTER USER 命令(官方推荐,更稳定)
    ALTER USER 'root'@'%' IDENTIFIED BY 'root@12345678';
  2. 若查询到 root@'127.0.0.1'

    sql

    复制代码
    ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'root@12345678';
方案 2:创建 'root'@'localhost' 用户并设置密码(若需新增该用户组合)

如果你的业务需要 'root'@'localhost' 这个本地登录用户,可先创建该用户,再设置密码:

sql

复制代码
-- 1. 创建 'root'@'localhost' 用户并直接设置密码(MySQL 8.x 语法)
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root@12345678';

-- 2. (可选)给该用户授予最高权限(和默认root用户权限一致)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

-- 3. 刷新权限,使用户创建和授权立即生效
FLUSH PRIVILEGES;

四、后续步骤:验证密码设置成功

  1. 退出 MySQL 终端: sql

    复制代码
    EXIT;
  2. 在 Linux 终端执行登录命令,验证新密码: bash

    运行

    复制代码
    mysql -u root -p
  3. 输入密码 root@12345678,若能成功进入 mysql> 提示符,说明配置生效。

补充说明

  1. Host 字段中,localhost 表示仅允许本地套接字登录,127.0.0.1 表示仅允许本地 IP 登录,% 表示允许任意远程主机登录(公网环境不推荐);
  2. 执行 CREATE USERALTER USER 后,若提示权限不足,说明当前登录的用户无相关权限,可核对当前登录用户的权限组合;
  3. 该操作仅适用于 MySQL 8.x 系列,MySQL 5.x 创建用户的语法略有差异(需使用 IDENTIFIED BY PASSWORD)。

遇到远程登入不了的问题:

你遇到的 MySQL 远程登录失败问题,结合之前user表的查询结果,核心原因是 root 用户的认证插件不支持远程、MySQL 默认限制远程访问、防火墙未开放端口 这三点,我会按优先级给出分步解决方案:

一、核心原因定位(从之前的user表结果来看)

  1. 认证插件不支持远程 :你的root@%用户使用的是 auth_socket 插件,这个插件仅支持本地系统用户匹配认证 (比如 Linux 的root系统用户直接登录 MySQL),完全不支持远程密码登录。
  2. MySQL 默认绑定本地地址 :默认情况下,MySQL 会绑定 127.0.0.1(仅允许本地访问),远程客户端无法连接到 MySQL 的 3306 端口。
  3. Linux 防火墙未开放 3306 端口:即使 MySQL 配置正确,防火墙会拦截外部的 3306 端口请求,导致连接失败。

二、分步解决方案(按优先级执行)

步骤 1:修改 root 用户的认证插件和密码(解决远程认证问题)

这是最关键的一步,必须先把auth_socket改成密码认证插件,才能支持远程登录。

  1. 本地登录 MySQL (因为远程登不了,先在服务器本地操作):

    bash

    运行

    复制代码
    mysql -u root  # 本地用auth_socket插件可免密登录
  2. 修改 root@% 的认证插件和密码 (MySQL 8.x 推荐用caching_sha2_password,兼容旧客户端用mysql_native_password):

    sql

    复制代码
    -- 方式1:官方推荐的加密插件(兼容大部分新版客户端)
    ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '你的新密码';
    
    -- 方式2:兼容旧版客户端(比如Navicat早期版本)
    -- ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的新密码';
    
    -- 刷新权限使配置生效
    FLUSH PRIVILEGES;
  3. 验证修改结果 :再次查询user表,确认root@%plugin字段变为 caching_sha2_passwordmysql_native_passwordauthentication_string 字段有加密密文。

步骤 2:配置 MySQL 允许远程访问(修改绑定地址)

MySQL 默认只监听本地127.0.0.1,需要修改配置文件让它监听所有网卡。

  1. 找到 MySQL 的配置文件 (不同系统路径不同):

    • Ubuntu/Debian 系统:/etc/mysql/mysql.conf.d/mysqld.cnf
    • CentOS/RHEL 系统:/etc/my.cnf/etc/my.cnf.d/mysql-server.cnf
  2. 编辑配置文件

    bash

    运行

    复制代码
    # Ubuntu示例,用vim编辑
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

    找到 bind-address 这一行,修改为:

    ini

    复制代码
    bind-address = 0.0.0.0  # 监听所有网卡地址

    (如果找不到这一行,直接添加即可)

  3. 重启 MySQL 服务

    bash

    运行

    复制代码
    # Ubuntu/Debian
    sudo systemctl restart mysql
    
    # CentOS/RHEL
    sudo systemctl restart mysqld
步骤 3:开放 Linux 防火墙的 3306 端口

MySQL 的默认端口是 3306,需要让防火墙允许外部访问这个端口。

情况 1:Ubuntu/Debian 用 ufw 防火墙

bash

运行

复制代码
# 开放3306端口(TCP协议)
sudo ufw allow 3306/tcp

# 重启防火墙生效
sudo ufw reload
情况 2:CentOS/RHEL 用 firewalld 防火墙

bash

运行

复制代码
# 开放3306端口
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 重启防火墙生效
sudo firewall-cmd --reload
步骤 4:远程登录的正确命令

在远程客户端的终端 / 工具中,执行以下命令登录(替换为你的服务器 IP 和密码):

bash

运行

复制代码
# 格式:mysql -u 用户名 -p -h 服务器IP地址
mysql -u root -p -h 192.168.1.100  # 替换为你的服务器IP

执行后输入你设置的密码,即可远程登录。

三、常见排查点(如果还是登录失败)

  1. 检查 MySQL 是否监听 3306 端口 :在服务器本地执行,看是否有0.0.0.0:3306的监听记录

    bash

    运行

    复制代码
    sudo netstat -tulpn | grep 3306

    正常结果示例:tcp6 0 0 :::3306 :::* LISTEN 1234/mysqld

  2. 测试端口连通性:在远程客户端执行,测试服务器 3306 端口是否能通

    bash

    运行

    复制代码
    # 用telnet测试(没有telnet可先安装)
    telnet 服务器IP 3306
    
    # 或用nc测试
    nc -zv 服务器IP 3306

    如果提示Connected,说明端口通;提示Connection refused,说明防火墙或 MySQL 配置有问题。

  3. 检查 root 用户的 Host 是否正确 :确保user表中有root@%%表示允许任意远程主机),如果是root@192.168.1.%则只允许该网段远程。

四、安全提醒

  1. 不要在公网环境中直接开放root@%的远程权限,建议创建普通用户并只授予必要权限。
  2. 密码要设置为强密码(字母 + 数字 + 特殊字符),避免暴力破解。
  3. 若只需要特定 IP 远程访问,可将%改为具体 IP(如root@192.168.1.200),提升安全性。
相关推荐
J_liaty2 小时前
Spring Boot整合Shiro实现权限认证
java·spring boot·后端·shiro
计算机学姐2 小时前
基于SpringBoot的社区互助系统
java·spring boot·后端·mysql·spring·信息可视化·推荐算法
源代码•宸2 小时前
Leetcode—3314. 构造最小位运算数组 I【简单】
开发语言·后端·算法·leetcode·面试·golang·位运算
独自破碎E2 小时前
如何在MySQL中监控和优化慢SQL?
数据库·sql·mysql
Java程序员威哥2 小时前
SpringBoot4.0+JDK25+GraalVM:云原生Java的性能革命与落地指南
java·开发语言·后端·python·云原生·c#
前进的李工2 小时前
SQL数据操作实战指南
数据库·sql·mysql
无心水3 小时前
1、Go语言工作区和GOPATH实战指南:从项目初始化到部署
开发语言·后端·架构·golang·go·gopath·go mod init
高山上有一只小老虎3 小时前
JPA实现分页查询
java·spring boot·后端