一、Rocky常用命令
|----|------------------------|-------------------------------|
| 序号 | 命令 | 描述 |
| 1 | cat /etc/rocky-release | 查看Rocky系统版本 |
| 2 | uname -r | 查看内核版本 |
| 3 | lsblk | 查看硬盘、分区、挂载点多大【不显示磁盘已用多少、剩余多少】 |
| 4 | df -h | 看容量、已用、剩余、使用率、挂载点 |
| 5 | fdisk -l | 识别物理硬盘【硬件分区层面】 |
| 6 | mkdir -p | 自动创建中间不存在的父级目录 |
| 7 | chown -R | 递归修改文件/目录的属主(所有者)以及属组 |
| 8 | vim | 文本编辑器(vi的增强版本) |
| 9 | pwd | 显示当前所在目录 |
| 10 | ls | 列出当前目录文件 |
| 11 | rm | 删除 |
| 12 | rm -rf | 递归删除 |
| 13 | cp | 复制 |
| 14 | mv | 移动/重命名 |
| 15 | cat | 查看文件内容 |
| 16 | ps aux | 查看所有进程 |
| 17 | kill PID | 杀掉进程 |
| 18 | kill -9 PID | 强制杀掉进程 |
| 19 | systemctl start 服务 | 启动服务 |
| 20 | systemctl stop 服务 | 停止服务 |
| 20 | systemctl restart 服务 | 重启服务 |
| 22 | systemctl status 服务 | 查看服务状态 |
| 23 | systemctl enable 服务 | 开启开机自启 |
| 24 | systemctl disable 服务 | 关闭开机自启 |
二、系统磁盘分区规则
2.1 安装默认自动分区(LVM)策略
Rocky9 安装界面【选择自动分区 (LVM)时】默认分配原则:
1、磁盘剩余空间小于 70G,Rocky9基本会把所有空间给根,Rocky10会以及安装器算法划分空间;
2、如果磁盘总空间大于等于 70G:根目录/最大分配70G,磁盘剩下全部剩余空间分配给rl‑home逻辑卷。
安装的时候可以将空间都给根,也可以分区。分区的好处是防止日志等程序意外将根打满导致系统崩溃。

2.2 各挂载点说明

devtmpfs:内存文件系统,提供设备节点,存放在内存,不占用硬盘
/dev/shm:共享内存,程序可以使用这块内存做高速共享;重启数据全部消失
/run:存放运行时进程 pid、socket,内存,重启清空
efivarfs:变量虚拟文件,用于 UEFI 固件,很小,不用关注磁盘使用率
rl‑root:根分区 / ;操作系统、/var、/etc默认全部在这里
/boot:约 1G,xfs,存放内核、initramfs启动镜像
/boot/efi:约 600M,EFI 系统分区
rl‑home:用户数据目录,自动分区时存放大量剩余磁盘空间
tmpfs:用户会话临时内存文件系统;user/0:root 登录会话
三、MySQL数据目录迁移至/home盘
**业务场景:**根分区空间紧张,MySQL 默认数据目录/var/lib/mysql占用大量磁盘,需要迁移至大空间的 /home 目录。
步骤1: 查看磁盘空间:df -h

****步骤2:****停止MySQL服务并检查是否有残留进程
停止服务:systemctl stop mysqld
查看进程:ps -ef |grep mysqld

****步骤3:****在/home目录下创建mysql数据目录
mkdir -p /home/mysql/data
****步骤4:****拷贝全部原有数据库文件(rsync 保留权限属性)
使用 rsync 比 cp 更适合迁移,完整保留文件权限、属主属组、selinux 标签属性,避免权限异常。
rsync -av /var/lib/mysql/ /home/mysql/data/

****步骤5:****修改目录属主属组
MySQL 进程默认运行用户是 mysql,不是 root,目录必须归属 mysql 用户,否则启动报错。
chown -R mysql:mysql /home/mysql/data
****步骤6:****SELinux 安全上下文配置(Rocky9 默认开启 SELinux)
Rocky默认开启 SELinux(强制安全防护机制,管进程能访问哪些文件),SELinux 还是会阻止 mysqld 读写 /home/mysql/data,mysql 启动直接失败(不要关闭 SELinux,修改永久策略)。
安装selinux工具:dnf install -y policycoreutils-python-utils

修改 SELinux 永久上下文规则(写进策略库,不是临时改):
semanage fcontext -a -t mysqld_db_t "/home/mysql/data(/.*)?"
应用策略,递归刷新目录
restorecon -Rv /home/mysql/data

步骤7: 修改MySQL配置文件
编辑配置文件:vim /etc/my.cnf
修改 mysqld 段
mysqld
datadir=/home/mysql/data
socket=/var/lib/mysql/mysql.sock
"socket"不要修改默认路径,它是本机 mysql 客户端和 mysql 服务之间通信的 "本地管道文件",不走 3306 端口

步骤8: 检查 systemd 服务沙箱 ProtectHome 参数
Rocky9 的 mysqld.service 存在沙箱隔离配置ProtectHome=true,开启后会屏蔽访问/home、/root目录,导致 MySQL 启动失败。
查看服务单元文件:systemctl cat mysqld
如果看到 ProtectHome=true,就执行 systemctl edit mysqld 添加关闭;【ProtectHome=true(systemd 沙箱隔离),systemd 启动 mysqld 的时候,直接隔离屏蔽掉 /home、/root、/run/user目录】
如果没有这一行,则不需要修改 service,跳过该步骤。

步骤9: 重载 systemd,启动 mysql服务
【判断】如果修改了 service 覆盖配置之后必须执行:systemctl daemonreload
启动mysql:systemctl start mysqld
查看mysql状态:systemctl status mysqld

步骤10: 启动成功后登录验证结果
mysql -uroot -p
show variables like '%datadir%';
确认 datadir 指向 /home/mysql/data 之后,先跑一会测试业务,确认数据没问题再去删除之前的随数据库。

也可进一步查看数据库列表:show databases;