一、核心安装步骤对比与选择
在 Ubuntu 20.04 上安装 MySQL 8+,主要有以下三种主流方法,其特点对比如下:
| 安装方法 | 核心优势 | 适用场景 | 复杂度 |
|---|---|---|---|
| APT 仓库安装 | 官方推荐,自动管理依赖与更新,版本稳定可靠。 | 生产环境、常规开发环境首选。 | 低 |
| DEB 包手动安装 | 可安装特定版本,不依赖网络仓库。 | 需要离线安装或特定补丁版本。 | 中 |
| Docker 容器化安装 | 环境隔离,部署快速,易于维护和迁移。 | 测试、CI/CD 或微服务环境。 | 中 |
对于绝大多数场景,推荐使用 APT 仓库安装,因其最为简便且由 Ubuntu 和 MySQL 官方共同维护。以下将以此方法为重点进行详细说明 。
二、通过 APT 仓库安装 MySQL 8.0
1. 更新系统包索引并安装 MySQL
首先,更新本地软件包列表,然后安装 mysql-server 包。此命令会安装 MySQL 8.0 的最新可用版本。
sudo apt update
sudo apt install mysql-server -y
执行后,APT 将自动处理所有依赖关系,包括客户端库和公共文件 。
2. 启动并验证 MySQL 服务
安装完成后,MySQL 服务通常会自动启动。为确保服务运行并设置为开机自启,执行以下命令:
# 检查服务状态
sudo systemctl status mysql
# 若未运行,则启动服务
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysql
systemctl status mysql 的输出应显示 active (running),表明服务已成功启动 。
3. 运行安全初始化脚本
MySQL 包含一个安全脚本,用于设置 root 密码、移除匿名用户、禁止远程 root 登录等。这是加固安装的关键步骤。
sudo mysql_secure_installation
执行此脚本后,将出现一系列交互式提示:
- 验证密码组件:推荐输入
Y以启用密码强度验证。 - 设置 root 密码:为 MySQL root 用户设置一个强密码。
- 移除匿名用户:输入
Y以提高安全性。 - 禁止远程 root 登录:输入
Y(除非有特殊需求)。 - 移除测试数据库:输入
Y。 - 重新加载权限表:输入
Y使更改立即生效 。
三、配置与基本操作
1. 调整身份验证插件(如遇连接问题)
MySQL 8.0 默认使用 caching_sha2_password 插件,部分旧版客户端可能不兼容。如果需要改用传统的 mysql_native_password 插件,需进行以下配置。
首先,以 root 身份登录 MySQL:
sudo mysql -u root -p
在 MySQL 提示符下,执行以下 SQL 语句修改 root 用户的认证插件和密码(请将 'YourNewPassword' 替换为你的实际密码):
-- 更改root用户的认证插件和密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourNewPassword';
-- 刷新权限使更改生效
FLUSH PRIVILEGES;
-- 退出MySQL
EXIT;
此操作解决了部分第三方工具(如旧版 MySQL Workbench)的兼容性问题 。
2. 创建新用户与数据库(生产环境建议)
出于安全考虑,生产环境中应避免直接使用 root 用户进行日常操作。以下是创建新数据库和专属用户的示例:
# 登录MySQL
sudo mysql -u root -p
-- 创建一个新的数据库,例如 `myappdb`
CREATE DATABASE myappdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建一个新用户,例如 `appuser`,并设置密码
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongUserPassword123!';
-- 授予新用户对 `myappdb` 数据库的所有权限
GRANT ALL PRIVILEGES ON myappdb.* TO 'appuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
现在,你可以使用 appuser 和其密码通过 mysql -u appuser -p 登录并管理 myappdb 数据库 。
3. 配置远程访问(谨慎开启)
默认情况下,MySQL 只允许本地连接。如需从其他机器访问,需进行配置:
a. 修改 MySQL 绑定地址:
编辑 MySQL 配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address 行,将其值从 127.0.0.1 改为 0.0.0.0(允许所有 IP)或特定的服务器 IP。
bind-address = 0.0.0.0
b. 授予用户远程连接权限:
再次登录 MySQL,为用户授权(例如,允许 appuser 从任何主机连接):
CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongUserPassword123!';
GRANT ALL PRIVILEGES ON myappdb.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
重要安全警告:
'%'通配符允许从任何主机连接。在生产环境中,应尽可能将'%'替换为具体的客户端 IP 地址或网段(如'192.168.1.%'),并确保防火墙(如 UFW)已正确配置,仅允许必要的端口(默认 3306)通过 。
c. 重启 MySQL 服务使配置生效:
sudo systemctl restart mysql
四、验证安装与连接测试
1. 版本验证
通过以下命令检查已安装的 MySQL 版本:
mysql --version
输出应类似 mysql Ver 8.0.xx for Linux on x86_64 (MySQL Community Server - GPL),确认安装的是 MySQL 8.0+ 版本 。
2. 基本功能测试
登录 MySQL 并执行简单查询,验证安装是否成功:
mysql -u appuser -p
-- 显示当前用户和数据库版本
SELECT USER(), VERSION();
-- 显示所有数据库列表(应能看到你创建的 `myappdb`)
SHOW DATABASES;
五、故障排查与常用命令
- 查看错误日志:若服务启动失败,首要检查错误日志。
sudo tail -f /var/log/mysql/error.log - 重置 root 密码(如果忘记):
- 停止 MySQL 服务:
sudo systemctl stop mysql - 以安全模式启动并跳过权限表:
sudo mysqld_safe --skip-grant-tables & - 无密码登录:
mysql -u root - 在 MySQL 中执行:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; - 退出并重启 MySQL 服务 。
- 停止 MySQL 服务:
- 彻底卸载 MySQL:
此操作将删除所有配置文件和数据,请务必提前备份 。sudo systemctl stop mysql sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* sudo rm -rf /etc/mysql /var/lib/mysql sudo apt autoremove
参考来源
- 将SpringBoot项目部署到Ubuntu20.0.4服务器上
- 在Ubuntu20.04上安装MySQL8.0及正确配置[已验证]
- Ubuntu20.04安装MySQL及配置MySQL workbench
- Ubuntu下安装Hive3.1.2教程(附MySQL安装方法及安装包)
- Ubuntu20.04安装MySQL5.7-实测3种方法(保姆级教程)
- Ubuntu 20.04 + mysql 8.0.27 用户名和密码修改(非常实用)
1053



被折叠的 条评论
为什么被折叠?



