欢迎光临
我们一直在努力

【2025最新】Ubuntu22.04 安装 MySQL8.0 教程

文章目录

    • 1. 更新软件包
    • 2. 安装最新版本
    • 3. 启动 MySQL 服务
    • 4. 检查 MySQL 版本
    • 5. 修改 root 密码
    • 6、创建允许远程访问的用户
      • 方案一:创建新用户并授权
      • 方案二:修改 root 用户允许远程访问
    • 7. 修改 MySQL 配置文件
    • 8. 重启 MySQL 服务
    • 9. 开放防火墙端口(默认3306)
    • 10. 验证远程连接
    • 11. IDEA 远程登录 MySQL
      • 方案一:代码验证
      • 方案二:IDEA 界面操作
    • 12. 常见问题排查
      • ERROR 2003 (HY000): Can't connect to MySQL server
      • ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed
      • ERROR 1045 (28000): Access denied

确保你是系统的管理员(root),能够省掉很多麻烦,安装数据库需要很高的权限。

1. 更新软件包

sudo apt update

执行结果:

在这里插入图片描述

我们可以查看一下可用的软件包

sudo apt search mysql-server

执行结果:

在这里插入图片描述

2. 安装最新版本

sudo apt install -y mysql-server

3. 启动 MySQL 服务

sudo systemctl start mysql

可以看到 mysql 已经安装好了

在这里插入图片描述

如果 MySQL 正在运行,将看到 “active (running)” 的输出信息。

4. 检查 MySQL 版本

mysql –version

执行结果:

在这里插入图片描述

5. 修改 root 密码

先以 root 身份登录

mysql -uroot -p

执行结果:

在这里插入图片描述

然后修改 root 密码

alter user 'root'@'localhost' identified with mysql_native_password by '你的密码';

执行结果:

在这里插入图片描述

最后刷新密码

flush privileges;

执行结果:

在这里插入图片描述

验证密码是否修改成功:

在这里插入图片描述

可以看到第一次我没有输密码,无法登录。第二次输入修改后的密码,已经登录成功了!

6、创建允许远程访问的用户

方案一:创建新用户并授权

创建用户,其中:

  • username 替换为用户名
  • password 替换为密码
  • remote_ip 替换为远程客户端 IP,或者 % 允许所有 IP

CREATE USER 'username'@'remote_ip' IDENTIFIED BY 'password';

授予权限(建议按需授权,此处示例授予所有数据库的完全权限)

GRANT ALL PRIVILEGES ON *.* TO 'username'@'remote_ip' WITH GRANT OPTION;

刷新权限

FLUSH PRIVILEGES;

方案二:修改 root 用户允许远程访问

更新 root 用户的 host 为 %(允许任意 IP )

UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';

然后刷新权限

FLUSH PRIVILEGES;

查询是否修改成功

SELECT user,plugin,host FROM mysql.user;

可以看到,此时 root 允许所有用户远程访问

在这里插入图片描述

7. 修改 MySQL 配置文件

Linux 下打开:

vim /etc/mysql/mysql.conf.d/mysqld.cnf # 是编辑mysqld.cnf, 而不是mysql.cnf !

注:如果该配置文件不存在,则打开:vim /etc/my.cnf

修改如下:

bind-address = 0.0.0.0 # 允许所有IP连接(默认值为127.0.0.1,仅限本地)

在这里插入图片描述

8. 重启 MySQL 服务

# Ubuntu/Debian
sudo systemctl restart mysql

# CentOS/RHEL
sudo systemctl restart mysqld

执行结果:

在这里插入图片描述

9. 开放防火墙端口(默认3306)

打开 ufw

sudo ufw allow 3306/tcp
sudo ufw reload

或者打开 firewalld

sudo firewall-cmd –permanent –add-port=3306/tcp
sudo firewall-cmd –reload

10. 验证远程连接

拿另外一台服务器测试能否远程连接

mysql -h mysql_server_ip -u root -p

把 mysql_server_ip 换成你安装 MySQL 的服务器 IP 地址。

执行结果:

在这里插入图片描述

11. IDEA 远程登录 MySQL

方案一:代码验证

在 application.yml 文件中添加 MySQL 配置(这个主要是方便后续开发工作)

在这里插入图片描述

具体格式如下:

spring:
datasource:
prod:
driver-class-name: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://MySQL服务器地址:3306/mysql
username: root
password: 你创建的密码

MySQL 数据的连接 URL 通常具有如下格式:

