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 mysqld 或 systemctl 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 是否限制本机

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

相关推荐
java1234_小锋3 小时前
【技术专题】Mysql8 数据库 - Mysql8 触发器
数据库·mysql·mysql8
Lsetea3 小时前
curl报58 unable to set private key file:客户端证书与私钥加载排查
运维·https·ssl证书·openssl·curl
天远Date Lab3 小时前
零信任架构实战:基于天远学籍核验三要素构建自动化竞赛资格审查网关
运维·人工智能·架构·自动化
KING-WU5124 小时前
Linux 工具之Make 与 Makefile
java·linux·服务器
Lsetea4 小时前
OpenSSL报certificate is not yet valid:error 9与notBefore时间排查
linux·运维·https·ssl证书·openssl
魔法阵维护师4 小时前
Linux 命令行入门踩坑记录:从 VMware 装系统到文件管理
linux·运维·服务器
飞飞传输4 小时前
业务系统文件安全检测怎么做?生物医药企业选型与建设指南
大数据·运维·安全
姜鱼问生4 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
qq_543447824 小时前
DNS解析怎么排查?故障处理与运维实用手册
运维·服务器·网络·php
DeviceHub4 小时前
AI服务器电源设计进阶:TLVR电感的应用解析与选型验证指南
运维·服务器·人工智能