TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • 产品中心

  • 安装与使用

    • Ambari Plus 安装

      • 安装前准备
        • 实施总览
        • Step0—源码包下载与目录准备
        • Step1—系统源与基础工具准备
        • Step2—集群免密登录
        • Step3—主机名解析同步
        • Step4—Chrony 时间同步
        • Step5—Nginx 本地 Yum 文件服务
        • Step6—JDK 双环境准备
        • Step7—MySQL 驱动与本地仓库
        • Step8—MariaDB 初始化
          • Step8—MariaDB 初始化
          • 安装 MariaDB
          • 写入 MariaDB 配置
          • 初始化数据目录
          • 启动并检查 MariaDB
          • 初始化 root 密码
          • 放通 3306
          • 验证 root 连接
          • 常见问题
        • Step9—AmbariServer 初始化
        • 必须 ambari plus 数据库初始化文件
      • 安装部署
    • 组件安装

    • 开启高可用

    • 权限与安全专题

    • Ambari Plus Monitor

    • 常见问题

  • 发布与支持

  • 会员与访问

目录
Step8—MariaDB 初始化
安装 MariaDB
写入 MariaDB 配置
初始化数据目录
启动并检查 MariaDB
初始化 root 密码
放通 3306
验证 root 连接
常见问题

Step8—MariaDB 初始化

# Step8—MariaDB 初始化

Ambari Server 后面会把元数据写入 MariaDB,所以数据库要提前准备好。这一步只处理 MariaDB 服务本身:安装、字符集、监听地址、root 密码和远程连通验证。Ambari 专用库和专用用户放到 Step9 再创建。

本文只在核心节点 hadoop1.test.com 初始化 MariaDB,工作节点只做连接验证。

# 安装 MariaDB

