第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. 具备生产环境数据库部署与基础维护能力
相关推荐
逸模10 小时前
告别熬夜手工整理台账,逸模智能归集实现项目数据自动化存档
大数据·运维·人工智能·笔记·其他·信息可视化·自动化
sbjdhjd10 小时前
Redis 主从复制、哨兵高可用与 Cluster 集群部署实验手册
运维·前端·redis·云原生·开源·bootstrap·html
人间乄惊鸿客10 小时前
Linux所遇问题自记录
linux
Frostnova丶10 小时前
【算法笔记】数学知识
笔记·算法
xqqxqxxq10 小时前
哈希表(HashMap)技术学习笔记
笔记·学习·散列表
生而为虫10 小时前
[学习记录] 幼儿学习拼音html游戏
学习·游戏
AOwhisky10 小时前
MySQL 学习笔记(第四期):SQL 语言之多表查询
linux·运维·网络·数据库·笔记·学习·mysql
Phantom Void11 小时前
服务器处理客户端请求的设计方法
linux·运维·网络
小红卒11 小时前
mysql之udf提权
数据库·mysql·网络安全
司悠11 小时前
【解决在vscode里开服务器登录codeX后发消息会一直reconnecting】
服务器·ide·vscode