Mariadb修改数据库可以被其他服务器访问

如果程序报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;