默认情况下,出于安全原因,禁用对 MariaDB 数据库服务的远程访问。 在本指南中,我们将了解如何通过 IP 地址设置对数据库的远程访问。
假设我们有 2 台服务器,其中一台有某个系统(站点/crm),另一台我们将通过指定服务器的登录名、密码和 IP 地址来存储数据库和请求数据。
1. 准备设置
1.1 我们来检查一下配置文件
让我们确保连接选项没有被注释掉,如下所示:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
...
bind-address = 0.0.0.0
...
要应用设置,请重新启动服务
systemctl restart mariadb
1.2 检查端口可用性
netstat -ant | grep 3306
2. 设置
mysql -u root -p
2.1 创建数据库和用户
CREATE DATABASE base1;
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';
2.2 让我们通过指定要连接的服务器的 IP 来允许连接
GRANT ALL ON base1.* to 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
这些详细信息可用于连接:
- base1 - 数据库。
- user1 - 用户。
- password - 密码。
- xx.ip.xx.ip - 我们将连接的服务器的 IP 地址。
2.3 其他示例
2.3.1 允许指定ip访问所有数据库
GRANT ALL ON *.* to 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;
2.3.2 允许任何IP地址连接到base1
GRANT ALL ON base1.* to 'user1'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
2.3.3 仅允许从特定子网到 base1 的连接
GRANT ALL ON base1.* to 'user1'@'xx.ip.xx.%' IDENTIFIED BY 'password' WITH GRANT OPTION;
3. 设置 iptables 防火墙
3.1 我们只允许特定的ip
iptables -A INPUT -p tcp -s xx.ip.xx.ip --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
3.2 让我们允许所有ip
iptables -A INPUT -p tcp -m tcp --dport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
3.3 允许特定子网
iptables -A INPUT -p tcp -s xx.ip.xx.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
4. 让我们检查服务器 1 的连接
4.1 安装mariadb客户端
apt install mariadb-client
4.2 连接到已配置的服务器
mysql -u wpuser -h ip.xx.ip.xx -p
准备好。
暂时没有评论