Linux 安装 MySQL 与远程连接排障(yum 方案)


1. 这篇文章你能学到什么

  • yum 在 Linux 上安装 MySQL(以常见的 CentOS 7/8 生态为例)
  • 启动/停止/设置开机自启
  • 初始化 root 密码、创建数据库与账号
  • (可选)开放远程连接:安全组/防火墙/MySQL 权限与绑定地址
  • 常见报错的排障思路

目录

  • 先确认系统与安装路线
  • 再完成 MySQL 安装、初始化和授权
  • 最后处理远程连接与常见报错排障

2. 安装前确认系统与包管理器

先确认系统版本(不同发行版命令略有差异):

bash 复制代码
cat /etc/os-release

确认 yum 可用:

bash 复制代码
yum --version

3. 安装 MySQL(两条路线)

3.1 路线一:安装 MariaDB(最省事,适合入门)

说明:在不少发行版里,mysql 实际会被 MariaDB 替代。

bash 复制代码
yum install -y mariadb mariadb-server

启动并设置开机自启:

bash 复制代码
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb

3.2 路线二:安装 MySQL Community(更贴近真实 MySQL)

通常需要先添加 MySQL 官方仓库(不同系统略有不同),然后再安装:

bash 复制代码
yum install -y mysql-server

启动并设置开机自启:

bash 复制代码
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

4. 初始化与安全加固(强烈建议做)

4.1 初始化安全脚本(推荐)

MariaDB:

bash 复制代码
mysql_secure_installation

MySQL:

bash 复制代码
mysql_secure_installation

你需要按提示完成:

  • 设置 root 密码
  • 删除匿名用户
  • 禁止 root 远程登录(如只是学习阶段也可按需选择)
  • 删除 test 库
  • 刷新权限表

4.2 登录验证

bash 复制代码
mysql -uroot -p

5. 创建数据库、用户与授权(最常用)

进入 MySQL 后:

sql 复制代码
-- 1) 建库
CREATE DATABASE demo DEFAULT CHARACTER SET utf8mb4;

-- 2) 创建用户('%' 表示允许任意 IP;更安全的是写固定 IP 或网段)
CREATE USER 'app'@'%' IDENTIFIED BY 'StrongPassword_123';

-- 3) 授权
GRANT ALL PRIVILEGES ON demo.* TO 'app'@'%';

-- 4) 刷新权限
FLUSH PRIVILEGES;

如果你只是想走一遍最小安装链路,可以按这个顺序做:

  1. yum install
  2. systemctl start mysqldsystemctl start mariadb
  3. mysql_secure_installation
  4. mysql -uroot -p
  5. 建库、建用户、授权
  6. 需要远程连时,再处理安全组、防火墙和 bind-address

6. 远程连接(可选,学习阶段常用,上线谨慎)

6.1 云服务器安全组

需要放行:

  • 3306(MySQL)

建议:

  • 只放行你本机公网 IP(白名单),不要全网开放。

6.2 系统防火墙(不同系统不同)

如果是 firewalld:

bash 复制代码
firewall-cmd --list-ports
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

6.3 MySQL 绑定地址(关键坑)

如果 MySQL 只监听 127.0.0.1,外网一定连不上。

  • 找到配置文件(常见路径之一):
    • /etc/my.cnf
    • /etc/mysql/my.cnf
    • /etc/my.cnf.d/*.cnf

grep 查:

bash 复制代码
grep -R "bind-address" -n /etc 2>/dev/null | head

如果存在:

  • bind-address=127.0.0.1 只允许本机
  • 改成 0.0.0.0 表示监听所有网卡(学习阶段可用,上线谨慎)

修改后重启:

bash 复制代码
systemctl restart mysqld
# 或 systemctl restart mariadb

7. 快速排障清单(最常见)

7.1 本机能连,外网连不上

按顺序排:

  • MySQL 是否真的在运行:
bash 复制代码
ps -ef | grep mysql
  • 端口是否监听:
bash 复制代码
ss -lntp | grep 3306
  • 安全组是否放行 3306
  • 系统防火墙是否放行 3306
  • MySQL 用户授权是否允许远程('user'@'%'
  • bind-address 是否限制了本机

7.2 报错:Access denied for user

常见原因:

  • 用户名/密码不对
  • 授权 host 不对(比如只授权了 'app'@'localhost'
  • 忘了 FLUSH PRIVILEGES

7.3 报错:Can't connect to MySQL server / Connection timed out

常见原因:

  • 端口没放行(安全组/防火墙)
  • MySQL 没监听公网(bind-address
  • 服务没启动

8. 建议的上线姿势(安全提醒)

  • 不要把 3306 对公网全开放
  • 用内网访问(同 VPC)或 VPN / 堡垒机
  • 强密码 + 最小权限账号
  • 定期备份(mysqldump 或定时快照)

9. 小结

MySQL 安装看起来命令不多,但真正容易出问题的是"远程连接链路":

  • 服务是否启动
  • 3306 是否监听
  • 安全组/防火墙是否放行
  • 用户授权 host 是否正确
  • bind-address 是否限制本机

只要你按这条链排查,大多数"本机能连、远程连不上"的问题都能快速定位。

相关推荐
Vect__13 小时前
深刻理解进程、线程、程序
linux
w61001046614 小时前
CKAD-2026-Ingress
运维·k8s·ckad
别抢我的锅包肉14 小时前
【MySQL】第四节 - 多表查询、多表关系全解析
数据库·mysql·datagrip
末日汐15 小时前
传输层协议UDP
linux·网络·udp
zzh08115 小时前
MySQL高可用集群笔记
数据库·笔记·mysql
Shely201716 小时前
MySQL数据表管理
数据库·mysql
寂夜了无痕17 小时前
MySQL 主从延迟全链路根因诊断与破局法则
数据库·mysql·mysql主从延迟
爱丽_17 小时前
分页为什么越翻越慢:offset 陷阱、seek 分页与索引排序优化
数据库·mysql
Bat U17 小时前
MySQL数据库|表设计+新增+分组查询
数据库·mysql
zzzsde17 小时前
【Linux】库的制作和使用(3)ELF&&动态链接
linux·运维·服务器