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-server 或 yum list mysql-community-server --showduplicates
  • 确保仓库配置正确:检查仓库文件内容
  • 清理包缓存:sudo apt clean 或 sudo 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: 使用包管理器可以轻松升级:

  • APT:sudo apt update && sudo apt upgrade mysql-server
  • YUM:sudo yum update mysql-community-server
  • DNF:sudo dnf update mysql-community-server
  • Homebrew:brew update && brew upgrade mysql

Q5: 如何卸载 MySQL? ​

A5: 使用包管理器卸载:

  • APT:sudo apt purge mysql-server && sudo apt autoremove
  • YUM:sudo yum remove mysql-community-server && sudo yum autoremove
  • DNF:sudo dnf remove mysql-community-server && sudo dnf autoremove
  • Homebrew:brew 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;"