jdbc:mysql://<hostname>:<port>/<dbname> ?user=<username> &password=<password>

  • hostname:数据库服务器的主机名或者 IP 地址
  • port:数据库监听的端口,默认是 3306
  • dbname:要连接的数据库名字(我用的是 databases 里面默认有个名字叫做 mysql 的库)
  • username:用于连接数据库的用户名
  • password:对应的密码

接下来写一个 Spring Boot 测试类验证连接是否成功,记得修改 JDBC_URL 、USERNAME 、PASSWORD

package info.bicoin.tiger;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
* 快速数据库连接测试
* 不依赖Spring Boot,直接测试JDBC连接
*/

public class QuickDatabaseTest {

// 数据库连接配置 – 使用新的cj驱动格式并优化参数
private static final String JDBC_URL = "jdbc:mysql://MySQL服务器地址:3306/mysql";
private static final String USERNAME = "root";
private static final String PASSWORD = "你的密码";

public static void main(String[] args) {
System.out.println("=== 快速数据库连接测试 ===");
System.out.println("正在测试连接到: MySQL服务器地址:3306/mysql");
System.out.println();

try {
// 移除已弃用的驱动加载方式,使用SPI自动加载
// Class.forName("com.mysql.jdbc.Driver");
System.out.println("✅ MySQL驱动加载成功");

// 测试连接
System.out.println("正在尝试连接数据库…");
long startTime = System.currentTimeMillis();

try (Connection connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD)) {
long endTime = System.currentTimeMillis();
long duration = endTime startTime;

System.out.println("✅ 数据库连接成功!");
System.out.println("连接耗时: " + duration + "ms");
System.out.println("数据库URL: " + connection.getMetaData().getURL());
System.out.println("数据库产品名称: " + connection.getMetaData().getDatabaseProductName());
System.out.println("数据库版本: " + connection.getMetaData().getDatabaseProductVersion());
System.out.println();
System.out.println("🎉 数据库连接测试通过!");

} catch (SQLException e) {
System.err.println("❌ 数据库连接失败!");
System.err.println("错误代码: " + e.getErrorCode());
System.err.println("SQL状态: " + e.getSQLState());
System.err.println("错误信息: " + e.getMessage());

// 根据错误代码给出建议
if (e.getErrorCode() == 1045) {
System.err.println("建议: 用户名或密码错误");
} else if (e.getErrorCode() == 1049) {
System.err.println("建议: 数据库不存在");
} else if (e.getErrorCode() == 2003) {
System.err.println("建议: 无法连接到数据库服务器,请检查网络连接和防火墙设置");
} else if (e.getErrorCode() == 0) {
System.err.println("建议: 网络连接超时,请检查数据库服务器是否可访问");
}

e.printStackTrace();
}

} catch (Exception e) {
System.err.println("❌ 发生未知错误!");
System.err.println("错误信息: " + e.getMessage());
e.printStackTrace();
}
}
}

执行结果:

在这里插入图片描述

方案二:IDEA 界面操作

在右边的侧边栏点击数据库图标,然后添加 MySQL

(注:如果你右侧边栏没有数据库图标的话,说明你用的是 IDEA 是免费版的,必须用订阅版才行)

在这里插入图片描述

然后来到了 data sources 界面:

  • 在 Host 填入 MySQL 服务器所在的 IP 地址
  • 接着填入用户名 root 和密码

在这里插入图片描述

点击下方的 Test Connection 进行测试连接,此时我们可以看到是连接成功了 在这里插入图片描述

连接成功之后只显示默认架构(也就是数据库),可以切换要显示的数据库。

在这里插入图片描述

具体的建库和建表操作大家可以自行在网上搜索,这里不做过多概述。

12. 常见问题排查

ERROR 2003 (HY000): Can’t connect to MySQL server

原因:防火墙未放行端口或 MySQL 未监听外网。

解决方案:

# 检查端口监听状态
netstat -tuln | grep 3306
# 应显示:0.0.0.0:3306 或 :::3306

ERROR 1130 (HY000): Host ‘xxx.xxx.xxx.xxx’ is not allowed

原因:用户权限未正确配置。

解决方案:

— 检查用户权限
SELECT Host, User FROM mysql.user;
— 确保目标IP或'%'存在授权记录

ERROR 1045 (28000): Access denied

原因:密码错误或用户无权限。

解决:确认用户名、密码及授权 IP 是否匹配。

赞(0)
未经允许不得转载:171主机测评 » 【2025最新】Ubuntu22.04 安装 MySQL8.0 教程
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址