首页/新闻资讯/正文详情

CentOS 7部署GreatSQL 8.0.32:数据库原理实验全链路

发布时间:2026/11/15 6:31:20 来源:云帆数科 栏目:资讯中心
CentOS 7部署GreatSQL 8.0.32:数据库原理实验全链路
简介这份《数据库原理实验报告》面向郑州大学计算机与人工智能学院《数据库系统原理》课程学习者也适合需要了解 DBMS 安装配置与 GreatSQL 实践流程的初学者。内容围绕实验一“认识 DBMS 系统”展开涵盖虚拟机与 CentOS 环境准备、关闭 SELinux 和防火墙的原因、依赖包安装、GreatSQL 二进制包部署及服务启动并延伸至基本表、视图、触发器、存储过程等逻辑组件的认识同时强调实验截图、图表编号与结果分析等报告规范。压缩包内为 1 个 docx 文件大小约 3.69MB便于直接查阅和整理。已有 509 人学习可作为课程实验参考、报告撰写模板与操作排错思路的辅助材料。1. 一份能照着跑通的数据库原理实验报告价值在哪里九成的数据库原理实验报告失败原因都相同截图齐全、SQL 能抄换一台机器就装不起来。这份资源的价值在于它保留了一条完整链路CentOS 7 上部署 GreatSQL 8.0.32 二进制包、注册成 systemd 服务、用 information_schema 把基本表/视图/触发器/存储过程/约束这五类逻辑组件逐个查出来、再建库建表建索引、最后跑交互式 SQL 的查询与更新。它原本来自某高校计算机学院的《数据库系统原理》课程九个实验串起来正好是一条从 DBMS 认知到 SQL 实战的路径。适合三类人要交课程实验的、想在本地搭一套 MySQL 8.0 兼容环境练手的、以及需要一份 Rocky/CentOS 二进制部署清单的运维新人。2. 虚拟机里的底座SELinux、防火墙和依赖包为什么先处理环境准备这一步最容易被跳过也最容易在半小时后以一层看不懂的报错还回来。数据库装不上八成不是安装包的问题而是 SELinux 拦了文件访问、firewalld 挡了 3306、或者某个 .so 动态库压根没装。2.1 先想清楚这三样到底挡住了什么SELinux 是强制访问控制它不看文件权限位看的是进程域和文件标签的匹配关系。mysqld 运行在mysqld_t域里默认策略只允许它写标了mysqld_db_t的路径。而二进制安装最常见的问题是 datadir 放在了/usr/local或者自建的/data/mysql这些路径的标签是usr_t或default_tmysqld 一写就被拒/var/log/audit/audit.log里留下一串avc: denied。症状很迷惑目录权限是 777mysql 用户手动 touch 能成mysqld 就是起不来。firewalld 挡的是网络层。3306 没放行本机 socket 连接一切正常远端客户端就是Cant connect to MySQL server。虚拟机上如果只做本地实验关掉最省事一旦要让宿主机或者同网段的其他虚拟机连进来就得放行端口。依赖包挡的是运行期。GreatSQL 的 mysqld 依赖 libaio 做异步 IO、依赖 numactl 做 NUMA 绑核、依赖 jemalloc 替换 glibc 的 malloc。缺一个--initialize阶段就直接退出报错形如error while loading shared libraries: libaio.so.1。这类错误信息很直白但第一次见的人容易怀疑是安装包损坏。需要说清的边界是生产环境不该直接关 SELinux。标准做法是给 datadir 打上mysqld_db_t标签再restorecon端口用semanage port -a -t mysqld_port_t -p tcp 3306单独放行。防火墙同理firewall-cmd --permanent --add-port3306/tcp才是正道。实验环境关掉只是图快别把这个习惯带出去。2.2 四条命令的正确写法和验证方式# 1) 临时把 SELinux 切到宽容模式仅当前运行期生效 setenforce 0 # 2) 改配置文件让重启后仍然是 disabled # 注意 c 后面是反斜杠 空格且正则只匹配行首的 SELINUX sed -i /^SELINUX/c\SELINUXdisabled /etc/selinux/config # 3) 取消 firewalld 开机自启 systemctl disable firewalld # 4) 立即停止 firewalld systemctl stop firewalld # 验证三件事缺一不可 getenforce # 期望输出 Permissive grep ^SELINUX /etc/selinux/config # 期望输出 SELINUXdisabled systemctl is-enabled firewalld # 期望输出 disabledsetenforce 0中间是空格不是等号。原报告里写成setenforce0shell 会回一句command not found而人往往扫一眼就过了结果 SELinux 一直是 Enforcing后面初始化数据库卡住排查方向全跑偏。这是整份报告里最容易翻车的第一处我见过不止一个人在这里耗掉整个下午。sed那行的正则是/^SELINUX/只匹配行首恰好是SELINUX的行。如果图省事写成/^SELINUX/会把配置文件里的SELINUXTYPEtargeted也一起替换成SELINUXdisabledSELinux 的策略类型直接丢了机器重启后可能出现更奇怪的行为。提示getenforce和配置文件是两套状态临时模式和永久配置要分别确认只改一个就会出现这次好了重启又坏。2.3 依赖包分成哪三类把那条长 yum 命令拆开看包其实分三种角色搞清楚以后换系统版本也知道该替换什么。类别包名作用缺了会怎样运行必需libaio-devel、numactl-libsInnoDB 异步 IO、NUMA 内存分配mysqld 启动即报 so 找不到编译头文件pkg-config、openssl-devel、jemalloc-devel编译插件、链接加密库编译期才报错二进制包场景可省脚本依赖perl、perl-Data-Dumper、perl-Digest-MD5、perl-JSON、python2自带工具、测试脚本、备份脚本服务能起跑自带工具时报模块缺失yum install -y \ pkg-config perl libaio-devel numactl-devel numactl-libs net-tools \ openssl openssl-devel jemalloc jemalloc-devel \ perl-Data-Dumper perl-Digest-MD5 python2 perl-JSON perl-Test-Simplenumactl-devel和numactl-libs是两个包前者给编译用后者给运行用只装一个会遇到编译过了运行挂。net-tools提供netstat虽然现在更推荐ss但不少旧脚本还在调它。jemalloc是可选项GreatSQL 用它替换 glibc 的 malloc长连接高并发下内存碎片明显更低不装也能跑只是默认走 glibc。python2在 CentOS 7 上是系统自带包名就是python2。如果换到 Rocky 9 或者 CentOS 8 之后的版本这个包名基本不可用得改成python3并且要确认数据库自带的那些 perl/python 脚本是否兼容。这一条不是照抄能解决的属于换环境必须重新核对的项。2.4 装完怎么确认不缺件装完别急着往下走用两条命令做硬性校验比事后看 error log 猜要快得多。# 1) 确认关键包确实装上了 rpm -q libaio-devel numactl-libs openssl-devel jemalloc # 2) 直接对 mysqld 二进制做动态库解析找 not found ldd /usr/local/GreatSQL-8.0.32-25/bin/mysqld | grep not found第二条是决定性的。ldd把 mysqld 依赖的所有共享库列出来只要输出里有任何一行带not found初始化阶段就一定会失败而且报错信息指的是库名不是包名回头查很费劲。先让这条命令输出为空再谈安装。这个顺序看起来多花两分钟实际能省掉一轮完整的环境回滚。3. 从 tar.xz 到 systemd 服务GreatSQL 8.0.32 的落地步骤二进制包安装和 yum 安装最大的区别在于所有路径、所有参数、所有权限都得自己定系统不会替你猜。定错了不会立刻报错而是在某个后续操作里以完全无关的形式暴露出来。3.1 解压前的两个决定路径和属主cd /usr/local # tar 会自动识别 xz 压缩不需要再带 -J tar xf GreatSQL-8.0.32-25-Linux-glibc2.17-x86_64-minimal.tar.xz # 目录名太长建个软链后面所有配置都写短路径 ln -s /usr/local/GreatSQL-8.0.32-25 /usr/local/greatsql ls -ld /usr/local/greatsql软链这一步不是可有可无。my.cnf 里的basedir、systemd 单元里的ExecStart、客户端连接时用的路径全都要引用这个目录。直接把长目录名写死进配置将来升级到 8.0.33 就要改三四处文件漏一处就是启动失败。用软链的话升级只需要重建一条ln -sfn。属主这部分二进制的属主和数据的属主是两回事原报告把两者一起chown -R了功能上没错但风险不小。# 建一个不能登录的系统账号专门跑数据库进程 groupadd mysql useradd -g mysql mysql -d /dev/null -s /sbin/nologin # 数据目录和日志目录分开建只给这两个目录授权 mkdir -p /var/lib/mysql /var/log/greatsql chown -R mysql:mysql /var/lib/mysql chown -R mysql:mysql /var/log/greatsql chown -R mysql:mysql /usr/local/GreatSQL-8.0.32-25-d /dev/null让这个账号没有家目录-s /sbin/nologin禁止它登录 shell这是所有守护进程账号的标准做法——数据库进程被攻破时攻击者拿不到一个可交互的 shell。注意别对/var/log整体执行chown -R mysql:mysql。系统日志目录里还有 rsyslog、audit、messages 这些文件属主被改成 mysql 之后rsyslog 写日志会出现权限异常症状是系统日志停止更新排查时根本想不到是装数据库引起的。新建/var/log/greatsql子目录单独授权才是正解。3.2 my.cnf真正需要改的只有这几项# /etc/my.cnf [mysqld] # 进程身份必须和 systemd 单元里的 User 一致 user mysql # 安装根目录指向软链升级只改软链 basedir /usr/local/greatsql # 数据目录初始化前必须是空目录 datadir /var/lib/mysql # socket 和 pid 落在 datadir 下避免 /tmp 被清理后客户端连不上 socket /var/lib/mysql/mysql.sock pid-file /var/lib/mysql/mysqld.pid # 错误日志单独目录方便按服务筛日志 log-error /var/log/greatsql/error.log # 字符集显式声明避免客户端不同编码插进来变问号 character-set-server utf8mb4 collation-server utf8mb4_0900_ai_ci # 表名大小写策略0 敏感1 不敏感必须在初始化前定死 lower_case_table_names 1 # 连接数与缓冲池按虚拟机内存调整 max_connections 500 innodb_buffer_pool_size 512M innodb_page_size 16K [client] socket /var/lib/mysql/mysql.sock default-character-set utf8mb4lower_case_table_names是这一堆参数里最硬的约束。它决定表名在磁盘上怎么存、在数据字典里怎么记。初始化完成之后再去改mysqld 直接拒绝启动报Different lower_case_table_names settings for server (1) and data dictionary (0)。这时候唯一的解法是把 datadir 清空重新初始化前面灌的数据全没了。虚拟机上一般选 1方便从 Windows 迁过来的脚本不至于因为表名大小写炸掉。innodb_page_size同理建库之后不能改。默认 16K和绝大多数 SSD 的 4K 物理扇区、以及操作系统的 4K 页配合得还算合理。只有在用大页内存或者特定 NVMe 调优时才需要动它动了就得从头再来。innodb_buffer_pool_size是性能参数里收益最大的一个。4G 内存的虚拟机上给 512M 到 1G 都合理给小了查询一多就开始刷脏页iostat里能看到明显的写放大。这个参数可以运行期动态调整不像前两个那么刚性。3.3 把 mysqld 交给 systemd# /lib/systemd/system/greatsql.service [Unit] DescriptionGreatSQL Server 8.0.32 Afternetwork.target [Service] Typenotify Usermysql Groupmysql ExecStart/usr/local/greatsql/bin/mysqld --defaults-file/etc/my.cnf ExecStop/bin/kill -TERM $MAINPID Restarton-failure RestartSec5 LimitNOFILE65535 [Install] WantedBymulti-user.target# 让 systemd 重新读取单元文件然后设为开机自启 systemctl daemon-reload systemctl enable greatsqlTypenotify要求 mysqld 在编译时带上了 systemd 通知支持启动就绪后主动告诉 systemd 我好了。如果systemctl start之后一直卡在activating (start)不往下走说明这个二进制没有 notify 支持把它改成Typesimple就行服务照样能起来只是 systemd 不知道 mysqld 什么时候真正就绪After依赖它的其他服务可能起早了。ExecStop用kill -TERM让 mysqld 走正常的关库流程停止接收新连接、刷脏页、写 redo、关闭文件。别用kill -9也别用systemctl kill那种关法轻则丢最后一批事务重则重启后要做崩溃恢复实验环境耽误时间生产环境就是事故。LimitNOFILE65535必须给。systemd 默认的文件描述符上限是 1024每个连接至少占一个 fd加上表空间文件、日志文件、临时文件并发一上来就撞上限症状是Too many open files而ulimit -n在 shell 里看又是正常的因为那是登录会话的限制不是服务的。3.4 初始化、启动与三层验证# 初始化datadir 必须是空目录--initialize-insecure 表示 root 空密码 /usr/local/greatsql/bin/mysqld \ --defaults-file/etc/my.cnf \ --initialize-insecure \ --usermysql # 启动服务 systemctl start greatsql # 第一层服务状态 systemctl status greatsql --no-pager # 第二层进程是否存在 ps -ef | grep [m]ysqld # 第三层端口和 socket 是否在监听 ss -lntp | grep 3306 # 数据目录里生成了什么 ls -lh /var/lib/mysql--initialize-insecure生成一个空密码的 root 账号只适合实验和本地环境。生产用--initialize它会生成一个随机临时密码写进 error.log用grep temporary password /var/log/greatsql/error.log取出来首次登录必须改掉。三层验证的意义在于快速定位故障位置而不是靠猜。systemctl status失败说明问题在 systemd 单元本身或者 mysqld 的启动阶段直接去看/var/log/greatsql/error.logstatus 显示 active 但ps看不到进程说明Type判断有问题或者进程起来就退了ps有进程但ss看不到 3306说明 my.cnf 里的port、bind-address或者skip-networking有问题。这三层分清楚排错时间能砍掉一大半。# 用 socket 连进去首次空密码 /usr/local/greatsql/bin/mysql -uroot -S /var/lib/mysql/mysql.sock-- 首次登录立刻改密码 ALTER USER rootlocalhost IDENTIFIED BY Str0ng#Pass2024; FLUSH PRIVILEGES;3.5 用信息模式看逻辑组件用目录看物理存储DBMS 的逻辑组件不是抽象名词information_schema里每一个都有对应的表查一遍比背概念有用得多。-- 基本表当前库下所有实际存在的表 SHOW TABLES; -- 视图对应 INFORMATION_SCHEMA.VIEWS SELECT TABLE_SCHEMA, TABLE_NAME, VIEW_DEFINITION FROM information_schema.VIEWS WHERE TABLE_SCHEMA DB; -- 触发器绑定在哪个表、什么事件、什么时机触发 SELECT TRIGGER_SCHEMA, TRIGGER p a hrefhttps://download.csdn.net/download/m0_74824716/90170224 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p

