【Ambari Plus】Step8—MariaDB 初始化
2026/8/5 21:30:33 网站建设 项目流程

Step8—MariaDB 初始化

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

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

安装 MariaDB

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

sudodnf-yinstallMariaDB-server MariaDB-client||\sudoyum-yinstallMariaDB-server MariaDB-clientsudosystemctlenable--nowmariadb
sudoaptupdatesudoaptinstall-ymariadb-server mariadb-clientsudosystemctlenable--nowmariadb

写入 MariaDB 配置

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

sudomkdir-p/etc/my.cnf.dsudotee/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
sudomkdir-p/etc/mysql/mariadb.conf.dsudotee/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

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

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

初始化数据目录

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

if[!-d/var/lib/mysql/mysql];thenifcommand-vmariadb-install-db>/dev/null2>&1;thensudomariadb-install-db--user=mysql--datadir=/var/lib/mysqlelsesudomysql_install_db--user=mysql--datadir=/var/lib/mysqlfifi

启动并检查 MariaDB

sudosystemctl restart mariadbsudosystemctlenablemariadbsudosystemctl status mariadb --no-pager

确认 3306 监听和字符集:

ss-lntp|grep':3306 'sudomariadb--protocol=socket-uroot-e"SHOW VARIABLES LIKE 'character_set_server';"

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

初始化 root 密码

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

用户名密码
rootroot

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

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

sudomariadb--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

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

mysql-uroot-p

放通 3306

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

sudofirewall-cmd --add-port=3306/tcp--permanentsudofirewall-cmd--reload
sudoufw allow3306/tcpsudoufw reload

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

验证 root 连接

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

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

密码输入root

再到hadoop2.test.comhadoop3.test.com远程验证:

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

密码同样输入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-clientmariadb-client

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询