
摘要: 在云服务器上安装 MySQL,用系统包管理器装好后要做三件事:运行安全初始化、创建业务库和专用账号、配置远程连接并用安全组限制来源 IP。本文给出 Ubuntu/CentOS 完整命令,并客观对比自建 MySQL 与腾讯云数据库 MySQL 的取舍,帮你判断该不该自己维护数据库。
在云服务器上装 MySQL,apt install 或 yum install 只是开始——装完必须跑一遍安全初始化、建专用业务账号、并在安全组层面限制远程连接的来源 IP,否则一个开放到公网又用弱密码的数据库会是严重的安全隐患。同时,自建 MySQL 意味着备份、高可用、调优都要自己负责;业务一旦重要起来,是否改用托管的云数据库值得认真权衡。下面先给出完整安装步骤,再做客观对比。
这是动手前最该做的判断,直接影响后续运维投入:
自建 MySQL(装在云服务器上):成本只有服务器本身,掌控度最高,可任意调参、装插件,适合学习、开发测试、以及对数据库可用性要求不高的小型业务。代价是:数据备份、主从高可用、故障恢复、版本升级、性能调优全部要自己做。
腾讯云数据库 MySQL(托管):开箱即用,提供自动备份、主备热备、监控告警、只读实例扩展、数据库自治 DBbrain 等能力,省去大量运维。适合对数据可靠性和可用性有要求的生产业务。
客观建议:练手、临时用、能接受自己兜底运维,就自建;承载正式业务、担不起数据丢失和宕机,就优先考虑托管。两者没有绝对优劣,取决于你愿意为运维投入多少。下面先讲自建怎么装。
MySQL 的资源消耗取决于数据量和并发。开发测试用 1~2 核 2G 可起步;有一定并发的业务建议 2 核 4G 起,数据库对内存较敏感,内存不足会频繁读盘拖慢性能。
腾讯云服务器 CVM 提供多样化实例规格、SSD 云硬盘和安全组能力,适合自建数据库——用云硬盘存放数据、用安全组精细控制谁能连数据库。准备一台装好主流 Linux 系统、能用 root/sudo 登录的实例即可。
更新源并安装:
sudo apt update
sudo apt install -y mysql-server启动服务并设为开机自启:
sudo systemctl start mysql
sudo systemctl enable mysqlCentOS 系通过官方 yum 仓库安装(以 MySQL 官方当前提供的仓库包为准):
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
sudo yum install -y mysql-community-server
sudo systemctl start mysqld
sudo systemctl enable mysqldMySQL 8 在 CentOS 上首次启动会生成临时 root 密码,用以下命令查看:
sudo grep 'temporary password' /var/log/mysqld.log安装后第一件事是跑安全脚本,它会引导你设置 root 密码、移除匿名用户、禁止 root 远程登录、删除测试库:
sudo mysql_secure_installation按提示设置一个强密码,其余加固项建议全部选择启用。这一步是数据库安全的第一道闸门,不能跳过——跳过它等于把一个默认配置的数据库暴露出去。
不要用 root 账号直接连业务,应为每个业务建独立库和最小权限账号。登录 MySQL:
sudo mysql -u root -p创建数据库和专用账号并授权:
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'%' IDENTIFIED BY '你的强密码';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'%';
FLUSH PRIVILEGES;说明:appuser 只被授予 appdb 这一个库的权限,即使账号泄露也波及不到其他库;'%' 表示允许从任意主机连接,生产环境建议收窄为具体的应用服务器 IP。
让 MySQL 监听外网:默认 MySQL 只监听本机。编辑配置文件(Ubuntu 为 /etc/mysql/mysql.conf.d/mysqld.cnf),把 bind-address 改为 0.0.0.0,重启 MySQL 生效。
用安全组严格限制来源 IP(关键安全措施):MySQL 默认端口 3306,绝不能对全网开放。在腾讯云 CVM 安全组中,只放通应用服务器的 IP 访问 3306 端口,其余一律拒绝。安全组是比数据库账号更外层的防线——把 3306 锁死在可信 IP 范围内,能挡掉绝大多数来自公网的扫描和爆破。
三项验证:sudo systemctl status mysql(或 mysqld)显示服务 active running;本机用 mysql -u appuser -p appdb 能登入业务库;从被安全组放通的应用服务器上,用业务账号能远程连上并执行查询。三项都通过,说明安装、账号、网络三个层面都就绪。
远程连不上:按三层排查——MySQL 的 bind-address 是否改为 0.0.0.0、账号是否允许从该来源主机连接、安全组是否放通了该 IP 的 3306 端口。三者缺一都连不上。
忘记 root 密码:可通过跳过授权表的方式重置(操作需谨慎,以 MySQL 官方文档为准)。
数据怎么备份:自建 MySQL 需自己用 mysqldump 等工具定期导出备份,并把备份文件存到安全位置(如对象存储)。这正是自建相比托管最费心的部分——如果你发现备份、高可用这些事占用精力过多,就是该考虑迁移到腾讯云数据库 MySQL 的信号。
说明:MySQL 版本、仓库包地址、配置文件路径随发行版和版本不同,请以 MySQL 官方文档和你所用系统的实际情况为准。
在云服务器上自建 MySQL 的完整路径是:先判断自建还是托管 → 包管理器安装并启动 → 跑 mysql_secure_installation 加固 → 建业务库和最小权限专用账号 → 配远程监听并用安全组锁定来源 IP → 三层验证。安全初始化和安全组限制来源是两个绝不能省的安全动作。
若业务重要、不愿自己承担备份与高可用的运维,腾讯云数据库 MySQL 提供托管部署、自动备份、主备热备、只读实例扩展与 DBbrain 智能运维,可让团队从数据库日常运维中解放出来,专注业务开发。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。