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;
如果你只是想走一遍最小安装链路,可以按这个顺序做:
yum installsystemctl start mysqld或systemctl start mariadbmysql_secure_installationmysql -uroot -p- 建库、建用户、授权
- 需要远程连时,再处理安全组、防火墙和
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是否限制本机
只要你按这条链排查,大多数"本机能连、远程连不上"的问题都能快速定位。