如果 Step1 已经安装过,可以直接跳到下一节。

    sudo dnf -y install MariaDB-server MariaDB-client || \
    sudo yum -y install MariaDB-server MariaDB-client
    
    sudo systemctl enable --now mariadb
    
    1
    2
    3
    4
    sudo apt update
    sudo apt install -y mariadb-server mariadb-client
    
    sudo systemctl enable --now mariadb
    
    1
    2
    3
    4
    // Make sure to add code blocks to your code group

    # 写入 MariaDB 配置

    不要直接覆盖系统主配置文件。RHEL 系我建议写到 /etc/my.cnf.d/99-ambari.cnf,Ubuntu 写到 /etc/mysql/mariadb.conf.d/99-ambari.cnf。

      sudo mkdir -p /etc/my.cnf.d
      
      sudo tee /etc/my.cnf.d/99-ambari.cnf >/dev/null <<'EOF'
      [client]
      default-character-set=utf8mb4
      
      [mysqld]
      character-set-server=utf8mb4
      collation-server=utf8mb4_unicode_ci
      default-storage-engine=InnoDB
      innodb_file_per_table=1
      
      bind-address=0.0.0.0
      max_connections=500
      
      [mysqldump]
      default-character-set=utf8mb4
      EOF
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      sudo mkdir -p /etc/mysql/mariadb.conf.d
      
      sudo tee /etc/mysql/mariadb.conf.d/99-ambari.cnf >/dev/null <<'EOF'
      [client]
      default-character-set=utf8mb4
      
      [mysqld]
      character-set-server=utf8mb4
      collation-server=utf8mb4_unicode_ci
      default-storage-engine=InnoDB
      innodb_file_per_table=1
      
      bind-address=0.0.0.0
      max_connections=500
      
      [mysqldump]
      default-character-set=utf8mb4
      EOF
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      // Make sure to add code blocks to your code group

      MariaDB 配置检查

      提示

      bind-address=0.0.0.0 是为了让工作节点能连核心节点数据库。生产环境更建议配合防火墙和安全组限制来源,只允许集群内网段访问 3306。

      可选的 InnoDB 调优项

      如果数据库节点内存充足,可以再按机器规格调整 innodb_buffer_pool_size、innodb_log_file_size、innodb_log_buffer_size 等参数。不要直接照抄固定值,2C4G、8C32G 和独立数据库服务器的参数不应该一样。新环境先保证字符集、监听地址和服务稳定,再做性能参数。

      # 初始化数据目录

      大多数发行版安装 mariadb-server 后会自动初始化数据目录。如果 /var/lib/mysql/mysql 不存在,再手动初始化:

      if [ ! -d /var/lib/mysql/mysql ]; then
        if command -v mariadb-install-db >/dev/null 2>&1; then
          sudo mariadb-install-db --user=mysql --datadir=/var/lib/mysql
        else
          sudo mysql_install_db --user=mysql --datadir=/var/lib/mysql
        fi
      fi
      
      1
      2
      3
      4
      5
      6
      7

      # 启动并检查 MariaDB

      sudo systemctl restart mariadb
      sudo systemctl enable mariadb
      sudo systemctl status mariadb --no-pager
      
      1
      2
      3

      确认 3306 监听和字符集:

      ss -lntp | grep ':3306 '
      sudo mariadb --protocol=socket -uroot -e "SHOW VARIABLES LIKE 'character_set_server';"
      
      1
      2

      能看到 0.0.0.0:3306 和 utf8mb4,说明基础配置已经生效。

      # 初始化 root 密码

      为了让教程更容易跟着跑,本文演示环境统一使用:

      用户名 密码
      root root

      注意

      这里的 root/root 只是为了演示和快速跑通安装流程。生产环境请改成高复杂度密码,并按公司的安全规范限制数据库来源地址。

      如果当前 root 可以通过 socket 登录,执行:

      sudo mariadb --protocol=socket -uroot <<'EOF'
      DELETE FROM mysql.user WHERE User='';
      DROP DATABASE IF EXISTS test;
      DELETE FROM mysql.db WHERE Db='test' OR Db LIKE 'test\\_%';
      
      CREATE USER IF NOT EXISTS 'root'@'localhost' IDENTIFIED BY 'root';
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
      
      CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'root';
      ALTER USER 'root'@'%' IDENTIFIED BY 'root';
      
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
      
      FLUSH PRIVILEGES;
      EOF
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16

      如果当前 root 已经有密码,用密码登录后执行同样的清理和 ALTER USER:

      mysql -uroot -p
      
      1

      # 放通 3306

      演示环境可以直接放通 3306。生产环境建议只允许集群网段访问,或者通过安全组限制来源。

        sudo firewall-cmd --add-port=3306/tcp --permanent
        sudo firewall-cmd --reload
        
        1
        2
        sudo ufw allow 3306/tcp
        sudo ufw reload
        
        1
        2
        // Make sure to add code blocks to your code group

        如果没有启用防火墙,可以跳过;云主机仍然要检查安全组。

        # 验证 root 连接

        先在 hadoop1.test.com 本机验证:

        mysql -uroot -p -e 'SELECT USER(), VERSION();'
        
        1

        密码输入 root。

        再到 hadoop2.test.com 和 hadoop3.test.com 远程验证:

        mysql -h hadoop1.test.com -uroot -p -e 'SELECT 1 AS ok;'
        
        1

        密码同样输入 root。

        MariaDB root 连接验证

        返回 1 就说明端口、监听地址和 root 授权都正常。

        # 常见问题

        现象 原因 处理
        只能本机登录,远程失败 bind-address 仍是 127.0.0.1 或防火墙未放通 改配置后重启,并检查 3306 规则
        远程提示 Access denied 'root'@'%' 没授权或密码不是 root 重新执行 root 授权 SQL
        3306 没监听 服务未启动或配置错误 看 journalctl -u mariadb
        socket 登录失败 root 认证方式或密码已被改过 使用 mysql -uroot -p 登录
        工作节点无 mysql 命令 没装客户端 安装 MariaDB-client 或 mariadb-client

        MariaDB 远程验证通过后,就可以给 Ambari Server 创建数据库和用户。

        Step7—MySQL 驱动与本地仓库
        Step9—AmbariServer 初始化

        ← Step7—MySQL 驱动与本地仓库 Step9—AmbariServer 初始化→

        最近更新
        01
        当前版本 2026/08
        08-29
        02
        把 Ambari Server HA 稳稳地跑起来
        08-17
        03
        从一次启用操作追到主备就绪
        08-17
        更多文章>
        Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
        • 跟随系统
        • 浅色模式
        • 深色模式
        • 阅读模式