相关推荐

Spring AI对话状态持久化与MySQL实现方案
Spring AI对话状态持久化与MySQL实现方案

1. 为什么需要对话状态持久化在开发基于Spring AI的对话系统时,我们经常遇到一个典型场景:用户正在进行多轮对话时,服务器突然需要重启或意外崩溃。如果使用默认的内存存储方式,所有对话上下文都会丢失,用户不得不重新… · 2026/11/3 17:36:17

Linux编译工具链:make与Makefile深度解析与实践
Linux编译工具链:make与Makefile深度解析与实践

1. Linux编译工具链基石:make与Makefile深度解析在Linux开发环境中,make工具与Makefile文件构成了项目构建的核心基础设施。这套组合拳解决了多文件编译的依赖管理问题,让开发者从繁琐的手动编译命令中解放出来。我第一次接触make是在大学实验… · 2026/11/7 12:09:13

IBM-PC汇编习题答案:三条主线与高频易错点解析
IBM-PC汇编习题答案:三条主线与高频易错点解析

简介:这份文档是沈美明、温冬婵《IBM-PC汇编语言程序设计》教材的习题参考答案,面向学习80x86汇编语言、准备课程作业与考试复习的读者,可用于核对解题过程并弥补课堂练习中的知识盲点。资源包仅含1个doc文件,整体约524KB&#xf… · 2026/11/8 21:18:32

