第2章:进阶Linux系统——第8节:配置与管理MariaDB服务器

目录

一、项目引入

二、需求分析

三、知识准备

(一)数据库基础概念

[(二)MariaDB 核心知识](#(二)MariaDB 核心知识)

[(三)LAMP 架构](#(三)LAMP 架构)

四、项目实施(完整操作步骤)

[步骤 1:环境准备](#步骤 1:环境准备)

[步骤 2:安装 MariaDB](#步骤 2:安装 MariaDB)

[步骤 3:服务管理(启动 / 停止 / 开机自启)](#步骤 3:服务管理(启动 / 停止 / 开机自启))

[步骤 4:初始化 MariaDB](#步骤 4:初始化 MariaDB)

[步骤 5:安全设置(必做)](#步骤 5:安全设置(必做))

[步骤 6:MariaDB 基础操作](#步骤 6:MariaDB 基础操作)

[1. mysqladmin 工具使用](#1. mysqladmin 工具使用)

[2. 数据库命令](#2. 数据库命令)

[3. 用户与权限管理](#3. 用户与权限管理)

[4. 表操作(增删改查)](#4. 表操作(增删改查))

[5. 备份与恢复](#5. 备份与恢复)

[步骤 7:LAMP 部署 WordPress](#步骤 7:LAMP 部署 WordPress)

五、反思与进阶

[(一)PHP 页面展示数据库数据](#(一)PHP 页面展示数据库数据)

(二)图形化管理工具

六、扩展知识(重要补充)

[1. MariaDB 与 MySQL 核心区别](#1. MariaDB 与 MySQL 核心区别)

[2. 生产环境安全规范](#2. 生产环境安全规范)

[3. 常见错误与解决](#3. 常见错误与解决)

[4. 高效运维技巧](#4. 高效运维技巧)

七、项目小结




一、项目引入

随着电商网站普及,网购平台的用户注册 / 登录、商品管理、订单结算、公告发布 等核心功能,均依赖数据库实现。在 Linux 系统上部署稳定、安全、开源的数据库服务,是 Web 开发与运维的基础技能。




二、需求分析

  1. 理解数据库在 Web 服务中的核心作用
  2. 掌握 Linux 下 MariaDB 安装、配置、启动、初始化全流程
  3. 掌握 MariaDB 用户管理、权限控制、库表操作
  4. 完成LAMP 架构搭建,部署 WordPress 博客系统
  5. 实现 PHP 与 MariaDB 的交互,完成数据可视化展示



三、知识准备

(一)数据库基础概念

  1. 数据库定义 :数据的集合仓库,具备结构化存储、低冗余、多用户共享、易扩展特点。
  2. 关系型数据库:以表格形式存储数据,支持 SQL 操作,是 Web 系统主流选择。
  3. Linux 常用关系型数据库
    • MySQL:LAMP 核心组件,开源易用,被 Oracle 收购
    • MariaDB:MySQL 分支,完全兼容 MySQL,开源社区维护
    • PostgreSQL:对象关系型数据库,功能强大
    • Apache Derby:Java 编写,轻量级
    • HSQLDB:小型快速,支持 SQL 标准
    • Ingres:企业级大规模应用数据库

(二)MariaDB 核心知识

  1. 定位 :MySQL 的开源分支,由 MySQL 创始人主导开发,GPL 开源协议
  2. 核心优势
    • 完全兼容 MySQL(API、命令行、存储结构一致)
    • 存储引擎用XtraDB替代 InnoDB,性能更优
    • 开源无商业限制,更新速度快于 Oracle MySQL
    • 主流开源软件(WordPress/Drupal/phpMyAdmin)均支持
  3. 诞生背景:Oracle 收购 Sun 后,MySQL 开源前景存疑,社区推出 MariaDB 作为替代方案。

(三)LAMP 架构

  • L:Linux(操作系统)
  • A:Apache(Web 服务器)
  • M:MariaDB/MySQL(数据库)
  • P:PHP/Perl/Python(后端语言)
  • 作用:搭建动态网站的经典开源组合,稳定、免费、通用。



四、项目实施(完整操作步骤)

步骤 1:环境准备

配置 IP 地址(示例:172.16.43.254)

复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens33
ifconfig ens33

关闭防火墙并禁止开机自启

复制代码
systemctl stop firewalld
systemctl disable firewalld

关闭 SELinux(临时 + 永久)

复制代码
setenforce 0
getenforce  # 查看状态:Permissive
vi /etc/selinux/config  # 修改SELINUX=permissive

步骤 2:安装 MariaDB

检查是否已安装

复制代码
rpm -q mariadb

一键安装所有相关包

复制代码
yum install -y mariadb*

验证安装结果

复制代码
rpm -qa | grep mariadb

步骤 3:服务管理(启动 / 停止 / 开机自启)

复制代码
# 启动
systemctl start mariadb
# 停止
systemctl stop mariadb
# 重启
systemctl restart mariadb
# 查看状态
systemctl status mariadb
# 设置开机自启
systemctl enable mariadb
# 禁止开机自启
systemctl disable mariadb

步骤 4:初始化 MariaDB

初始化数据库文件

复制代码
mysql_install_db

查看数据目录(默认:/var/lib/mysql)

复制代码
cd /var/lib/mysql
ls
ll /var/lib/ | grep mysql  # 确认属主属组为mysql

配置主配置文件 my.cnf

复制代码
# 从模板复制配置文件
cp /usr/share/mysql/my-small.cnf /etc/my.cnf
# 编辑配置
vi /etc/my.cnf
  • 模板说明:my-small(小内存)、my-medium(中等)、my-large(大内存)、my-huge(超大内存)

步骤 5:安全设置(必做)

初始无密码登录

复制代码
mysql -uroot
exit  # 退出

安全初始化脚本(设置 root 密码、删除匿名用户、禁止远程 root、删除 test 库)

复制代码
mysql_secure_installation

密码登录(-p 与密码无空格

复制代码
mysql -uroot -p000000

步骤 6:MariaDB 基础操作

1. mysqladmin 工具使用
复制代码
# 修改密码
mysqladmin -uroot -p旧密码 password 新密码
# 创建数据库
mysqladmin -uroot -p密码 create 库名
2. 数据库命令
复制代码
-- 查看所有库
show databases;
-- 创建库
create database student;
-- 使用库
use student;
-- 查看库中表
show tables;
-- 删除库
drop database student;
3. 用户与权限管理
复制代码
-- 创建本地用户
create user 'kk'@'localhost' identified by '654321';
-- 授予本地库所有权限
grant all privileges on student.* to kk@'localhost';
-- 授予远程所有权限
grant all privileges on *.* to root@'%' identified by '密码';
-- 授予部分权限(查/增/改/删)
grant select,insert,update,delete on *.* to test1@'%' identified by 'abc';
-- 刷新权限
flush privileges;
-- 查看权限
show grants for 'kk'@'localhost';
-- 查看所有用户
select user,host from mysql.user;
  • 权限说明:% 表示任意 IP 可登录;localhost 仅本地登录
4. 表操作(增删改查)
复制代码
-- 创建表
create table info(
    xm char(8),    -- 姓名
    no char(8),    -- 学号
    cj int(10),    -- 成绩
    addr text      -- 地址
);

-- 查看表结构
describe info;

-- 插入数据
insert into info values("zhangsan","20170102",98,"hangzhou");

-- 查询数据
select * from info;

-- 修改数据
update info set no=20180105 where xm="lisi";

-- 删除数据
delete from info where xm="lisi";

-- 删除表
drop table info;
5. 备份与恢复
复制代码
# 备份(导出)
mysqldump 库名 -u root -p密码 > 路径/文件名.sql

# 恢复(导入)
mysql 库名 -u root -p密码 < 路径/文件名.sql

步骤 7:LAMP 部署 WordPress

安装 Apache

复制代码
yum install -y httpd

安装 PHP

复制代码
yum install -y php*

测试 PHP 页面

复制代码
cd /var/www/html
vi index.php
<?php phpinfo(); ?>
systemctl start httpd

测试 PHP 连接 MariaDB

复制代码
vi mysql.php
<?php
$conn=mysql_connect('127.0.0.1','root','密码');
if($conn) echo "Connected";
else echo "Fail";
?>

创建 WordPress 数据库

复制代码
create database wordpress;
grant all privileges on *.* to root@'%' identified by '密码';

部署 WordPress

复制代码
unzip wordpress.zip
cd wordpress
cp wp-config-sample.php wp-config.php
vi wp-config.php  # 配置数据库信息

浏览器访问安装

复制代码
http://172.16.43.254/wordpress



五、反思与进阶

(一)PHP 页面展示数据库数据

复制代码
<?php
// 连接数据库
$con1=mysql_connect("localhost","root","111111");
// 选择库
mysql_select_db("student",$con1);
// 查询数据
$r1=mysql_query("select * from info");
// 表格输出
echo "<table align=center width=600 border=1>";
while($a=mysql_fetch_array($r1)){
    echo "<tr>";
    echo "<td>".$a["xm"]."</td>";
    echo "<td>".$a["no"]."</td>";
    echo "<td>".$a["cj"]."</td>";
    echo "<td>".$a["addr"]."</td>";
    echo "</tr>";
}
echo "</table>";
?>

(二)图形化管理工具

  • phpMyAdmin:Web 界面管理 MariaDB,直观易用,适合新手。
  • 部署方式:安装 phpMyAdmin 包,配置 Apache 访问即可。



六、扩展知识(重要补充)

1. MariaDB 与 MySQL 核心区别

对比项 MariaDB MySQL
维护方 开源社区 Oracle
授权 完全开源 部分功能商业版
存储引擎 XtraDB(性能更强) InnoDB
兼容性 100% 兼容 MySQL 原生
更新速度 更快 较慢

2. 生产环境安全规范

  1. 禁止 root 用户远程登录
  2. 给所有数据库用户设置强密码
  3. 最小权限原则:仅授予必要权限
  4. 定期备份数据库
  5. 开启日志审计

3. 常见错误与解决

  • 登录失败:检查密码、SELinux、防火墙
  • 无法远程连接:授权@'%'、配置 bind-address=0.0.0.0
  • 启动失败:检查 /var/lib/mysql 权限、配置文件语法

4. 高效运维技巧

  1. 自定义 my.cnf 优化内存、连接数、缓存
  2. 使用 systemd 统一管理服务
  3. 定时任务自动备份数据库
  4. 使用主从复制实现高可用



七、项目小结

  1. 掌握 MariaDB安装→配置→初始化→安全设置→库表操作全流程
  2. 理解 LAMP 架构原理,能独立部署动态网站
  3. 掌握用户权限、远程连接、备份恢复等运维核心技能
  4. 实现 PHP 与 MariaDB 交互,完成数据 Web 展示
  5. 具备生产环境数据库部署与基础维护能力
相关推荐
wqww_12 小时前
Linux查看磁盘IO问题
linux·运维·服务器
自小吃多2 小时前
电气安全检测说明书
笔记·安全
水蓝烟雨2 小时前
LeetCode刷题笔记:合并两个有序链表(0021)
笔记·leetcode·链表
AKA__Zas2 小时前
初识SQL(1.0 PLUS)
数据库·sql·学习方法
卢傢蕊2 小时前
PostgreSQL 日常维护
数据库·postgresql·oracle
芯智工坊2 小时前
第10章 Mosquitto桥接模式
网络·数据库·人工智能·mqtt·开源·桥接模式
零陵上将军_xdr2 小时前
MySQL体系架构
数据库·mysql·架构
AI_零食2 小时前
开源鸿蒙跨平台Flutter开发:极简暗黑风与五行雷达测绘架构
学习·flutter·游戏·华为·开源·交互·harmonyos