Ubuntu 24.04 MariaDB 完整安装与配置文档

Ubuntu 24.04 MariaDB 完整安装与配置文档

本文整合了 MariaDB 的安装、安全配置、本地使用及远程访问(含 root 远程授权)全流程,步骤连贯且兼顾安全性,适合新手快速上手与进阶用户参考。

一、前提准备:更新系统包

安装前先更新软件包列表,确保依赖兼容且最新:

bash 复制代码
sudo apt update && sudo apt upgrade -y

二、安装 MariaDB

Ubuntu 24.04 官方源内置 MariaDB 10.11(LTS 稳定版),无需额外添加仓库,直接通过 apt 安装:

bash 复制代码
sudo apt install -y mariadb-server mariadb-client libmariadb3 libmariadb-dev
  • mariadb-server:服务器核心包(必装,提供数据库运行环境)
  • mariadb-client:命令行客户端(用于连接操作数据库,显式指定更稳妥)

三、服务管理:启动与开机自启

安装后服务默认自动启动,如需手动操作或确认状态:

bash 复制代码
# 启动服务(未自动启动时使用)
sudo systemctl start mariadb

# 设置开机自启(默认已启用,执行可确认)
sudo systemctl enable mariadb

# 查看服务状态(验证是否正常运行)
sudo systemctl status mariadb
  • 正常运行时,输出会显示 active (running),无报错信息。

四、安全初始化配置(关键步骤)

默认安装存在空密码、匿名用户等安全隐患,需通过官方脚本优化:

bash 复制代码
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 认证(推荐):无需密码,直接执行

    bash 复制代码
    sudo mysql -u root
  • 禁用 unix_socket 认证:需输入密码登录

    bash 复制代码
    mysql -u root -p

2. 验证 MariaDB 版本

登录后执行以下命令,确认安装版本(默认10.11.x):

sql 复制代码
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. 方案一:创建专用远程用户(推荐,更安全)

sql 复制代码
-- 登录本地 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 用户:

sql 复制代码
-- 登录本地 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 连接:

bash 复制代码
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

找到 [mysqld] 段,修改 bind-address

ini 复制代码
[mysqld]
# 允许所有 IPv4 地址访问(IPv6 可设为 ::)
bind-address = 0.0.0.0

保存后重启服务:

bash 复制代码
sudo systemctl restart mariadb

八、防火墙配置(允许远程访问)

根据系统防火墙工具,开放 MariaDB 默认端口 3306

bash 复制代码
# 若使用 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

远程连接验证

从另一台机器执行以下命令,测试连接:

bash 复制代码
mysql -h 服务器IP -u 用户名(root/专用用户名) -p

九、常见问题解决

1. 本地登录提示密码错误

bash 复制代码
# 停止 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. 远程连接失败

  1. 确认 bind-address 已改为 0.0.0.0 并重启服务;
  2. 确认远程用户已创建并授权,且密码正确;
  3. 确认防火墙已开放 3306 端口;
  4. 检查服务器安全组(云服务器需额外开放 3306 端口)。

十、卸载 MariaDB(如需)

彻底卸载 MariaDB 及配置、数据:

bash 复制代码
# 停止服务
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

十一、安全建议

  1. 生产环境禁用 'root'@'%',使用最小权限的专用远程用户;
  2. 限制远程用户的来源 IP(如 'user'@'192.168.1.%'),而非 %
  3. 使用强密码,建议启用 SSL 加密连接;
  4. 避免直接暴露 3306 端口,可通过 SSH 隧道连接。

如需更复杂配置(主从复制、性能优化),可参考 MariaDB 官方文档

相关推荐
人间打气筒(Ada)3 小时前
zerotier内网穿透部署(rockylinux部署本地服务器)超详细~~~
linux·内网穿透·内网·公网·zerotier·穿透
剑动山河3 小时前
ubuntu 升级mysql由mysql5.7.42 升级到8.4.0
mysql·ubuntu·adb
Elias不吃糖4 小时前
Git常用指令合集
linux·git
_OP_CHEN4 小时前
Linux网络编程:(七)Vim 编辑器完全指南:从入门到精通的全方位实战教程
linux·运维·服务器·编辑器·vim·linux生态·linux软件
Maple_land4 小时前
第1篇:Linux工具复盘上篇:yum与vim
linux·运维·服务器·c++·centos
shizhan_cloud4 小时前
Linux 硬盘分区管理
linux·运维
蓁蓁啊5 小时前
Ubuntu 虚拟机文件传输到 Windows的一种好玩的办法
linux·运维·windows·单片机·ubuntu
9ilk6 小时前
【仿RabbitMQ的发布订阅式消息队列】 ---- 功能测试联调
linux·服务器·c++·分布式·学习·rabbitmq
q***7486 小时前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络