Yum源配错导致mariadb-server无法安装,需启用codeready-builder(RHEL)或crb/powertools(CentOS Stream),或改用MariaDB官方源;mysql_secure_installation失败因root默认unix_socket认证,应先执行UPDATE修改plugin;远程连接需检查bind地址、用户授权及firewalld;磁盘暴涨主因ibtmp1无限制增长或二进制日志未清理。

Yum 源配错导致 yum install mariadb-server 找不到包
默认 CentOS/RHEL 8+ 系统自带的 AppStream 仓库里是 mariadb(客户端)和 mariadb-common,但 mariadb-server 包被移到了 codeready-builder 仓库(RHEL)或需启用 PowerTools(CentOS Stream)。直接 yum install mariadb-server 会报 No package mariadb-server available。
实操建议:
- RHEL 8/9:先运行
yum config-manager --enable codeready-builder-for-rhel-8-x86_64-rpms(RHEL 9 改为crb) - CentOS Stream 8/9:启用
powertools或crb,命令是dnf install -y dnf-plugins-core && dnf config-manager --set-enabled powertools(C8)或crb(C9) - 跳过系统源、用 MariaDB 官方源更稳:下载
mariadb.repo到/etc/yum.repos.d/,内容指定baseurl=https://yum.mariadb.org/10.11/centos8-amd64(按系统版本改),并确保gpgcheck=1且导入 GPG key:rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
mysql_secure_installation 运行失败:提示 Access denied for user 'root'@'localhost'
这是最常卡住的一步。新装 MariaDB 后,root 用户默认用 unix_socket 插件认证(不依赖密码),而 mysql_secure_installation 默认尝试用空密码登录,失败。
实操建议:
- 先用系统用户免密进库:
sudo mysql -u root(不是mysql -u root -p) - 进去后执行:
UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES; - 再退出,运行
mysql_secure_installation就能正常走流程 - 如果已设过密码但忘了,不能靠跳过验证来重置;必须停掉 mysqld,用
--skip-grant-tables启动,再更新authentication_string字段(注意:MariaDB 10.4+ 用password字段已废弃)
远程连接连不上:开了 firewalld 还是超时
不止要开端口,还要确认三件事:bind 地址、用户权限、防火墙规则是否生效。
实操建议:
- 检查
/etc/my.cnf.d/server.cnf里有没有bind-address = 127.0.0.1—— 有就注释掉或改成0.0.0.0,然后systemctl restart mariadb - 创建远程用户时别只写
CREATE USER 'app'@'%' IDENTIFIED BY 'xxx';,必须显式授权:GRANT ALL ON *.* TO 'app'@'%' WITH GRANT OPTION;,再FLUSH PRIVILEGES; -
firewalld开端口后要 reload:firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload;用ss -tlnp | grep :3306确认 mysqld 确实在监听0.0.0.0:3306,不是只监听127.0.0.1
初始化后磁盘暴涨:/var/lib/mysql 占用远超预期
MariaDB 10.6+ 默认启用 innodb_file_per_table=ON,但首次启动会预分配 ibdata1(系统表空间)+ 多个 ibtmp1(临时表空间),尤其在云服务器小内存环境下,ibtmp1 可能无限制增长到几个 GB。
实操建议:
- 编辑
/etc/my.cnf.d/server.cnf,在[mysqld]下加:innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:512M - 如已膨胀,只能停库删除
/var/lib/mysql/ibtmp1(重启后自动重建) - 检查是否误启了二进制日志:
log_bin默认关着,但如果手动开了且没清理,/var/lib/mysql下一堆mysql-bin.000xxx也会吃空间;用SHOW BINARY LOGS;查看,用PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';清理
远程访问和磁盘控制这两块最容易被跳过检查,等出问题再回溯,往往要翻三四层配置。










