在 Linux 上装数据库服务器,最快的路径就是用发行版自带的包管理器装 MySQL 8.0 或 PostgreSQL,三五条命令、十分钟内服务就能起来;真正决定这套库能不能长期稳定运行的,是装完之后的初始化、账号权限和参数调优。下面按“选型安装对比成本加固”的顺序,把整件事拆开讲清楚。
先想清楚三件事再动手
装数据库不是敲一条 apt install 就算完,开工前有三个判断,会直接影响后面所有步骤。
选哪种数据库
- MySQL 8.0 / MariaDB:Web 业务、中小型系统的主力选择,生态最全,教程最多,行业共识认为,在开源关系型数据库里 MySQL 系依然占据多数份额。
- PostgreSQL:复杂查询、地理信息、JSON 场景更强,事务和数据类型的严谨度更高。
- Redis / MongoDB:前者做缓存和会话,后者适合结构不固定的文档数据,不能替代关系库。
如果你只是搭个博客、跑个后台管理系统,MySQL 8.0 就够了,别一上来追求“全家桶”。
确认你的发行版
一条命令看清楚:
cat /etc/os-release
Ubuntu / Debian 走 apt,Rocky / AlmaLinux / CentOS Stream 走 dnf,两者在配置路径、服务名、日志位置上完全不同,混着抄教程是新手翻车的头号原因。
检查机器资源
MySQL 8.0 默认配置在 1 核 1G 的机器上很容易被 OOM Killer 干掉,经验值是:MySQL 8.0 建议至少 2G 内存,PostgreSQL 同理;实在只有 1G,先加 2G swap 再装,或者退回 MariaDB。
free -h df -h
Linux服务器怎么安装MySQL数据库
这是搜索量最大的一类问题,直接给可复制的路径。
Ubuntu / Debian 路线
sudo apt update sudo apt install -y mysql-server sudo systemctl enable --now mysql sudo mysql_secure_installation
Ubuntu 的 root 默认用 auth_socket 插件认证,本地 sudo mysql 能直接进,但远程工具连不上,改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码'; FLUSH PRIVILEGES;
Rocky / AlmaLinux / CentOS Stream 路线
系统自带仓库里通常是 MariaDB,想装正版 MySQL 8.0 需要先加官方源:
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm sudo dnf install -y mysql-community-server sudo systemctl enable --now mysqld sudo grep 'temporary password' /var/log/mysqld.log sudo mysql_secure_installation
注意服务名是 mysqld 而不是 mysql,日志在 /var/log/mysqld.log,这两个细节能省掉你半小时排查时间。
PostgreSQL 的差异点
# Debian 系 sudo apt install -y postgresql postgresql-contrib # RHEL 系 sudo dnf install -y postgresql-server postgresql-contrib sudo postgresql-setup --initdb sudo systemctl enable --now postgresql
PostgreSQL 装完必须手动改 /var/lib/pgsql/data/pg_hba.conf 里的认证方式,否则远程连不上,这是它和 MySQL 最大的操作差异。
国内服务器安装数据库用哪个源比较快
简米云、酷番云、华为云的内网镜像站都同步了主流发行版仓库,把 /etc/apt/sources.list 或 /etc/yum.repos.d/ 里的地址换成内网域名,安装速度能从几分钟降到几十秒,MySQL 官方源在国内偶尔慢,可以先用镜像站的 mysql-community 仓库替代,装完再核对版本号是否一致。
CentOS和Ubuntu安装数据库有什么区别
同样是装 MySQL,两条路线的细节差别不小,做张表对照更直观。
| 对比项 | Ubuntu / Debian | Rocky / AlmaLinux / CentOS Stream |
|---|---|---|
| 包管理器 | apt | dnf |
| 服务名 | mysql | mysqld |
| 主配置文件 | /etc/mysql/mysql.conf.d/mysqld.cnf | /etc/my.cnf |
| 错误日志 | /var/log/mysql/error.log | /var/log/mysqld.log |
| 初始密码 | 无,root 走 auth_socket | 随机生成,写在日志里 |
| 防火墙工具 | ufw | firewalld |
| 默认仓库版本 | 通常较新 | 常为 MariaDB,需加官方源 |
放行端口的写法也不一样:
# Ubuntu sudo ufw allow from 10.0.0.0/8 to any port 3306 # RHEL 系 sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/8 port port=3306 protocol=tcp accept' sudo firewall-cmd --reload
别直接 allow 3306 对全网开放,数据库端口暴露在公网是被扫描和爆破的高发入口。
云服务器上自建数据库一年要花多少钱
这个问题没有标准答案,但可以给个判断框架。
- 自建:一台 2 核 4G 的云服务器,包年通常在几百到一千多元区间,加上云盘和快照费用,优势是便宜、可控;代价是备份、主从、故障恢复全得自己扛。
- 托管 RDS:同等规格月付普遍在两百元以上,贵出来的部分买的是自动备份、监控告警和故障切换。
据统计,中小团队在业务早期用自建库过渡、数据量上来后再迁移到托管服务,是较常见的做法。如果你的团队没有专职 DBA,且业务不能容忍长时间停机,托管方案的综合成本往往更低。
没有外网时怎么离线安装数据库
内网服务器、等保环境、生产隔离区都可能拿不到外网,这时候走离线包。
以 MySQL 8.0 的二进制包为例:
# 在有网机器下载 mysql-8.0.x-linux-glibc2.28-x86_64.tar.xz 后上传 tar -xf mysql-8.0..tar.xz -C /usr/local/ ln -s /usr/local/mysql-8.0. /usr/local/mysql groupadd mysql && useradd -r -g mysql mysql mkdir -p /data/mysql && chown -R mysql:mysql /data/mysql /usr/local/mysql/bin/mysqld --initialize --user=mysql \ --basedir=/usr/local/mysql --datadir=/data/mysql
前置依赖别忘了 libaio、numactl、libncurses,这些包也得提前下好 RPM 或 deb 一起带走,RPM 路线则按 common → libs → client → server 的顺序安装,顺序错了会报依赖缺失。
装完必须做的六件事
服务起来只是开始,下面这几步决定它能不能扛住生产流量。
- 限制监听地址:
bind-address = 127.0.0.1或内网 IP,不要写0.0.0。 - 禁用 root 远程登录,为每个业务建独立账号并限定来源主机:
CREATE USER 'app'@'10.0.1.%' IDENTIFIED BY '...'; - 调缓冲池:
innodb_buffer_pool_size设为物理内存的 50%~70%,这是性能影响最大的单个参数。 - 字符集统一 utf8mb4,避免上线后才发现 emoji 存不进去。
- 开慢查询日志,
slow_query_log = ON,long_query_time = 1,出问题时才有据可查。 - 配置定时备份:
mysqldump全量 + binlog 增量,或 Percona XtraBackup 做物理备份,业内专家指出,备份没做过恢复演练,等于没有备份。
最后用三条命令确认状态:
systemctl status mysql ss -lntp | grep 3306 mysqladmin -uroot -p ping
关于Linux数据库安装的常见问题
Linux安装数据库服务器最低需要什么配置?
跑 MySQL 8.0 或 PostgreSQL 的测试环境,1 核 2G 是下限,建议配 2G 以上 swap;生产环境建议 2 核 4G 起步,磁盘用 SSD,数据目录和日志目录能分开更好。
安装MySQL和PostgreSQL哪个更适合新手?
如果目标是快速跑通业务、找资料方便,MySQL 上手门槛更低,社区教程和可视化工具更丰富;如果业务涉及复杂分析查询、JSON 字段或强事务一致性要求,PostgreSQL 更合适,代价是需要多花时间理解它的认证配置和权限模型。
Linux装完数据库连不上3306端口怎么办?
按这个顺序排查:ss -lntp 看服务是否真的在监听;bind-address 是否绑定了 127.0.0.1;防火墙或安全组是否放行了来源 IP;账号的 host 字段是否允许该来源地址;云厂商的安全组规则是否与系统防火墙同时配置,这五项全部通过后,连接失败基本只剩密码或认证插件的原因。
Linux 装数据库这件事,命令本身不难,难的是把版本选对、把路径记准、把权限收紧。照着上面的顺序走一遍,一台能上生产的基础数据库服务器就成型了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/784360.html


