如果程序报Host 'x.x.x.x' is not allowed to connect to this MariaDB server 这个错误时,你需要配置 MariaDB 允许其他服务器访问。
默认情况下,MariaDB 用户账号只允许本地 localhost/127.0.0.1 登录,不允许其他服务器的远程连接。
修改数据库配置
编辑 MariaDB 主配置文件,路径:/etc/my.cnf.d/mariadb.cnf
在 [mysqld] 段中找到 bind-address 配置,修改为监听所有地址:
[mysqld]
# 注释掉原来的 bind-address = 127.0.0.1
# bind-address = 127.0.0.1
# 修改为监听所有网卡
bind-address = 0.0.0.0
-
登录 MariaDB 数据库:
mysql -u root -p -
切换到
mysql系统库:USE mysql; -
查看当前用户的主机权限:
SELECT user, host FROM user;正常情况下,
root用户的host列默认是localhost,这就是远程无法连接的原因。
授权服务器
授权特定的IP访问数据库
-- 给 root 用户授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'x.x.x.x' IDENTIFIED BY '你的数据库密码';
-- 刷新权限
FLUSH PRIVILEGES;
允许所有 IP
-- 给 root 用户授权所有主机访问
UPDATE user SET host = '%' WHERE user = 'root' AND host = 'localhost';
-- 或者直接创建一个允许所有主机的用户
-- CREATE USER 'remote_user'@'%' IDENTIFIED BY '你的密码';
-- GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;