MariaDB 安装与初始化指南

本文介绍如何在 Debian / Ubuntu 系统上安装 MariaDB,并完成基础初始化、服务管理、连接验证与常见问题排查。目标不是“装上就算”,而是拿到一份可以直接执行、执行后能确认结果的可用文档。

适用场景

  • 本地开发环境安装 MariaDB
  • 服务器快速部署 MariaDB
  • 需要完成最小可用初始化配置的场景

安装前确认

建议先确认以下条件:

  • 你有 sudo 权限
  • 系统的软件源可用
  • 端口 3306 未被其他数据库占用

先更新软件包索引:

sudo apt update

如果你只是想快速装一个与当前 Debian 仓库兼容的 MariaDB,直接使用系统默认包即可。

安装 MariaDB

在 Debian 系统上,推荐安装默认的服务包:

sudo apt install -y default-mysql-server

说明:

  • default-mysql-server 是 Debian 的虚拟包,会指向当前发行版默认推荐的 MySQL 兼容数据库实现,通常就是 MariaDB
  • 这种安装方式最适合“跟随系统仓库、快速落地”的场景
  • 如果你需要特定版本的 MariaDB,应改用 MariaDB 官方仓库,而不是只依赖系统默认包

安装完成后,可以确认版本:

mariadb --version

启动服务并设置开机自启

安装后启动 MariaDB 服务,并设置为开机自动运行:

sudo systemctl enable mariadb
sudo systemctl start mariadb

查看状态:

sudo systemctl status mariadb

正常情况下应看到 active (running)

首次安全加固

MariaDB 官方推荐在安装后立即运行安全初始化脚本:

sudo mariadb-secure-installation

这个脚本会引导你完成基础安全设置。不同版本的默认行为会略有差异,尤其是 MariaDB 10.4 之后,root@localhost 通常默认使用 unix_socket 认证,而不一定需要手工设置密码。


建议这样处理:

  • 如果提示输入当前 root 密码,刚安装完通常可以直接回车
  • 如果系统默认使用 unix_socket 认证,不要盲目把它改成密码认证,除非你明确需要通过密码远程或自动化登录
  • 如果你确实要改成密码登录,请给 root 设置强密码,并记录到安全的凭据管理系统中
  • 匿名用户建议删除
  • 测试数据库建议删除
  • 远程 root 登录通常建议关闭

一个更稳妥的判断原则是:

  • 开发机:保留默认本地认证也可以
  • 生产机:必须明确 root 的认证方式、访问边界和审计方式

登录验证

先用本机方式登录:

sudo mariadb

如果能进入类似下面的提示符,说明本地访问正常:

MariaDB [(none)]>

退出命令:

exit;

如果你已经配置了密码,也可以用:

mariadb -u root -p

注意:

  • Debian / MariaDB 默认安装中,sudo mariadb 往往比 mariadb -u root -p 更符合实际默认认证方式
  • 如果 mariadb -u root -p 失败,不一定代表服务坏了,可能只是认证方式与预期不同

创建业务库和用户

不要把业务程序长期直接连 root。更稳妥的做法是创建专用数据库和专用用户。


进入 MariaDB 后执行:

CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

说明:

  • utf8mb4 能更完整支持 Unicode
  • appuser 只对 appdb 有权限,避免过度授权
  • 如果你的应用不需要 ALL PRIVILEGES,可以进一步收敛成 SELECT、INSERT、UPDATE、DELETE 等更小权限集

验证登录:

mariadb -u appuser -p appdb

常用服务命令

# 重启服务
sudo systemctl restart mariadb

# 停止服务
sudo systemctl stop mariadb

# 重新启动服务
sudo systemctl start mariadb

# 查看状态
sudo systemctl status mariadb

远程访问

如果你需要让其他机器连接 MariaDB,还要额外处理这几件事:

  1. 修改 MariaDB 监听地址
  2. 创建允许远程登录的用户
  3. 放行防火墙和云安全组

1. 修改监听地址

常见配置文件位置通常在:

/etc/mysql/mariadb.conf.d/50-server.cnf

将绑定地址从只监听本机改为需要的地址,例如:

bind-address = 0.0.0.0

然后重启服务:

sudo systemctl restart mariadb

2. 创建远程用户

如果允许某台主机连接,可以显式授权:

CREATE USER 'appuser'@'10.0.0.20' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'10.0.0.20';
FLUSH PRIVILEGES;

如果需要允许某个网段,建议结合实际安全策略,不要直接放开到 %,除非这是临时测试环境。

3. 放行端口

确保防火墙和云安全组允许访问 3306/tcp

常见问题

1. mariadb-secure-installation 不存在

可能是以下原因:

  • MariaDB 客户端工具包没有完整安装
  • 你安装的是旧版本,脚本名可能是 mysql_secure_installation

可以尝试:

sudo mysql_secure_installation

2. sudo mariadb 可以登录,但 mariadb -u root -p 不行

这通常说明 root 使用了本地 socket 认证,而不是密码认证。这不是服务故障,而是认证机制不同。

3. 服务启动失败

先看状态:

sudo systemctl status mariadb

再看日志:

sudo journalctl -u mariadb -xe

常见原因:

  • 配置文件语法错误
  • 端口被其他数据库占用
  • 数据目录权限不正确

4. 无法远程连接

按顺序检查:

  • bind-address 是否仍然只绑定在 127.0.0.1
  • 用户是否允许从远程主机登录
  • 防火墙和安全组是否放行 3306
  • 应用侧连接串是否写错

最小可用安装流程

如果你只想快速执行一遍,按这个顺序就够了:

sudo apt update
sudo apt install -y default-mysql-server
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo mariadb-secure-installation
sudo mariadb

总结

在 Debian / Ubuntu 上,最稳妥的基础方案是:

  • 直接安装 default-mysql-server
  • 启动并验证 mariadb 服务
  • 立即执行 mariadb-secure-installation
  • 业务库单独建库、单独建用户
  • 远程访问按需开放,不默认全放开
本文地址: https://www.vvcms.cn/blog/mariadb-install
版权所有 © admin 未经授权不得转载