错误 1130: Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MariaDB server 表示来自IP地址 xxx.xxx.xxx.xxx 的客户端尝试连接MariaDB服务器时被拒绝。这个错误是由于MariaDB服务器的防火墙规则、访问控制设置或者用户权限配置问题导致的。

要解决这个问题,请按照以下步骤操作:

  1. 检查防火墙设置: 确保服务器上的防火墙没有阻止来自该IP地址的3306端口(默认MySQL/MariaDB服务使用的端口)的连接请求。在Linux系统中,可以使用如下命令开放3306端口(以Ubuntu为例):
sudo ufw allow from xxx.xxx.xxx.xxx to any port 3306/tcp

或者如果是iptables:

sudo iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 3306 -j ACCEPT
sudo service iptables save
  1. 检查MariaDB配置: 查看my.cnfmysqld.cnf文件中的bind-address设置,确保其不是只绑定到localhost(即127.0.0.1),而是允许所有接口(或特定的IP地址段)连接。如果需要接受任何来源的连接,将该行修改为:
bind-address = 0.0.0.0

修改后重启MariaDB服务使配置生效。

  1. 授权远程访问: 登录到MariaDB服务器并授予指定主机名或IP地址的访问权限给相应的数据库用户。例如,如果你有一个名为username的用户,并希望允许它从xxx.xxx.xxx.xxx进行连接,可以执行以下SQL命令:
mysql -u root -p

# 输入你的root密码后进入MariaDB
GRANT ALL PRIVILEGES ON *.* TO 'username'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

这里的username是你要授权的用户名,password是对应的密码。ALL PRIVILEGES ON *.*表示赋予了该用户对所有数据库的所有权限,根据实际情况调整。

请务必替换上述命令中的实际用户名和密码,并且确认你的安全策略是否允许这样做。在生产环境中,建议细化权限分配,仅给予必要的最小权限。