MySQL在Linux下推荐用yum或apt安装官方二进制包:CentOS/Rocky需先卸载MariaDB、添加MySQL仓库、启用8.0模块、安装并运行mysql_secure_installation;Ubuntu则直接apt安装并注意root认证方式;均需配置防火墙、绑定地址及安全初始化。

MySQL 在 Linux 环境下安装主要有两种方式:使用系统包管理器(如 yum 或 apt)安装官方仓库提供的二进制包,或从 MySQL 官网下载并手动编译安装。对大多数生产或开发场景,推荐使用包管理器方式——速度快、依赖自动处理、后续升级方便。
一、基于 yum(CentOS/RHEL/Rocky/AlmaLinux)安装
以 CentOS 8+ 或 Rocky Linux 9 为例(注意:CentOS 8 已停止维护,建议用 Rocky 或 AlmaLinux):
- 先卸载可能冲突的 MariaDB:sudo dnf remove mariadb-libs -y
- 添加 MySQL 官方 Yum 仓库:
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
(el9 对应 RHEL/CentOS 9;el8/el7 请按实际系统版本替换) - 启用 MySQL 8.0 社区版(如需 5.7,可执行 sudo dnf module reset mysql && sudo dnf module enable mysql:5.7)
- 安装 MySQL 服务器:sudo dnf install mysql-community-server
- 启动服务并设为开机自启:
sudo systemctl start mysqld
sudo systemctl enable mysqld - 查看初始密码(首次启动会生成):sudo grep 'temporary password' /var/log/mysqld.log
- 运行安全初始化脚本:sudo mysql_secure_installation,按提示重置 root 密码、禁用匿名用户、禁止远程 root 登录等
二、基于 apt(Ubuntu/Debian)安装
以 Ubuntu 22.04/24.04 为例:
- 更新软件源:sudo apt update
- 安装 MySQL 服务器:sudo apt install mysql-server(默认安装的是 Oracle 维护的 MySQL 8.x,非 MariaDB)
- 启动并启用服务:
sudo systemctl start mysql
sudo systemctl enable mysql - 运行安全配置:sudo mysql_secure_installation
注意:Ubuntu 默认未设置 root 密码,而是通过 auth_socket 插件认证;若需密码登录,需手动修改 root 用户认证方式(见下文补充)
三、首次登录与基础配置
安装完成后,通常可通过以下方式登录:
- 本地 root 登录(Ubuntu):sudo mysql(无需密码)
- 本地 root 登录(CentOS/Rocky):mysql -u root -p,输入 mysql_secure_installation 中设置的密码
- 修改 root 密码(如需):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!';
FLUSH PRIVILEGES; - 如需允许远程连接(仅限测试或内网环境):
创建新用户并授权:
CREATE USER 'admin'@'%' IDENTIFIED BY 'Pass123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
并确认 MySQL 配置文件中 bind-address = 0.0.0.0(默认是 127.0.0.1),重启服务:sudo systemctl restart mysqld
四、验证与常用检查项
确保服务正常运行并可被访问:
- 检查服务状态:sudo systemctl status mysqld(或 mysql)
- 查看监听端口:sudo ss -tlnp | grep :3306
- 登录后执行:SELECT VERSION(), CURRENT_USER(); 确认版本和当前用户
- 检查配置文件位置:mysql --help | grep "Default options",常见路径为 /etc/my.cnf 或 /etc/mysql/my.cnf
不复杂但容易忽略:防火墙(firewalld 或 ufw)可能拦截 3306 端口,远程连接前记得放行:
sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload(CentOS/Rocky)
sudo ufw allow 3306(Ubuntu)










