最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何在云服务器上安全安装MySQL?
时间:2026-08-12 09:52:48 编辑:袖梨 来源:一聚教程网
不推荐用 apt-get install mysql-server——它在Ubuntu/Debian上实际安装MariaDB,非Oracle最新MySQL,导致认证插件、JSON函数、密码策略等行为不一致;必须通过最新APT/YUM源安装mysql-community-server。
直接说结论:云服务器上安装 MySQL,不推荐用 apt-get install mysql-server 这类系统默认源——它装的是 MariaDB 或老旧版本,和最新 MySQL 行为不一致,后续权限、密码策略、JSON 函数支持都会出问题。
为什么不能直接 apt install mysql-server?
Ubuntu/Debian 的 apt install mysql-server 实际安装的是 mariadb-server,不是 Oracle 最新 MySQL。CentOS 7/8 默认仓库也早已移除 MySQL,只留 MariaDB。两者在以下地方表现不同:
-
mysql_secure_installation脚本行为差异大(MariaDB 不强制密码强度校验) - MySQL 8.0+ 默认启用
caching_sha2_password认证插件,MariaDB 用的是unix_socket或mysql_native_password - JSON 函数、角色管理、
CREATE USER ... IDENTIFIED WITH语法在 MariaDB 中要么缺失要么语义不同
必须用最新 YUM/APT 仓库安装
以 Ubuntu 22.04/24.04 或 CentOS Stream 9 为例,正确安装步骤是:
- 先卸载残留:
sudo apt remove --purge mysql-server mariadb-server(Ubuntu)或sudo dnf remove mysql-community-server(RHEL系) - 下载并安装最新仓库包:
wget https://dev.mysql.com/get/mysql80-community-release-$(lsb_release -sc)-1.noarch.rpm,然后sudo rpm -ivh mysql80-community-release-*.rpm(CentOS/RHEL);Ubuntu 则用sudo dpkg -i mysql80-community-release-*.deb - 确认仓库启用:
sudo yum repolist enabled | grep mysql或apt-cache policy mysql-community-server - 安装服务:
sudo yum install mysql-community-server(CentOS)或sudo apt install mysql-community-server(Ubuntu)
安装后第一件事:改 root 密码并禁用匿名访问
MySQL 8.0+ 启动后会生成临时密码,藏在 /var/log/mysqld.log 里,用 sudo grep 'temporary password' /var/log/mysqld.log 找到。但别急着用这个密码连——先执行 mysql_secure_installation,它会强制你:
- 重设
root@localhost密码(必须满足策略:长度 ≥8、含大小写字母+数字+特殊字符) - 删除匿名用户:
DELETE FROM mysql.user WHERE User=''; - 禁止远程 root 登录(保留
root@localhost即可) - 删除 test 数据库及其访问权限
这步跳过等于裸奔。很多“连不上 MySQL”问题,根源就是没跑 mysql_secure_installation,导致 root 只能从 localhost 用 socket 连,且密码为空或过期。
防火墙和 bind-address 是两个高频翻车点
云服务器默认不开 3306 端口,且 MySQL 默认只监听 127.0.0.1。想让外部应用连接,必须同时做两件事:
- 修改
/etc/my.cnf(或/etc/mysql/mysql.conf.d/mysqld.cnf),把bind-address = 127.0.0.1改成bind-address = 0.0.0.0或具体内网 IP(如172.16.0.5) - 开放端口:
sudo ufw allow 3306(Ubuntu)或sudo firewall-cmd --permanent --add-port=3306/tcp(CentOS) - 重启服务:
sudo systemctl restart mysqld
注意:改完 bind-address 后,必须给远程用户显式授权,比如 CREATE USER 'app'@'192.168.1.%' IDENTIFIED BY 'StrongPass!2026'; GRANT SELECT,INSERT ON mydb.* TO 'app'@'192.168.1.%'; —— 直接用 root@'%' 是严重安全隐患。