Skip to content

MySQL 包管理器安装

主流包管理器

Linux 包管理器

APT (Advanced Package Tool)

APT 是 Debian、Ubuntu 及其衍生发行版的包管理器,使用 .deb 格式的软件包。

YUM/DNF

YUM (Yellowdog Updater Modified) 是 Red Hat Enterprise Linux (RHEL)、CentOS 6/7 等发行版的包管理器,使用 .rpm 格式的软件包。DNF 是 YUM 的继任者,用于 RHEL 8+、CentOS 8+ 等发行版。

Zypper

Zypper 是 openSUSE 发行版的包管理器,使用 .rpm 格式的软件包。

macOS 包管理器

Homebrew

Homebrew 是 macOS 上最流行的包管理器,使用自己的公式 (Formula) 系统管理软件包。

MacPorts

MacPorts 是另一个 macOS 包管理器,使用 ports 系统管理软件包。

Windows 包管理器

Chocolatey

Chocolatey 是 Windows 上的包管理器,使用 NuGet 包格式。

Scoop

Scoop 是 Windows 上的命令行包管理器,专注于开发者工具。

APT 安装 MySQL (Debian/Ubuntu)

安装步骤

1. 更新包索引

bash
sudo apt update

2. 安装 MySQL 服务器

bash
sudo apt install mysql-server

3. 启动 MySQL 服务

bash
sudo systemctl start mysql

4. 设置开机自启

bash
sudo systemctl enable mysql

5. 运行安全配置脚本

bash
sudo mysql_secure_installation

该脚本会引导你完成以下配置:

  • 设置 root 密码
  • 删除匿名用户
  • 禁止 root 远程登录
  • 删除测试数据库
  • 重新加载权限表

6. 验证安装

bash
sudo systemctl status mysql
mysql -u root -p -e "SELECT VERSION();"

安装特定版本

bash
# 查看可用的 MySQL 版本
sudo apt-cache policy mysql-server

# 安装特定版本
sudo apt install mysql-server=8.0.33-0ubuntu0.22.04.1

YUM/DNF 安装 MySQL (RHEL/CentOS)

安装步骤 (YUM - CentOS 7)

1. 安装 MySQL Yum 仓库

bash
# 下载 MySQL Yum 仓库
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

# 安装仓库
sudo rpm -ivh mysql80-community-release-el7-7.noarch.rpm

2. 安装 MySQL 服务器

bash
sudo yum install mysql-community-server

3. 启动 MySQL 服务

bash
sudo systemctl start mysqld

4. 设置开机自启

bash
sudo systemctl enable mysqld

5. 获取初始密码

bash
sudo grep 'temporary password' /var/log/mysqld.log

6. 运行安全配置脚本

bash
sudo mysql_secure_installation

7. 验证安装

bash
sudo systemctl status mysqld
mysql -u root -p -e "SELECT VERSION();"

安装步骤 (DNF - RHEL 8/CentOS 8)

1. 安装 MySQL DNF 仓库

bash
# 下载 MySQL DNF 仓库
wget https://dev.mysql.com/get/mysql80-community-release-el8-5.noarch.rpm

# 安装仓库
sudo rpm -ivh mysql80-community-release-el8-5.noarch.rpm

2. 安装 MySQL 服务器

bash
sudo dnf install mysql-community-server

3. 启动 MySQL 服务

bash
sudo systemctl start mysqld

4. 设置开机自启

bash
sudo systemctl enable mysqld

5. 后续步骤与 YUM 安装相同

Zypper 安装 MySQL (openSUSE)

安装步骤

1. 添加 MySQL 仓库

bash
# 添加 MySQL 8.0 仓库
sudo zypper addrepo https://dev.mysql.com/get/mysql80-community-release-sles15-3.noarch.rpm mysql80

2. 刷新包缓存

bash
sudo zypper refresh

3. 安装 MySQL 服务器

bash
sudo zypper install mysql-community-server

4. 启动 MySQL 服务

bash
sudo systemctl start mysqld

5. 设置开机自启

bash
sudo systemctl enable mysqld

6. 运行安全配置脚本

bash
sudo mysql_secure_installation

7. 验证安装

bash
sudo systemctl status mysqld
mysql -u root -p -e "SELECT VERSION();"

Homebrew 安装 MySQL (macOS)

