本文介绍如何在 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,还要额外处理这几件事:
- 修改 MariaDB 监听地址
- 创建允许远程登录的用户
- 放行防火墙和云安全组
1. 修改监听地址
常见配置文件位置通常在:
/etc/mysql/mariadb.conf.d/50-server.cnf将绑定地址从只监听本机改为需要的地址,例如:
bind-address = 0.0.0.0然后重启服务:
sudo systemctl restart mariadb2. 创建远程用户
如果允许某台主机连接,可以显式授权:
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_installation2. 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
- 业务库单独建库、单独建用户
- 远程访问按需开放,不默认全放开