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

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

相关推荐
IT WorryFree2 小时前
OpenClaw的运维命令
运维
落日漫游2 小时前
Zabbix监控实战:Linux主机全流程配置
运维·开发语言·自动化
枕布响丸辣2 小时前
Web 技术基础与 Nginx 网站环境部署超详细教程
运维·前端·nginx
新的算法2 小时前
通过重装vCenter Server解决登录vCenter界面时,报“503 Service Unavailable“错误的问题
运维·vmware·虚拟化
lihao lihao2 小时前
MySql内外连接
数据库·mysql
Felven2 小时前
麒麟信安系统忘记root密码解决说明
linux·运维·服务器
qq5680180762 小时前
MySQL下载安装及配置
数据库·mysql
docsz2 小时前
Ubuntu 22.04部署MySQL8.4
mysql·ubuntu
IMPYLH2 小时前
Linux 的 base64 命令
linux·运维·服务器·bash·shell