安装步骤

1. 安装 Homebrew (如果尚未安装)

bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. 安装 MySQL

bash
# 安装最新版本
brew install mysql

# 安装特定版本
brew install mysql@8.0

3. 启动 MySQL 服务

bash
# 启动 MySQL
brew services start mysql

# 或手动启动
mysql.server start

4. 设置初始密码

bash
# 运行安全配置脚本
mysql_secure_installation

# 或手动设置密码
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';"

5. 验证安装

bash
brew services list
mysql -u root -p -e "SELECT VERSION();"

Chocolatey 安装 MySQL (Windows)

安装步骤

1. 安装 Chocolatey (如果尚未安装)

以管理员身份运行 PowerShell:

powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

2. 安装 MySQL 服务器

以管理员身份运行 PowerShell:

powershell
choco install mysql

3. 安装 MySQL Workbench (可选)

powershell
choco install mysql.workbench

4. 验证安装

powershell
mysql --version

安装后的基本配置

修改监听地址

默认情况下,MySQL 只监听本地地址 (127.0.0.1)。如果需要允许远程连接,需要修改监听地址:

bash
# 编辑 MySQL 配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf  # Debian/Ubuntu
sudo vi /etc/my.cnf  # RHEL/CentOS/macOS

# 将 bind-address 改为 0.0.0.0 或特定 IP
bind-address = 0.0.0.0

# 重启 MySQL 服务
sudo systemctl restart mysql

创建远程访问用户

sql
-- 创建远程访问用户
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';

-- 授予权限
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;

调整缓冲区大小

根据服务器内存大小调整 MySQL 缓冲区大小:

bash
# 编辑 MySQL 配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

# 添加或修改以下参数
innodb_buffer_pool_size = 1G  # 建议设置为服务器内存的 50-70%
key_buffer_size = 256M
max_allowed_packet = 64M

# 重启 MySQL 服务
sudo systemctl restart mysql

包管理器安装的优势

简化安装过程

  • 自动处理依赖关系
  • 标准化安装路径
  • 简化配置过程

便于维护和升级

  • 一键升级到最新版本
  • 支持回滚到之前的版本
  • 自动处理配置文件更新

安全性

  • 软件包经过验证和签名
  • 定期收到安全更新
  • 减少手动安装带来的安全风险

一致性

  • 确保所有系统使用相同版本的软件
  • 便于在多台服务器上部署相同的配置

版本差异

MySQL 5.7 与 MySQL 8.0 的安装差异

特性MySQL 5.7MySQL 8.0
认证插件mysql_native_passwordcaching_sha2_password
初始密码生成无(需要手动设置)自动生成临时密码
默认字符集latin1utf8mb4
默认认证方式密码验证插件强密码策略
安装包大小较小较大

不同 Linux 发行版的安装差异

发行版包管理器MySQL 包名配置文件路径
Debian/UbuntuAPTmysql-server/etc/mysql/mysql.conf.d/mysqld.cnf
CentOS 7YUMmysql-community-server/etc/my.cnf
CentOS 8DNFmysql-community-server/etc/my.cnf
openSUSEZyppermysql-community-server/etc/my.cnf

最佳实践

安装前准备

  • 检查系统要求:确保系统满足 MySQL 的硬件和软件要求
  • 备份数据:如果是升级,确保备份现有数据
  • 选择合适版本:根据业务需求选择稳定版或开发版
  • 配置网络:确保防火墙允许 MySQL 端口 (默认 3306)

安装过程

  • 使用官方仓库:优先使用 MySQL 官方提供的仓库,而非系统默认仓库
  • 验证软件包:确保安装的软件包经过签名验证
  • 遵循最小化原则:只安装必要的组件,减少安全风险
  • 记录安装过程:记录安装步骤和配置变化,便于后续维护

安装后配置

  • 运行安全配置:执行 mysql_secure_installation 脚本
  • 设置强密码策略:启用密码复杂度要求
  • 限制远程访问:只允许必要的 IP 地址访问 MySQL
  • 配置日志:启用并配置适当的日志级别
  • 监控服务状态:设置监控,及时发现服务异常

后续维护

  • 定期更新:定期更新 MySQL 到最新稳定版本
  • 备份数据:建立定期备份计划
  • 监控性能:监控 MySQL 性能,及时优化
  • 审计权限:定期审查用户权限,移除不必要的权限

