MariaDB在Debian系统中的安装与配置全流程指南

一 安装与启动
- 先更新软件包索引,再安装 MariaDB 服务器软件:
- sudo apt update
- sudo apt install mariadb-server
- 安装完成后,MariaDB 服务通常会自动启动,可通过以下命令检查运行状态:
- sudo systemctl status mariadb
- 在 Debian 12 官方软件仓库中,默认提供的版本通常为 MariaDB 10.11.x;而在其他 Debian 版本中,例如 Debian 10,仓库内的 MariaDB 版本可能有所不同,但整体安装步骤与服务启动方式基本一致。
二 安全初始化
- 执行 MariaDB 安全初始化向导,并根据提示完成基础安全配置:
- sudo mysql_secure_installation
- 通常建议选择:设置 root 密码、删除匿名用户、禁止 root 远程登录、移除测试数据库,以及重载权限表。
- 默认认证方式说明:
- 在 Debian 系统中,root 用户默认使用 unix_socket 认证插件,这意味着只有以系统 root 身份或通过 sudo 执行 mysql 客户端时才能登录数据库。这种方式安全性较高,一般建议保留默认设置。
- 如果需要在应用程序或 phpMyAdmin 中使用密码方式以 root 身份登录 MariaDB,可以切换为传统密码认证方式:
- mysql -u root -p
- ALTER USER ‘root’@‘localhost’ IDENTIFIED VIA mysql_native_password;
- ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘你的强密码’;
- 完成后即可通过 mysql -u root -p 使用密码登录。
三 基本配置与目录
- 配置文件结构:
- MariaDB 的主配置文件为 /etc/mysql/my.cnf,并通过 !includedir 引入 /etc/mysql/conf.d/ 与 /etc/mysql/mariadb.conf.d/ 目录下的 *.cnf 配置片段(例如 Debian 10 和 Debian 12 中常见的 50-server.cnf 等)。为了便于后续维护与升级,建议将自定义配置写入 conf.d 目录,而不是直接修改系统自带配置文件。
- 常用配置项与路径示例:
- 监听地址:可在 [mysqld] 段中设置 bind-address,例如仅监听本机地址 127.0.0.1,或设置为 0.0.0.0 以支持远程连接;生产环境中应同时结合防火墙和访问控制策略使用。
- 数据目录:datadir 通常位于 /var/lib/mysql(可通过 SHOW VARIABLES LIKE ‘%datadir%’; 命令进行查看)。
- 常见参数位置:如端口、socket、日志、缓存等设置,通常都可以在 [mysqld] 段中根据实际业务需求进行调整。
四 远程访问与防火墙
- 修改服务端监听设置(仅在需要远程连接 MariaDB 时操作):
- 编辑 /etc/mysql/mariadb.conf.d/50-server.cnf(或当前 Debian 版本对应的配置文件),将 bind-address 修改为:
- bind-address = 0.0.0.0(表示允许所有地址访问;如果只需内网访问,也可以改为指定内网网段)
- 修改完成后重启服务:sudo systemctl restart mariadb
- 编辑 /etc/mysql/mariadb.conf.d/50-server.cnf(或当前 Debian 版本对应的配置文件),将 bind-address 修改为:
- 创建远程管理用户(示例):
- mysql -u root -p
- CREATE USER ‘admin’@‘%’ IDENTIFIED BY ‘强密码’;
- GRANT ALL PRIVILEGES ON . TO ‘admin’@‘%’ WITH GRANT OPTION;
- FLUSH PRIVILEGES;
- 防火墙放行设置(以 UFW 为例):
- sudo ufw allow 3306/tcp
- 注意:将 3306 端口直接暴露到公网会带来较高安全风险,建议仅在内网环境使用,或结合 TLS/SSL、强密码策略、限制来源 IP 等安全措施一同部署。
五、业务库与用户的创建以及验证
- 先登录 MariaDB 数据库:mysql -u root -p
- 创建业务数据库、专用账户并完成授权(遵循最小权限原则):
- CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- CREATE USER ‘appuser’@‘localhost’ IDENTIFIED BY ‘强密码’;
- GRANT ALL PRIVILEGES ON appdb.* TO ‘appuser’@‘localhost’;
- FLUSH PRIVILEGES;
- 基础连通性测试(命令行方式):
- mysql -u appuser -p -h 127.0.0.1 appdb
- 在 LAMP/LNMP 环境下,还需要安装相应组件并正确配置应用连接参数,例如 PHP 的 mysqli 或 pdo、Nginx/Apache 站点配置等,确保业务程序使用专用数据库用户连接对应的业务库。
