MySQL 8.0+中root@localhost默认禁止远程连接,AdminAPI要求新建通配符账号(如clusteradmin@'%')并授予最小必要权限集,而非直接修改root的host;同时需正确配置MGR插件、local_address、group_name等参数并确保GTID与server-id一致性。

dba.configureInstance() 报 “User 'root' can only connect from 'localhost'”
这是最常卡住的第一步。AdminAPI 检测到当前账号无法被其他节点远程连接,直接拒绝配置。MySQL 8.0+ 对 root@localhost 有硬性保护,不能简单改 host,否则本地登录可能失效。
必须新建一个通配符账号,并赋予 AdminAPI 要求的最小权限集:
- 在每个节点上执行:
CREATE USER 'clusteradmin'@'%' IDENTIFIED BY 'StrongPass123!'; - 授权(注意不是 ALL PRIVILEGES):
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON <em>.</em> TO 'clusteradmin'@'%'; -
FLUSH PRIVILEGES; - 后续所有
mysqlsh连接都用这个账号,例如:mysqlsh clusteradmin@192.168.14.11:3306
dba.createCluster() 报 “Group Replication plugin is not installed”
AdminAPI 不会自动安装插件,只检查是否已加载并启用。常见错误是:在 JavaScript 模式下直接敲 INSTALL PLUGIN —— 这条 SQL 命令必须在 SQL 模式下运行。
- 进入 SQL 模式:
\sql - 执行:
INSTALL PLUGIN group_replication SONAME 'group_replication.so'; - 验证:
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'group_replication';—— 必须返回ACTIVE - 为防重启失效,务必在
/etc/my.cnf中追加:plugin_load_add = group_replication.so
添加第二个节点时 START GROUP_REPLICATION 失败,日志提示 “Unable to connect to group replication local address”
这不是防火墙或网络不通,而是 MGR 内部通信地址配置错误。关键点在于:loose-group_replication_local_address 必须设成本机真实 IP + 端口(如 33061),不能写 127.0.0.1 或主机名(即使 /etc/hosts 已配)。
- 检查每个节点的
my.cnf:loose-group_replication_local_address = "192.168.14.11:33061"(IP 与本机一致) - 确保该端口在系统防火墙中放行:
firewall-cmd --permanent --add-port=33061/tcp - 关闭 DNS 解析:
skip_name_resolve = ON,否则 MGR 启动时可能反向解析失败
cluster.addInstance() 卡住或报超时,但节点状态显示 OFFLINE
说明新节点虽然能连上集群管理节点,但无法加入组通信。除了上述 IP 和端口问题,还要核对三个硬性一致性参数:
-
loose-group_replication_group_name:所有节点必须完全相同,格式为 UUID 字符串(如c357ce5e-4666-4921-b1ef-b1a24c0bbdf2),不能带空格或引号差异 -
loose-group_replication_group_seeds:必须包含所有节点的loose-group_replication_local_address,顺序无关,但缺一不可 -
gtid_mode = ON、enforce-gtid-consistency = ON、binlog_checksum = NONE:这三个必须全部开启且一致,否则addInstance()会静默失败
真正容易被忽略的是:MGR 要求所有节点的 server-id 必须唯一,且不能为 0 或重复;loose-group_replication_start_on_boot = OFF 必须显式设置,否则 MySQL 重启后会尝试自启 Group Replication,但此时其他节点还没起来,导致脑裂或状态混乱。


