电工证快速办理郴州值不值得考?转岗电工的血泪经验分享
电工证快速办理郴州值不值得考?转岗电工的血泪经验分享

电工证快速办理郴州值不值得考?转岗电工的血泪经验分享 你有没有过这样的经历:手里有个电工证,但干了几年,工资还是原地踏步?或者是,刚拿到证,还没来得及上岗就被要求“年审”?现在找工作动不动就问“有电工证吗”,可这证到底值不值得考?今天我就以… · 2026/11/15 6:30:37

电工证能让别人用吗?保姆级教程教你搞定复审延期
电工证能让别人用吗?保姆级教程教你搞定复审延期

电工证能让别人用吗?保姆级教程教你搞定复审延期 证书过期了不知道怎么复审延期?别急,今天就从许昌房建工程从业者的角度,给你一套保姆级的电工证复审、补办、使用全流程操作指南,全是实操干货,少绕弯路。 一、电工证能让别人用吗?真相在这儿… · 2026/11/15 6:30:37

江西樟树电工证报名怎么走?官方报名入口别踩坑
江西樟树电工证报名怎么走?官方报名入口别踩坑

江西樟树电工证报名怎么走?官方报名入口别踩坑 怕考不过白交培训费?江西樟树电工证报名正在热招,但你真的了解流程吗?别急,这篇文章从 报名 到 考试 ,再到 证书变更 ,手把手带你走一遍,不花冤枉钱,不走弯路。… · 2026/11/15 6:30:37

