MariaDB知识点总结
MariaDB是MySQL的分支,CentOS7默认数据库,端口3306,核心包含进程、安装加固、配置文件、库表SQL操作、用户权限、密码故障处理、备份恢复、主从复制。
1. 双进程模型
- mysqld_safe:守护监控进程:启动、监控
mysqld,主进程崩溃自动重启;管理错误日志与启动参数。 - mysqld:数据库核心主进程:监听3306端口,处理客户端连接、SQL读写、事务、磁盘数据操作。
关系:mysqld_safe生成mysqld子进程;直接kill mysqld会被守护进程拉起;systemctl停止mariadb两个进程同时关闭。
2. 安装与安全加固
- 软件包:
mariadb‑server服务端,mariadb客户端工具。 - 启动:
systemctl enable --now mariadb;防火墙放行mysql服务。 - 加固脚本
mysql_secure_installation交互式完成:设置root密码、禁止root远程登录、删除匿名账号、删除test测试库。
3. 配置文件体系
/etc/my.cnf:主配置,优先级最高。/etc/my.cnf.d/细分配置目录server.cnf:[mysqld]/[mysqld_safe],控制数据库服务端(端口、监听地址、数据目录、引擎、日志)client.cnf、mysql‑clients.cnf:控制mysql客户端连接参数。
4. 数据库库操作SQL
| 功能 | 命令 |
|---|---|
| 查看所有库 | SHOW DATABASES; |
| 创建库 | CREATE DATABASE [IF NOT EXISTS] 库名; |
| 删除库 | DROP DATABASE [IF EXISTS] 库名; |
| 切换库 | USE 库名; |
| 查看当前库 | SELECT DATABASE(); |
5. 数据表操作SQL
- 基础:
SHOW TABLES;查看表;DESCRIBE 表名;查看表结构;CREATE TABLE建表;DROP TABLE删表。 - DML数据操作
- 查询:
SELECT,支持指定列、WHERE条件、ORDER BY排序;运算符:> < = != BETWEEN AND IN LIKE AND OR。 - 聚合函数:
COUNT、SUM、AVG、MAX、MIN,搭配GROUP BY分组统计。 - 插入:
INSERT INTO 表(列) VALUES(值) - 更新:
UPDATE 表 SET 列=值 WHERE条件,不加WHERE会更新全表。 - 删除:
DELETE FROM 表 WHERE条件,不加WHERE清空整张表数据。
- 查询:
6. 用户与权限管理
- 用户格式:
'用户名'@'登录主机';主机支持localhost、IP、网段通配符%。 - 常用命令
- 创建用户:
CREATE USER 'user'@'host' IDENTIFIED BY '密码'; - 删除用户:
DROP USER 'user'@'host'; - 授权:
GRANT 权限 ON 范围 TO 用户@主机;范围:*.*全局、库.*库级别、库.表表级别,还支持列级权限。 - 回收权限:
REVOKE 权限 ON 范围 FROM 用户@主机; - 查看权限:
SHOW GRANTS FOR 'user'@'host'; - 修改密码:
SET PASSWORD FOR 'user'@'host' = PASSWORD('新密码'); - 授权回收之后执行
FLUSH PRIVILEGES;刷新权限生效。
- 创建用户:
- 权限分类:全局权限、数据库权限、数据表权限、列粒度权限;遵循最小权限原则。
7. 故障处理
① root密码忘记
- 修改
/etc/my.cnf.d/server.cnf的[mysqld]段添加skip‑grant‑tables=1,跳过权限校验。 - 重启mariadb,无密码登录修改mysql.user表root密码。
- 注释掉skip‑grant‑tables,再次重启数据库恢复权限校验。
② root权限被误回收 / root账号被误删除
同样借助skip‑grant‑tables跳过权限,修改mysql.user系统表,恢复权限或者重建root账号,之后注释参数重启服务。
8. 备份与恢复
物理备份(直接拷贝数据目录)
- 备份:停止mariadb,拷贝
/var/lib/mysql目录。 - 恢复:拷贝回原路径,必须修改属主为mysql:mysql,启动服务。
逻辑备份(mysqldump,SQL语句导出)
- 备份
#单库(不包含建库语句)mysqldump-uroot-p库名>xxx.sql#带建库语句mysqldump-uroot-p--databases库名>xxx.sql#全部库mysqldump-uroot-p--all‑databases>all.sql- 恢复两种方式
mysql-uroot-p<xxx.sql#进入数据库内部执行sourcexxx.sql9. MariaDB主从异步复制
异步复制:主库执行写操作立刻返回客户端,不需要等待从库同步完成。
- 工作流程
- Master主库:写数据,变更记录到binlog二进制日志。
- Slave从库:IO线程拉取主库binlog,写入本地relay‑log中继日志;SQL线程回放中继日志SQL,实现数据同步。
- 配置要点
- server‑id全局唯一:主库一般1,从库2,不能重复;开启
log_bin二进制日志;binlog格式推荐ROW行级复制。 - 主库:创建专门复制账号
repl,授予REPLICATION SLAVE、REPLICATION CLIENT权限;show master status\G拿到binlog文件名和position偏移量。 - 从库:
change master to填写主库IP、复制账号密码、binlog文件、position;执行start slave启动同步。 - 校验:
show slave status\G,Slave_IO_Running:Yes、Slave_SQL_Running:Yes代表同步正常。
- server‑id全局唯一:主库一般1,从库2,不能重复;开启
易错提示:
- SQL语句末尾必须带
;,漏分号进入->多行等待提示符,输入\c放弃当前SQL;\q才是退出客户端。- UPDATE、DELETE一定要写WHERE条件,否则全表数据遭殃。
- 主从复制
server‑id不能重复,binlog的File和Position必须和主库保持一致。- mysqldump逻辑备份账号至少需要select权限,视图需要show view权限