是,dnf install -y mysql-server 在华为云flexus(hce/centos stream镜像)上默认安装mysql 8.0.x(如8.0.42),但需先配置hce官方repo,否则可能误装mariadb;安装后须修改bind-address、授权远程用户并开放安全组3306端口方可外部访问。

能直接装,但默认不开放远程访问,安全组必须手动配,否则本地连得上、外面连不上。
dnf install mysql-server 装的是 MySQL 8.0 吗
在华为云 Flexus(基于 HCE 或 CentOS Stream 的镜像)上执行 dnf install -y mysql-server,默认安装的是 MySQL 8.0.x(如 mysql Ver 8.0.42),但要注意:
- 不是所有镜像都预装了官方 MySQL 仓库;若提示找不到包,先确认是否已配置 HCE 官方 repo(参考“HCE 的 REPO 源配置”)
- 部分镜像可能默认启用
mariadb源,导致装到 MariaDB;可加--enablerepo=appstream或显式指定包名mysql-community-server避免混淆 - 装完运行
mysql -V确认输出含8.0.,而非10.(MariaDB)或5.7
systemctl start mysqld 启动后,为什么本地能连、远程连不上
因为 MySQL 默认绑定 127.0.0.1,且华为云安全组默认拒绝所有入向流量。两个条件缺一不可:
- MySQL 配置需放开监听:编辑
/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf,确保有bind-address = 0.0.0.0(或注释掉该行),然后systemctl restart mysqld - 用户权限需允许远程:用
mysql -u root -p登录后执行CREATE USER 'root'@'%' IDENTIFIED BY 'your_strong_pwd'; GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; - 最关键的一步:安全组没开 3306 端口 —— 即使前两步全对,外部请求在到达服务器网卡前就被丢弃
安全组入方向规则怎么填才真正生效
在华为云控制台 > 安全组 > 配置规则 > 入方向,添加一条规则,参数必须严格匹配:
-
协议端口:选
TCP,端口填3306(如果改过 MySQL 的port,这里必须同步) -
源地址:不要盲目填
0.0.0.0/0;生产环境建议填具体客户端 IP 段(如203.208.60.0/24),测试阶段可临时用0.0.0.0/0,但之后必须收紧 - 方向与生效范围:规则必须加在 MySQL 实例所在的安全组 上,不是客户端 ECS 的安全组;且只影响入向,出向无需额外配(默认全放行)
-
规则数量限制:一个安全组最多 50 条规则,别为了“方便”堆一堆重复规则;多个 IP 段尽量合并(如
192.168.1.0/24和192.168.2.0/24可尝试合并为192.168.0.0/22)
配完还是连不上?优先检查这三个地方
常见失效链路是「安全组 → 系统防火墙 → MySQL 绑定」逐级阻断,按顺序排查:
- 执行
ss -tlnp | grep :3306,确认输出含*:3306(表示监听在所有地址),而非127.0.0.1:3306 - 执行
iptables -L -n | grep 3306(或nft list ruleset),确认系统防火墙没拦截;Flexus 默认无 iptables 规则,但自定义镜像可能有 - 登录华为云控制台,打开对应安全组的「入方向规则」页签,确认规则状态为「已启用」,且「应用实例」列确实包含你的 Flexus 实例(有时绑定未生效需手动刷新或重绑)
安全组规则修改后实时生效,但连接跟踪(conntrack)可能缓存旧会话;如果刚配好就试连失败,换新客户端 IP 或等 30 秒再试,避免被旧连接状态干扰。