电工证资质查询千万别踩坑,新手报名流程全知道
电工证资质查询千万别踩坑,新手报名流程全知道

电工证资质查询千万别踩坑,新手报名流程全知道 你是不是也遇到过这种情况?手里拿着电工证,但不知道怎么查资质?或者看到网上各种报名入口,怕被中介坑,不知道该相信哪个?别急,这篇文章专门为你拆解电工证资质查询的全流程, 千万别踩坑… · 2026/11/15 6:30:37

隆尧哪里能考电工证,学历不高也能考,全国通用的电工证怎么拿?
隆尧哪里能考电工证,学历不高也能考,全国通用的电工证怎么拿?

隆尧哪里能考电工证,学历不高也能考,全国通用的电工证怎么拿? 你是不是也这样想:“我学历不高,能报电工证考试吗?”别急, 隆尧哪里能考电工证 这个问题,其实有很多人和你一样在问。而且这个证是 全国通用… · 2026/11/15 6:30:37

住建厅特种工河南报名全攻略|2026河南最新政策解读
住建厅特种工河南报名全攻略|2026河南最新政策解读

住建厅特种工河南报名全攻略|2026河南最新政策解读 不知道去哪报名怕被中介坑?河南特种工证书报考现在越来越规范,但很多一线工人还是被中介套路、信息不对称、流程复杂等问题困扰。尤其是2026年河南最新政策实施后,住建厅特种工河南的报名、考试… · 2026/11/15 6:29:37

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码