MariaDB 一键部署:VPS 上最省心的数据库环境搭建

概述

MySQL 被 Oracle 收购之后,社区转向了 MariaDB——这是由 MySQL 创始人亲手打造的分支,完全兼容 MySQL 协议,性能毫不逊色,而且开源协议更友好。

很多开发者习惯用 MySQL,但 MariaDB 在 VPS 上安装更简单:apt 源里直接就有,不需要加第三方 PPA,升级路径也平滑。这篇教程带你从零装好 MariaDB,配置远程访问,顺手把安全加固做了。

全程大概 10 分钟,装完就能用。

准备工作

你需要:

  • 一台 Ubuntu 20.04+ 或 Debian 11+ 的 VPS
  • root 或 sudo 权限
  • 至少 1GB 内存(跑 MariaDB 最低要求)
  • 至少 5GB 可用磁盘空间

安装步骤

第一步:安装 MariaDB

Ubuntu 和 Debian 的默认源里就有 MariaDB,直接装:

sudo apt update
sudo apt install -y mariadb-server mariadb-client

装完服务会自动启动。检查一下状态:

sudo systemctl status mariadb

输出应该显示 active (running)。

第二步:运行安全脚本

MariaDB 装完后,root 用户默认没有密码,外部也可以直接连。运行安全脚本一键修复:

sudo mysql_secure_installation

会依次问几个问题:

  • 切换 root 密码? 选 Y,设一个强密码(建议 12 位以上,含大小写和数字)
  • 删除匿名账户? 选 Y
  • 禁止 root 远程登录? 选 Y(后面我们会单独创建远程用户)
  • 删除 test 数据库? 选 Y
  • 重新加载权限表? 选 Y

第三步:创建远程访问用户

默认禁止 root 远程登录,但很多工具(phpMyAdmin、DBeaver、Navicat)需要从外面连数据库。我们创建一个专用账户:

sudo mysql -u root -p

输入刚才设的 root 密码进入 MariaDB 命令行,然后执行:

CREATE USER 'devuser'@'%' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'devuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

把 YourStrongPassword123! 换成你自己的强密码。'devuser'@'%' 表示这个用户可以从任意 IP 连接。

安全提醒:生产环境不要开 %,改成具体 IP 更安全,比如 'devuser'@'192.168.1.100'。

第四步:配置防火墙

如果你的 VPS 开了 ufw 防火墙,需要放行 3306 端口:

sudo ufw allow 3306/tcp
sudo ufw status

如果没有用 ufw,可以跳过这步。

第五步:配置远程监听(可选)

默认情况下 MariaDB 只监听本地 127.0.0.1。如果你需要从其他机器连进来,需要改配置:

sudo sed -i 's/127.0.0.1/0.0.0.0/' /etc/mysql/mariadb.conf.d/50-server.cnf
sudo systemctl restart mariadb

验证监听是否生效:

sudo netstat -tlnp | grep 3306

应该看到 0.0.0.0:3306,而不是 127.0.0.1:3306。

第六步:创建你的第一个数据库

sudo mysql -u root -p -e "CREATE DATABASE myapp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

utf8mb4 是推荐编码,支持 emoji 和几乎所有字符。

验证安装

# 检查服务状态
sudo systemctl is-active mariadb
# 应该输出: active

# 检查版本
mariadb --version
# 应该输出类似: mariadb  Ver 15.1 Distrib 10.11.x

# 本地登录测试
sudo mysql -u root -p -e "SHOW DATABASES;"

# 远程连接测试(从另一台机器)
mysql -h YOUR_VPS_IP -P 3306 -u devuser -p

常见问题

Q: 装完 mysql 命令打不开?

MariaDB 用 mariadb 代替了 mysql,但大多数情况 mysql 也能用。如果提示找不到,装客户端:

sudo apt install -y mariadb-client

Q: 远程连不上,提示 “Host is not allowed to connect”?

检查两件事:

  1. 防火墙是否放行了 3306 端口
  2. 用户权限是否给了 %:
sudo mysql -u root -p -e "SELECT user, host FROM mysql.user WHERE user='devuser';"

如果 host 不是 %,重新授权:

DROP USER 'devuser'@'%';
CREATE USER 'devuser'@'%' IDENTIFIED BY 'YourPassword';
GRANT ALL PRIVILEGES ON *.* TO 'devuser'@'%';
FLUSH PRIVILEGES;

Q: 忘记密码怎么办?

重置 root 密码:

sudo systemctl stop mariadb
sudo mariadbd --skip-grant-tables &
sudo mariadb -u root

进入后执行:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
EXIT;

然后 sudo pkill mariadbd 杀掉进程,正常重启:sudo systemctl start mariadb

Q: MariaDB 和 MySQL 能共存吗?

能,但端口要分开。MariaDB 默认 3306,MySQL 改到 3307 即可。不过一般不建议同时装两个,容易搞混。

Q: 怎么备份数据库?

用 mysqldump:

sudo mysqldump -u root -p --all-databases > /root/db-backup-$(date +%Y%m%d).sql

压缩一下更省空间:

sudo mysqldump -u root -p --all-databases | gzip > /root/db-backup-$(date +%Y%m%d).sql.gz

后续建议

装好 MariaDB 之后,可以考虑:

  • 安装 phpMyAdmin 做图形化管理:sudo apt install -y phpmyadmin
  • 配置自动备份脚本,每天定时dump
  • 如果内存紧张,可以调整 innodb_buffer_pool_size 降低内存占用

MariaDB 比 MySQL 轻量,VPS 上跑起来很顺手。配好远程访问,连上 DBeaver 就开始折腾你的项目吧。

你的数据库准备好了吗?

这篇文章对你有帮助吗?