You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CentOS7实例中MariaDB无法安装问题求助

排查CentOS7实例中MariaDB未成功安装的问题

核心排查步骤

  1. 查看用户数据执行日志
    登录实例后,查看cloud-init的执行日志,这是定位安装失败原因的关键:

    cat /var/log/cloud-init-output.log
    

    重点关注yum install mariadb-server -y的输出,确认是否存在依赖缺失、网络超时、仓库无对应包等错误。

  2. 验证MariaDB包是否安装
    执行以下命令确认mariadb-server包是否成功安装:

    rpm -qa | grep mariadb-server
    

    若无输出,说明包未安装成功,需优先解决yum安装环节的问题。

  3. 检查yum仓库配置
    CentOS7默认Base仓库包含mariadb-server,若AWS镜像的仓库配置异常,可手动检查仓库可用性:

    yum repolist enabled
    yum info mariadb-server
    

    若提示No matching Packages to list,则需添加MariaDB官方仓库:

    curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
    

修复后的用户数据脚本

原脚本未添加错误检查,且冗余使用sudo(AWS用户数据默认以root身份执行),以下是优化后的脚本,确保命令执行失败时立即终止,便于定位问题:

#!/bin/bash
set -e  # 命令执行失败时立即终止脚本

DATABASE_PASS='admin123'

# 更新系统并安装依赖
yum update -y
yum install epel-release -y
yum install git zip unzip -y
yum install mariadb-server -y

# 启动并设置开机自启
systemctl start mariadb
systemctl enable mariadb

cd /tmp/
git clone -b vp-rem https://github.com/devopshydclub/vprofile-repo.git

# 初始化数据库
mysqladmin -u root password "$DATABASE_PASS"
mysql -u root -p"$DATABASE_PASS" -e "UPDATE mysql.user SET Password=PASSWORD('$DATABASE_PASS') WHERE User='root'"
mysql -u root -p"$DATABASE_PASS" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')"
mysql -u root -p"$DATABASE_PASS" -e "DELETE FROM mysql.user WHERE User=''"
mysql -u root -p"$DATABASE_PASS" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'"
mysql -u root -p"$DATABASE_PASS" -e "FLUSH PRIVILEGES"
mysql -u root -p"$DATABASE_PASS" -e "create database accounts"
mysql -u root -p"$DATABASE_PASS" -e "grant all privileges on accounts.* TO 'admin'@'localhost' identified by 'admin123'"
mysql -u root -p"$DATABASE_PASS" -e "grant all privileges on accounts.* TO 'admin'@'%' identified by 'admin123'"
mysql -u root -p"$DATABASE_PASS" accounts < /tmp/vprofile-repo/src/main/resources/db_backup.sql
mysql -u root -p"$DATABASE_PASS" -e "FLUSH PRIVILEGES"

# 重启服务
systemctl restart mariadb

# 配置防火墙
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --get-active-zones
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
systemctl restart mariadb

常见问题说明

  • 为什么systemctl status mariadb提示找不到单元?
    本质原因是mariadb-server包未成功安装,包安装完成后系统会自动生成对应的service文件。
  • 用户数据中sudo是否必要?
    AWS EC2的用户数据默认以root用户身份执行,因此无需添加sudo,冗余使用不会报错,但会增加不必要的命令层级。

内容的提问来源于stack exchange,提问作者Muhammad Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:07:57