Ubuntu 24.04 MariaDB 完整安装与配置文档
Ubuntu 24.04 MariaDB 完整安装与配置文档
本文整合了 MariaDB 的安装、安全配置、本地使用及远程访问(含 root 远程授权)全流程,步骤连贯且兼顾安全性,适合新手快速上手与进阶用户参考。
一、前提准备:更新系统包
安装前先更新软件包列表,确保依赖兼容且最新:
sudo apt update && sudo apt upgrade -y
二、安装 MariaDB
Ubuntu 24.04 官方源内置 MariaDB 10.11(LTS 稳定版),无需额外添加仓库,直接通过 apt 安装:
sudo apt install -y mariadb-server mariadb-client libmariadb3 libmariadb-dev
mariadb-server:服务器核心包(必装,提供数据库运行环境)mariadb-client:命令行客户端(用于连接操作数据库,显式指定更稳妥)
三、服务管理:启动与开机自启
安装后服务默认自动启动,如需手动操作或确认状态:
# 启动服务(未自动启动时使用)
sudo systemctl start mariadb# 设置开机自启(默认已启用,执行可确认)
sudo systemctl enable mariadb# 查看服务状态(验证是否正常运行)
sudo systemctl status mariadb
- 正常运行时,输出会显示
active (running),无报错信息。
四、安全初始化配置(关键步骤)
默认安装存在空密码、匿名用户等安全隐患,需通过官方脚本优化:
sudo mysql_secure_installation
执行后按以下推荐配置完成交互提问:
| 提问内容 | 推荐操作 | 说明 |
|---|---|---|
| Enter current password for root (enter for none) | 直接回车 | 初始状态 root 无密码 |
| Switch to unix_socket authentication? (Y/n) | Y | 本地登录无需密码,更安全 |
| Set root password? (Y/n) | Y | 需远程登录则设置强密码(如 MariaDB@2024) |
| New password: / Re-enter new password: | 输入并重复密码 | 密码需含大小写、数字、特殊字符 |
| Remove anonymous users? (Y/n) | Y | 禁止无账号登录 |
| Disallow root login remotely? (Y/n) | Y | 默认禁止 root 远程(后续需开启可单独配置) |
| Remove test database and access to it? (Y/n) | Y | 删除无用测试数据库,降低风险 |
| Reload privilege tables now? (Y/n) | Y | 立即重载权限表,使配置生效 |
五、本地登录与安装验证
1. 本地登录方式
- 启用
unix_socket认证(推荐):无需密码,直接执行sudo mysql -u root - 禁用
unix_socket认证:需输入密码登录mysql -u root -p
2. 验证 MariaDB 版本
登录后执行以下命令,确认安装版本(默认10.11.x):
SELECT VERSION();
输出示例:10.11.13-MariaDB-0ubuntu0.24.04.1
六、基本操作(常用 SQL 命令)
登录后执行以下命令(结尾需加 ;):
| 操作需求 | 命令 |
|---|---|
| 查看所有数据库 | SHOW DATABASES; |
| 创建新数据库 | CREATE DATABASE mydb;(mydb 为自定义数据库名) |
| 切换使用数据库 | USE mydb; |
| 创建数据表 | CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50)); |
| 插入数据 | INSERT INTO users (name) VALUES ('Alice'), ('Bob'); |
| 查询数据 | SELECT * FROM users; |
| 退出数据库 | EXIT; 或 quit; |
七、远程访问配置(含 root 远程授权)
如需从其他机器连接 MariaDB,按以下步骤配置(优先推荐专用用户,root 远程仅用于测试/受控环境):
1. 方案一:创建专用远程用户(推荐,更安全)
-- 登录本地 MariaDB
sudo mysql -u root-- 创建用户(username 为用户名,password 为强密码,% 允许所有 IP 访问)
CREATE USER 'username'@'%' IDENTIFIED BY 'password';-- 授权访问指定数据库(如 mydb,或用 *.* 授权所有数据库)
GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%' WITH GRANT OPTION;-- 刷新权限
FLUSH PRIVILEGES;
2. 方案二:授权 root 远程登录(不推荐生产环境)
保留本地 'root'@'localhost' 安全登录,额外添加远程 root 用户:
-- 登录本地 MariaDB
sudo mysql -u root-- 查看现有 root 用户
SELECT Host, User, plugin FROM mysql.user WHERE User = 'root';-- 创建远程 root 用户(设置强密码)
CREATE USER 'root'@'%' IDENTIFIED BY 'lihaozhe';-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;-- 刷新权限
FLUSH PRIVILEGES;-- 确认用户创建成功
SELECT Host, User FROM mysql.user WHERE User = 'root';
3. 配置 MariaDB 监听所有接口
编辑配置文件,允许外部 IP 连接:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
找到 [mysqld] 段,修改 bind-address:
[mysqld]
# 允许所有 IPv4 地址访问(IPv6 可设为 ::)
bind-address = 0.0.0.0
保存后重启服务:
sudo systemctl restart mariadb
八、防火墙配置(允许远程访问)
根据系统防火墙工具,开放 MariaDB 默认端口 3306:
# 若使用 UFW(Ubuntu 默认)
sudo ufw allow 3306/tcp
sudo ufw status # 验证规则生效# 若使用 firewalld(CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
远程连接验证
从另一台机器执行以下命令,测试连接:
mysql -h 服务器IP -u 用户名(root/专用用户名) -p
九、常见问题解决
1. 本地登录提示密码错误
# 停止 MariaDB 服务
sudo systemctl stop mariadb# 跳过权限验证启动
sudo mysqld_safe --skip-grant-tables &# 无密码登录
mysql -u root# 重置 root 密码并启用 unix_socket 认证
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码'), plugin='unix_socket' WHERE User='root';
FLUSH PRIVILEGES;
EXIT;# 重启服务
sudo systemctl restart mariadb
2. 远程连接失败
- 确认
bind-address已改为0.0.0.0并重启服务; - 确认远程用户已创建并授权,且密码正确;
- 确认防火墙已开放
3306端口; - 检查服务器安全组(云服务器需额外开放 3306 端口)。
十、卸载 MariaDB(如需)
彻底卸载 MariaDB 及配置、数据:
# 停止服务
sudo systemctl stop mariadb# 卸载软件包
sudo apt purge -y mariadb-server mariadb-client# 删除配置文件和数据目录
sudo rm -rf /etc/mysql/ /var/lib/mysql/# 清理依赖
sudo apt autoremove -y && sudo apt autoclean
十一、安全建议
- 生产环境禁用
'root'@'%',使用最小权限的专用远程用户; - 限制远程用户的来源 IP(如
'user'@'192.168.1.%'),而非%; - 使用强密码,建议启用 SSL 加密连接;
- 避免直接暴露 3306 端口,可通过 SSH 隧道连接。
如需更复杂配置(主从复制、性能优化),可参考 MariaDB 官方文档。
