Linux (CentOS/Ubuntu) 命令行安装MySQL指南
在Linux服务器中,无论是CentOS还是Ubuntu,安装MySQL的核心路径均包含三个环节:配置官方或系统依赖源、通过包管理器拉取并安装程序文件、初始化系统服务并执行安全基线配置。本文将完整介绍两套系统下从纯净环境到安全可用的命令行实操步骤,并拆解权限与网络连通的关键排错方法。
一、安装前准备与核心流程
在开始安装前,需要明确你的系统发行版及其包管理工具:Ubuntu使用 apt,而CentOS(包括兼容的RHEL体系)主要使用 yum 或 dnf。如果系统此前安装过旧版本的MySQL或MariaDB,必须先完成清理,避免出现动态库冲突或端口占用的问题。
二、Ubuntu 系统安装步骤 (APT)
Ubuntu 官方软件仓库内置了 MySQL Server 软件包,版本通常保持稳定且维护充分,可直接使用 apt 工具拉取安装。
1. 更新索引并安装服务
# 更新本地软件包列表
sudo apt update
# 安装 MySQL 服务端
sudo apt install -y mysql-server
2. 启动与管理服务
安装完成后,Ubuntu 默认会自动启动 MySQL 实例并加入开机自启。你可以通过以下命令确认运行状态:
# 启动服务(若未启动)
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysql
# 查看运行状态
sudo systemctl status mysql
如果输出中包含绿色的 active (running) 字样,说明数据库服务进程已在后台成功监听。
三、CentOS 系统安装步骤 (YUM / DNF)
CentOS 默认源中通常收录 MariaDB 作为替代,因此安装官方 MySQL 时,通常需要配置 MySQL 官方 YUM 软件源,或使用内置的 AppStream 模块流。
1. 清理冲突包并配置官方源
# 检查是否存在 MariaDB 依赖冲突并清理
sudo rpm -qa | grep -i mariadb | xargs -r sudo rpm -e --nodeps
# 下载并安装官方 MySQL Yum Repository RPM 包 (以 EL8/EL9 架构通用源为例)
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
2. 安装 MySQL Community Server
若使用的是 CentOS 8 / Stream 或兼容系统,可能需要先禁用默认模块流,避免包管理解析歧义:
# 禁用系统自带的 mysql 模块流
sudo dnf -y module disable mysql
# 安装 MySQL Community 核心服务
sudo dnf install -y mysql-community-server
3. 启动服务并获取临时密码
CentOS 下安装完成后服务不会自动拉起,需要手动启动并设置自启:
# 启动服务
sudo systemctl start mysqld
# 设置自启
sudo systemctl enable mysqld
与 Ubuntu 不同,CentOS 首次启动 mysqld 时会由系统自动为 root@localhost 生成一个随机临时密码,保存在系统日志中。运行以下命令过滤提取该密码:
# 提取临时初始化密码
sudo grep 'temporary password' /var/log/mysqld.log
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: pW#k9L!z_a1q末尾的字符串
pW#k9L!z_a1q 即为下一步登录所需的一次性密码。
四、安全初始化配置与权限设置
无论在哪个系统下,新安装的 MySQL 实例都建议运行官方自带的安全强化向导 mysql_secure_installation。该向导会执行以下四项核心安全清理:验证密码强度、移除匿名用户、禁止 root 远程直接登录、删除默认的 test 数据库。
# 执行向导
sudo mysql_secure_installation
在向导提示过程中,按照以下逻辑进行选择:
- VALIDATE PASSWORD COMPONENT:如果对系统密码合规性有严格限制,可键入
y并选择强度级别;如果是开发测试环境,键入n可避免因密码复杂度不足频繁报错。 - New password:输入自定义的高强度 root 密码(CentOS 用户需在此前先输入上面找到的临时密码)。
- Remove anonymous users?:键入
y,禁止匿名连接。 - Disallow root login remotely?:键入
y,强制 root 仅可在本地连接。 - Remove test database and access to it?:键入
y,清理测试数据库。 - Reload privilege tables now?:键入
y,让上述改动即时生效。
五、远程连接架构与网络排错
完成安全初始化后,root 账户被限制在本地访问。若需要开发工作站或外部业务服务连接该数据库,标准做法是在数据库内创建专属远程运维账号,并同步检查系统监听地址与防火墙设置。
1. 创建远程业务用户
首先进入 MySQL 命令行客户端:
# 登录本地数据库
sudo mysql -u root -p
在 MySQL 控制台中,执行如下 SQL 语句创建一个专供指定网段或全网段访问的用户:
-- 创建一个允许任意主机 (%) 连接的用户 app_user,密码为 MyPassword@2026
CREATE USER 'app_user'@'%' IDENTIFIED BY 'MyPassword@2026';
-- 授予该用户在业务数据库上的读写权限(若没有库可先赋予全部库)
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%' WITH GRANT OPTION;
-- 刷新授权使改动立刻生效
FLUSH PRIVILEGES;
-- 退出终端
EXIT;
2. 修改监听绑定地址 (Bind Address)
在部分系统(特别是 Ubuntu)的默认配置中,MySQL 默认只监听本地回环网络 127.0.0.1,外部数据包会直接被系统内核拒绝。
检查配置文件并修改:
- Ubuntu 路径:
/etc/mysql/mysql.conf.d/mysqld.cnf - CentOS 路径:
/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf
找到 bind-address 这一行,将其更改为允许全部网络接入:
# 允许所有网络接口监听
bind-address = 0.0.0.0
修改完成后,重启 MySQL 服务使配置生效:
# Ubuntu
sudo systemctl restart mysql
# CentOS
sudo systemctl restart mysqld
3. 检查系统防火墙规则
如果云服务器或物理宿主机开启了系统防火墙,需要显式放行 3306 端口:
# Ubuntu (UFW)
sudo ufw allow 3306/tcp
sudo ufw status
# CentOS (Firewalld)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
六、两类系统的核心差异与速查总结
为便于读者快速根据环境确认差异,以下汇总了两个主流发行版在包管理、默认配置文件、服务名称以及初始密码策略上的关键对照:
| 配置项 / 行为 | Ubuntu (基于 Debian) | CentOS (基于 RHEL) |
|---|---|---|
| 核心包管理器 | apt |
dnf / yum |
| Systemd 服务名称 | mysql (亦可使用 mysql.service) |
mysqld (mysqld.service) |
| 安装后初始状态 | 自动启动并加入开机启动项 | 未启动,需显式执行 systemctl start |
| Root 初始密码机制 | 基于 auth_socket 插件认证,root免密本地提权 |
自动生成临时明文密码,写入 /var/log/mysqld.log |
| 主配置文件位置 | /etc/mysql/mysql.conf.d/mysqld.cnf |
/etc/my.cnf |
| 默认数据目录 | /var/lib/mysql |
/var/lib/mysql |
只要按照上述顺序依次完成源配置、服务拉取、安全向导以及必要的网络解绑,即可在两种主流的 Linux 发行版上得到一个兼具安全性与可用性的 MySQL 服务环境。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