常见问题与解决方案

问题:MySQL 服务无法启动

解决方案

  • 检查配置文件语法错误:mysql --help --verbose
  • 查看错误日志:sudo tail -f /var/log/mysql/error.log
  • 检查端口是否被占用:sudo netstat -tuln | grep 3306
  • 检查数据目录权限:sudo ls -la /var/lib/mysql/

问题:无法远程连接到 MySQL

解决方案

  • 检查监听地址:确认 MySQL 监听在 0.0.0.0 或特定 IP
  • 检查防火墙:确保防火墙允许 3306 端口
  • 检查用户权限:确认用户有远程访问权限
  • 检查认证插件:对于 MySQL 8.0,可能需要修改认证插件

问题:忘记 root 密码

解决方案

  1. 停止 MySQL 服务:

    bash
    sudo systemctl stop mysql
  2. 以跳过授权表的方式启动 MySQL:

    bash
    sudo mysqld_safe --skip-grant-tables --skip-networking &
  3. 连接到 MySQL 并重置密码:

    bash
    mysql -u root
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    exit;
  4. 重启 MySQL 服务:

    bash
    sudo systemctl restart mysql

问题:安装特定版本失败

解决方案

  • 检查仓库中是否有该版本:apt-cache policy mysql-serveryum list mysql-community-server --showduplicates
  • 确保仓库配置正确:检查仓库文件内容
  • 清理包缓存:sudo apt cleansudo yum clean all
  • 尝试手动下载并安装:从 MySQL 官网下载对应版本的安装包

常见问题(FAQ)

Q1: 如何选择合适的 MySQL 版本?

A1: 选择 MySQL 版本时应考虑以下因素:

  • 稳定性:生产环境建议使用 LTS (长期支持) 版本
  • 功能需求:根据业务需求选择支持所需功能的版本
  • 兼容性:确保与现有应用和工具兼容
  • 支持周期:选择仍在支持期内的版本

Q2: 包管理器安装与源码编译安装有什么区别?

A2: 主要区别:

  • 包管理器安装:简单快捷,自动处理依赖,便于升级和维护
  • 源码编译安装:可以自定义编译选项,优化性能,但安装过程复杂,升级困难

Q3: 如何查看已安装的 MySQL 版本?

A3: 可以使用以下命令查看:

bash
mysql --version
mysql -u root -p -e "SELECT VERSION();"

Q4: 如何升级 MySQL 到最新版本?

A4: 使用包管理器可以轻松升级:

  • APTsudo apt update && sudo apt upgrade mysql-server
  • YUMsudo yum update mysql-community-server
  • DNFsudo dnf update mysql-community-server
  • Homebrewbrew update && brew upgrade mysql

Q5: 如何卸载 MySQL?

A5: 使用包管理器卸载:

  • APTsudo apt purge mysql-server && sudo apt autoremove
  • YUMsudo yum remove mysql-community-server && sudo yum autoremove
  • DNFsudo dnf remove mysql-community-server && sudo dnf autoremove
  • Homebrewbrew uninstall mysql && brew cleanup

Q6: 安装 MySQL 时需要注意哪些安全问题?

A6: 安装时应注意:

  • 设置强密码
  • 禁止 root 远程登录
  • 删除匿名用户
  • 移除测试数据库
  • 限制 MySQL 监听地址
  • 配置适当的权限
  • 启用防火墙

故障排除指南

查看日志文件

MySQL 日志文件包含了重要的诊断信息:

bash
# Debian/Ubuntu
sudo tail -f /var/log/mysql/error.log

# RHEL/CentOS
sudo tail -f /var/log/mysqld.log

# macOS (Homebrew)
tail -f /usr/local/var/log/mysql/mysqld.err

检查服务状态

bash
# 查看 MySQL 服务状态
sudo systemctl status mysql

# 检查 MySQL 进程
ps aux | grep mysql

# 检查 MySQL 端口
sudo netstat -tuln | grep 3306

测试连接

bash
# 本地连接测试
mysql -u root -p

# 远程连接测试
mysql -h remote_host -u username -p

验证配置

bash
# 检查配置文件语法
mysql --help --verbose > /dev/null

# 查看生效的配置
mysql -u root -p -e "SHOW VARIABLES;"