Host ‘db01‘ is not allowed to connect to this MariaDB server 怎么解决?

出现错误 ERROR 1130 (HY000): Host 'db01' is not allowed to connect to this MariaDB server,表示当前用户 test 没有足够的权限从主机 db01 连接到 MariaDB 服务器。以下是逐步解决方案:


1. 检查用户权限

登录 MariaDB 服务器(需本地或通过其他有权客户端),执行以下命令查看用户权限:

SELECT user, host FROM mysql.user WHERE user = 'test';
  • 如果 host 列显示为 localhost 或具体 IP(非 db01 的 IP),说明用户 test 未被授权从 db01 连接。

2. 授予远程访问权限

根据需求选择以下任意一种方式:

方案 1:允许从任意主机连接(推荐用于测试环境)
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • '%' 表示允许所有主机(包括 db01)连接。
  • 替换 123456 为实际密码。
方案 2:仅允许从特定主机(如 db01)连接

假设 db01 的 IP 是 172.16.3.51,则执行:

GRANT ALL PRIVILEGES ON *.* TO 'test'@'172.16.3.51' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 若需允许 172.16.3.0/24 网段的所有 IP,可使用 '172.16.3.%'

3. 处理可能的冲突

如果执行 GRANT 时提示 ERROR 1062 (23000): Duplicate entry(如已存在 'test'@'%' 或类似记录),需先删除冲突记录:

DELETE FROM mysql.user WHERE user = 'test' AND host = '%'; -- 示例
FLUSH PRIVILEGES;

再重新执行 GRANT 命令。


4. 验证防火墙设置

确保 MariaDB 服务器的 3306 端口db01 的 IP 开放:

  • Linux 防火墙:检查 firewalldiptables 规则。
    firewall-cmd --permanent --add-source=172.16.3.51 --zone=public
    firewall-cmd --reload
    
  • 云服务器:检查安全组是否放行 3306 端口(入方向)。

5. 重启 MariaDB 服务

部分情况下需重启服务以应用配置:

sudo systemctl restart mariadb

最终验证

db01 上重新执行连接命令:

mysql -utest -p123456 -h172.16.3.51

若成功连接,问题解决。


补充说明

  • 安全性建议:生产环境中避免使用 '%',改为限定具体 IP 或网段。
  • 密码复杂度:建议将简单密码(如 123456)改为复杂密码,避免安全风险。

参考来源:MySQL 官方文档、搜索结果中多个权限配置案例[1][2][3][4][5]。

你可能感兴趣的:(云原生,mariadb,数据库,云计算,运维岗位,运维技术)