云服务器安装MySQL推荐使用系统包管理器(apt/yum/dnf),安装后必须执行mysql_secure_installation加固,严格限制远程访问IP并遵循最小权限原则创建应用账号。

云服务器上安装 MySQL 的推荐方式
在主流云服务器(如阿里云、腾讯云、AWS EC2)的 Linux 系统上,apt(Ubuntu/Debian)或 yum/dnf(CentOS/RHEL/Rocky)是最稳妥的安装途径。直接下载二进制包或源码编译不仅耗时,还容易因依赖缺失或 SELinux/AppArmor 策略导致 mysqld 启动失败。
以 Ubuntu 22.04 为例:
sudo apt update sudo apt install mysql-server
安装完成后,mysqld 通常已自动启用并运行。可通过 sudo systemctl status mysql 验证。注意:该方式安装的是 Oracle 官方维护的 mysql-server 包(非 MariaDB),版本一般为 8.0.x,兼容性好、安全更新及时。
首次配置必须执行 mysql_secure_installation
云服务器默认开放公网端口风险极高,而新装 MySQL 的 root 用户默认仅允许本地 socket 登录,且无密码。不运行 mysql_secure_installation 就等于留着后门。
- 它会强制设置 root 密码(建议用强密码,避免与云平台登录密码重复)
- 删除匿名用户:
Remove anonymous users? [Y/n]→ 必选Y - 禁止 root 远程登录:
Disallow root login remotely? [Y/n]→ 选Y(后续如需远程管理,应新建专用账号并限制 IP) - 删除 test 数据库及权限:
Remove test database and access to it? [Y/n]→ 选Y - 重载权限表:
Reload privilege tables now? [Y/n]→ 选Y
执行后,root 只能通过 sudo mysql -u root -p 本地登录,这是云环境最基本的安全基线。
修改绑定地址前先确认防火墙和安全组
MySQL 默认监听 127.0.0.1:3306,若需从其他机器连接(比如本地开发机连云数据库),需改 bind-address。但直接改成 0.0.0.0 并不安全,且常被忽略两个关键层:
SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板
- 云平台安全组:必须手动放行 TCP 3306 端口,并严格限制源 IP(例如只允你办公室公网 IP 或跳板机 IP)
-
系统防火墙:Ubuntu 默认用
ufw,需执行sudo ufw allow from 203.0.113.42 to any port 3306(替换为你自己的 IP);CentOS 用firewalld,命令为sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.42" port port="3306" protocol="tcp" accept' - 配置文件位置:
/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或/etc/my.cnf(CentOS),修改bind-address = 0.0.0.0后必须重启:sudo systemctl restart mysql
没配安全组就改 bind-address,服务起得来也连不上;配了安全组却没开系统防火墙,同样连不通——这两层漏一不可。
创建远程访问账号时别用 root,也别给 % 全通权限
应用连接数据库应使用独立账号,而非 root。错误做法:CREATE USER 'app'@'%' IDENTIFIED BY 'pwd'; GRANT ALL ON *.* TO 'app'@'%'; —— 这等于把整台云服务器的数据库权限暴露给任意 IP。
正确做法是精确限定:
CREATE USER 'app'@'203.0.113.42' IDENTIFIED BY 'strong_password_here'; GRANT SELECT, INSERT, UPDATE ON myapp_db.* TO 'app'@'203.0.113.42'; FLUSH PRIVILEGES;
说明:
-
'app'@'203.0.113.42'中的 IP 必须与你应用服务器的真实出口 IP 一致(不是内网 IP) - 权限按最小必要原则授予,
ALL和*.*在生产环境禁止出现 - MySQL 8.0+ 默认认证插件是
caching_sha2_password,某些旧客户端不兼容,如遇连接失败,可显式指定:ALTER USER 'app'@'203.0.113.42' IDENTIFIED WITH mysql_native_password BY 'strong_password_here';
云服务器上的 MySQL 不是本地玩具,每个账号、每条授权、每个端口开放,都必须有明确来源和用途。疏忽一处,就可能成为横向渗透的起点。









