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

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

相关推荐
路由侠内网穿透6 小时前
本地部署开源自托管服务器监控系统哪吒监控并实现外部访问
运维·服务器·网络协议
We Just Keep growing6 小时前
【MySQL进阶篇】—— 视图、存储过程、存储函数、触发器
数据库·mysql
友莘居士6 小时前
KingbaseES Docker速查表
运维·docker·容器
阳光满路6 小时前
三步搞定:Linux 安装配置 Telnet 服务
linux·运维·centos
Sunny_20228376 小时前
有些CAD图形能显示却打印不出来
运维·pccad插件、cad·pccad个人免费版·免费cad插件
码农编程录6 小时前
【notes9】
linux
梦想的颜色7 小时前
MySQL 数据存储结构与查询执行生命周期深度解析
运维·数据结构·数据库·mysql·线程·优化
RisunJan7 小时前
Linux命令-objdump(显示二进制文件信息)
linux·运维
小肥君7 小时前
docker镜像配置
运维·docker·容器