Centos Stream10 安装 MySQL-9.7.2-linux-glibc2.28-x86_64.tar
发布时间:2026/11/4 6:52:24 锦皓数字建站

Centos Stream10 安装 MySQL-9.7.2-linuxVersion: MySQL-9.7.2-linux-glibc2.28-x86_64.tar.xz更新系统小白认为吧保持系统最新还是有必要的当然我是个个例。# 清理所有旧的软件包缓存和仓库元数据dnf clean all# 自动卸载系统不再需要的孤立依赖包dnf autoremove-y# 先确认当前正在运行的内核绝对不要删除这个版本uname-r# 自动清理所有旧内核仅保留当前在用版本dnf remove--oldinstallonly-y官网下载wget 方式下载建议使用sudowgethttps://dev.mysql.com/get/Downloads/MySQL-9.7/mysql-9.7.2-linux-glibc2.28-x86_64.tar.xz官网下载查看其他资料哈哈哈MySQL安装流程基础依赖库包含 libaio、numactl、wget、vimsudodnfinstall-ylibaio numactlwgetvim删除MySQL残留卸载系统自带的 MariaDB 和旧版 MySQL 残留# 查看已安装的数据库相关包sudorpm-qa|grep-iEmysql|mariadb# 批量卸载所有相关包sudodnf remove-ymariadb* mysql*# 删除残留数据目录sudorm-rf/var/lib/mysql /etc/my.cnf /var/log/mysqld.logMySQL 安装创建系统用户mysql不能在 Root用户下运行so 必须创建一个非 Root 用户### 创建用户useraddmysql### 设置密码passwdmysql 输入密码### 删除用户userdelmysql### 切换用户命令sumysql创建系统所需文件夹包括 数据文件夹、安装文件夹数据文件夹binlog、datas、logs、secure_data安装文件夹:/server/tools## create base package filemkdir-p/server/tools### create tool datas filemkdir-p/data/mysql/{binlog,datas,logs,secure_data}开放 mysql防火墙端口添加端口firewall-cmd --add-port3306/tcp--permanent刷新防火墙firewall-cd--reload查看端口firewall-cmd --list-port解压将mysql-9.7.2 解压至指定文件件## 解压tar-xvfmysql-9.7.2-linux-glibc2.28-x86_64.tar.xz-C/server/tools/## 重命名 mysql 解压缩文件decompressing filescd/server/tools/mvmysql-9.7.2-linux-glibc2.28-x86_64 mysql-9.7.2软连接ln-s/server/tools/mysql-9.7.2 /usr/local/mysql编辑mysql 配置文件vi/etc/mysql.cnf[mysqld]# 基础路径与身份 usermysqlport3306basedir/server/tools/mysql-9.7.2datadir/data/mysql/datassocket/tmp/mysql.sock pid-file/server/tools/mysql-9.7.2/mysqld.pid log-error/data/mysql/logs/error.log lc-messages-dir/server/tools/mysql-9.7.2/share# 字符集与时区 character-set-serverutf8mb4 collation-serverutf8mb4_0900_ai_ci default-time-zone08:00# skip-character-set-client-handshake1# 连接与基础限制 max_connections1000max_connect_errors100000wait_timeout28800interactive_timeout28800back_log2048max_allowed_packet64Mopen_files_limit65535# InnoDB 核心优化32G内存专属 default-storage-engineINNODBinnodb_buffer_pool_size16Ginnodb_buffer_pool_instances8# innodb_log_file_size1Ginnodb_redo_log_capacity1G# innodb_log_files_in_group2innodb_flush_log_at_trx_commit1innodb_flush_methodO_DIRECTinnodb_io_capacity4000innodb_io_capacity_max8000innodb_read_io_threads16innodb_write_io_threads16innodb_thread_concurrency0innodb_autoinc_lock_mode2innodb_adaptive_hash_indexONinnodb_lru_scan_depth4096innodb_page_cleaners16innodb_purge_threads4# 事务与隔离级别 transaction_isolationREAD-COMMITTEDinnodb_strict_modeON# Binlog 与复制配置 log-bin/data/mysql/binlog/mysql-binbinlog_formatROWbinlog_row_imageMINIMALbinlog_expire_logs_seconds604800server-id1log_bin_index/data/mysql/binlog/mysql-bin.indexsync_binlog1binlog_cache_size1Mmax_binlog_cache_size8M# 慢查询与审计 slow_query_logONslow_query_log_file/data/mysql/logs/slow.loglong_query_time2log_queries_not_using_indexesOFFmin_examined_row_limit1000log_slow_admin_statementsON# 排序与临时表优化 sort_buffer_size4Mjoin_buffer_size4Mread_buffer_size2Mread_rnd_buffer_size4Mtmp_table_size64Mmax_heap_table_size64M# 安全配置 bind-address0.0.0.0sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONlocal_infileOFFskip_name_resolveONsecure_file_priv/data/mysql/secure_data# 表空间与新特性兼容 innodb_file_per_tableON enforce-gtid-consistencyONgtid_modeON[client]socket/tmp/mysql.sock default-character-setutf8mb4port3306[mysql]default-character-setutf8mb4赋权赋权给 解压文件夹和数据文件夹## 解压文件夹路径chown-Rmysql:mysql /server## 数据文件夹路径chown-Rmysql:mysql /datamysql添加至系统环境vim/etc/profile# mysql homeMYSQL_HOME/server/tools/mysql-9.7.2# path evironmentPATH$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$MYSQL_HOME/binexportPATHJAVA_HOME MAVEN_HOME MYSQL_HOME重载资源source/etc/profile初始化mysql初始化命令– initialize 初始化– usermysql 指定用户– basedir/server/tools/mysql-9.7.2 mysql解压目录亲后不能有空格– datadir/data/mysql/datas mysql数据目录亲后不能有空格/server/tools/mysql-9.7.2/bin/mysqld--initialize--usermysql--basedir/server/tools/mysql-9.7.2--datadir/data/mysql/datas查看输出日志cat/data/mysql/logs/error.log后台输出2026-11-02T19:16:47.294720Z0[System][MY-015017][Server]MySQL Server Initialization - start.2026-11-02T19:16:47.296060Z0[Warning][MY-011070][Server]binlog_formatis deprecated and will be removedina future release.2026-11-02T19:16:47.296488Z0[System][MY-013169][Server]/server/tools/mysql-9.7.2/bin/mysqld(mysqld9.7.2)initializing of serverinprogress as process79182026-11-02T19:16:47.302893Z1[System][MY-013576][InnoDB]InnoDB initialization has started.2026-11-02T19:16:48.706906Z1[System][MY-013577][InnoDB]InnoDB initialization has ended.2026-11-02T19:16:49.210278Z6[Note][MY-010454][Server]A temporary password is generatedforrootlocalhost: a%RJou9XfQz92026-11-02T19:16:50.703428Z0[System][MY-015018][Server]MySQL Server Initialization - end.查看mysql临时密码sudogreptemporary password/data/mysql/logs/error.log后台输出2026-11-02T19:16:49.210278Z6[Note][MY-010454][Server]A temporary password is generatedforrootlocalhost: a%RJou9XfQz9MySQL 服务启动服务命令加载服务sudosystemctl daemon-reload启动服务sudosystemctl start mysqld重启服务sudosystemctl restart mysqld失败后重新设置重启sudosystemctl reset-failed mysqld查看服务状态sudosystemctl status mysqld设置服务开机自启sudosystemctlenablemysqld编写mysql 服务配置文件在系统中服务文件下创建mysqld.service文件vim/etc/systemd/system/mysqld.service具体内容[Unit]DescriptionMySQL ServerAfternetwork.target[Service]TypesimpleUsermysqlGroupmysqlExecStart/server/tools/mysql-9.7.2/bin/mysqld --defaults-file/etc/my.cnfLimitNOFILE65535Restarton-failureRestartSec5PrivateTmpfalseProtectHomefalseProtectSystemfalseNoNewPrivilegesfalse[Install]WantedBymulti-user.target启动服务包括服务加载、服务启动、服务状态# 服务加载sudosystemctl daemon-reload# 服务启动sudosystemctl start mysqld# 服务状态sudosystemctl status mysqld后台显示● mysqld.service - MySQL Server Loaded: loaded(/etc/systemd/system/mysqld.service;5:185mdisabled;preset:5:185mActive: activating(auto-restart)(Result: exit-code)since Tue2026-1Invocation: b7e18306328f48b0bc174750b32b5750 Process:9188ExecStart/server/tools/mysql-9.7.2/bin/mysqld --defaultsMain PID:9188(codeexited,status203/EXEC)Mem peak:1.2M CPU: 6msMain PID: 9188 (codeexited, status203/EXEC)小白的问题是被selinux 拦截了SELinux 拦截问题setenforce 0: 是临时把 SELinux 从 Enforcing 切到 Permissive 只记录不拦截重启后失效。用来验证刚才的 203/EXEC 是不是 SELinux 引起的setenforce 1: 是把 SELinux 从 Permissive 切到 Enforcing 。setenforce0# 需要 rootgetenforce# 期望输出 Permissivesetenforce1# 需要 rootgetenforce# 期望输出 Enforcing解决SELinux 拦截问题# 临时关闭拦截setenforce0# 需要 root# 重启服务sudosystemctl restart mysqld# 开启拦截setenforce1# 需要 root# 查看服务状态sudosystemctl status mysqld启动服务后查看状态后台输出Active: active(running)since Tue2026-11-03 02:23:38 CST;22min ago● mysqld.service - MySQL Server Loaded: loaded(/etc/systemd/system/mysqld.service;disabled;preset: disabled)Active: active(running)since Tue2026-11-03 02:23:38 CST;22min ago Invocation: 153f75cf12d5434c8f2e6813eaa7cba9 Main PID:10940(mysqld)Tasks:70(limit:22802)Memory:1.9G(peak:1.9G)CPU:7.471s CGroup: /system.slice/mysqld.service └─10940 /server/tools/mysql-9.7.2/bin/mysqld --defaults-file/etc/my.cnf Nov 03 02:23:38 itcat systemd[1]: Started mysqld.service - MySQL Server.重启mysql查看mysql 临时密码sudogreptemporary password/data/mysql/logs/error.log启动mysqlmysql-uroot-p按Enter键 输入临时密码修改密码修改root密码登录成功后立即修改 root 账户的密码ALTERUSERrootlocalhostIDENTIFIED BY你的自定义强密码;修改远程访问密码按需开启远程访问权限生产环境建议限制指定IP访问# 创建远程密码CREATEUSERroot%IDENTIFIED BY你的root密码;# 赋权GRANT ALL PRIVILEGES ON *.* TOroot%WITH GRANT OPTION;# 刷新FLUSH PRIVILEGES;# 重置远程密码ALTERUSERroot%IDENTIFIED BY你的新密码;FLUSH PRIVILEGES;# 查看所有用户SELECT user, host, plugin FROM mysql.user;验证参数信息SHOW VARIABLES LIKE%innodb_buffer_pool%;SHOW VARIABLES LIKEslow_query_log%;mysql 服务器启动失败状态为203/EXEC对了关于Main PID: 9743 (codeexited, status203/EXEC)介绍及其他解决方案203/EXEC的含义203/EXEC 表示 systemd 无法执行单元里指定的可执行文件ExecStart 指向的路径 。注意它连 MySQL 都没启动起来是 systemd fork 出去直接失败所以这条日志里 不会有任何 MySQL 自己的错误日志 。常见原因原因说明路径写错ExecStart 里的 /server/tools/mysql-9.7.2/bin/mysqld 拼错/不存在无执行权限文件存在但没 x 位SELinux 拦截文件的安全上下文不对systemd 执行被拒解释器/依赖缺失动态库缺失、/usr/bin/sh 之类解释器找不到排查三步看 systemd 到底想执行什么systemctlcatmysqld重点看 ExecStart 这一行的 完整路径 和你磁盘上实际路径逐个字符对比。验证这个路径真实可执行ls-l/server/tools/mysql-9.7.2/bin/mysqldfile/server/tools/mysql-9.7.2/bin/mysqld期望看到 -rwxr-xr-x 且 file 输出是 ELF 64-bit LSB executable。如果权限不对# 小白不推荐这样做因为这样会引起上下文件权限不一导致不能访问chmod755/server/tools/mysql-9.7.2/bin/mysqldchownmysql:mysql /server/tools/mysql-9.7.2/bin/mysqld# 推荐chown-Rmysql:mysql /server直接用 systemd 的身份跑一次sudo-umysql /server/tools/mysql-9.7.2/bin/mysqld--version报 Permission denied → 权限或 SELinux报 command not found / No such file → 路径错或软链接断了报 error while loading shared libraries → 缺动态库报 cannot execute binary file → 架构不匹配比如 aarch64 包装到 x86 上正常输出 mysqld Ver 9.7.2 → 那问题就在 SELinux 或 unit 配置软链接/移动目录导致路径失效readlink-f/server/tools/mysql-9.7.2/bin/mysqld如果原安装目录被改名或挪过这条会暴露出来。SELinux 拦截getenforcels-Z/server/tools/mysql-9.7.2/bin/mysqld正确上下文应该是 bin_t 或 mysqld_exec_t。修复semanage fcontext-a-tbin_t/server/tools/mysql-9.7.2/bin(/.*)?restorecon-Rv/server/tools/mysql-9.7.2/bin快速验证是否 SELinux 引起的临时切换后重启服务setenforce0systemctl restart mysqld# 起来了就是 SELinux 问题处理完记得 setenforce 1unit 里写了 Typeforking 但 mysqld 不支持顺便看一眼 Type。源码编译安装的推荐写法[Unit]DescriptionMySQL Server9.7.2Afternetwork.target[Service]TypesimpleUsermysqlGroupmysqlExecStart/server/tools/mysql-9.7.2/bin/mysqld --defaults-file/server/tools/mysql-9.7.2/my.cnfRestarton-failureLimitNOFILE65535[Install]WantedBymulti-user.target重启systemctl daemon-reload systemctl restart mysqld另外–initialize 那个问题还在203/EXEC 解决后你 还是会撞回上一轮的 data directory has files in it 。这两件事得一起处理# 先确认数据目录状态彻底清空sudofind/data/mysql/datas-mindepth1-ls把这条的输出、以及 systemctl cat mysqld 的结果发我两条线一起定位。目前的判断是 数据目录没清干净上轮遗留 unit 的 ExecStart 路径或权限不对本轮新增 。注意这章节关于203/EXEC这些方法只提供建议性意见因为小白并没结果真实的验证所以不敢直言是正确的只能说是按照这个方向去试着解决问题结语ok了这就完了自己玩去吧小白就不陪您了
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。