数据库服务器怎么开远程

下面我将以几种最常见的数据库为例,详细说明开启远程连接的步骤和至关重要的安全注意事项

**核心思想:修改两处配置

开启远程连接通常需要修改两个地方的配置:

1、数据库服务本身的配置:告诉数据库监听所有IP地址,而不仅仅是本地回环地址(127.0.0.1)。

2、操作系统的防火墙配置:允许外部IP访问数据库的监听端口(如3306, 5432等)。

第一部分:通用安全警告(务必先阅读!)

将数据库暴露在公网上极其危险,攻击者可能会尝试暴力破解、漏洞利用等,请遵循以下原则:

强密码为所有数据库用户,特别是远程连接用户,设置高强度、复杂的密码。

最小权限原则专门创建一个用于远程连接的用户,并只授予它最小必需的权限,绝对不要使用 root 或 sa 账号进行远程连接。

限制访问IP如果可能,将远程访问权限限制在特定的、可信的IP地址或IP段,这是最有效的安全措施之一。

使用非默认端口将数据库端口从默认的3306/5432/1433改为一个不常见的端口,可以减少自动化脚本的攻击。

防火墙必不可少必须通过防火墙严格控制访问来源。

考虑使用SSH隧道或VPN对于生产环境,更安全的方式是让客户端通过SSH隧道或VPN连接到服务器所在的内网,再访问数据库,这样数据库本身完全不用暴露在公网上。

**第二部分:具体数据库配置方法

1. MySQL / MariaDB

步骤 1:修改MySQL配置文件

1、 找到MySQL的配置文件,通常位于:

* Linux:/etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf/etc/mysql/my.cnf

* Windows:C:\ProgramData\MySQL\MySQL Server X.X\my.ini

2、 打开文件,找到[mysqld] 节下的bind-address 配置项。

3、 将其修改为0.0.0.0(表示监听所有网络接口)或者你的服务器公网IP。

    [mysqld]
    bind-address = 0.0.0.0

4、 保存文件并重启MySQL服务。

* Linux:sudo systemctl restart mysqlsudo systemctl restart mysqld

* Windows: 在“服务”管理器中重启 "MySQLXX" 服务。

步骤 2:创建远程用户并授权

使用root用户登录MySQL,执行以下命令:

-- 创建一个新用户(推荐),'username' 和 'password' 请替换为你的
CREATE USER 'your_remote_user'@'%' IDENTIFIED BY 'YourStrongPassword123!';
-- 或者修改已有用户的主机限制(不推荐对root操作)
-- RENAME USER 'old_user'@'localhost' TO 'old_user'@'%';
-- 授予权限,这里授予所有数据库的所有权限,请按需缩小范围。
GRANT ALL PRIVILEGES ON *.* TO 'your_remote_user'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;

注意'%' 表示允许从任何主机连接,为了安全,请尽量替换为特定的IP,如'192.168.1.100' 或网段'192.168.1.%'

步骤 3:配置防火墙

开放MySQL默认端口3306

Linux (ufw):sudo ufw allow 3306/tcp

Linux (firewalld):sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload

Windows: 在“Windows Defender 防火墙”中添加入站规则,允许3306 端口的TCP连接。

**2. PostgreSQL

步骤 1:修改pg_hba.conf

这个文件用于控制客户端认证。

1、 找到文件位置,通常在/etc/postgresql/XX/main/pg_hba.conf/var/lib/pgsql/data/pg_hba.conf

2、 在文件末尾添加一行,允许远程连接:

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    all             all             0.0.0.0/0               md5

host 表示使用TCP/IP连接。

all 表示所有数据库和用户。

0.0.0.0/0 表示允许所有IPv4地址连接,为了安全,请改为192.168.1.0/24 等特定网段。

md5 表示需要密码认证。

步骤 2:修改postgresql.conf

这个文件是主配置文件。

1、 找到文件,通常和pg_hba.conf 在同一目录。

2、 找到listen_addresses 参数,将其修改为:

    listen_addresses = '*'          # 监听所有IP
    # 或者 listen_addresses = 'localhost,你的服务器内网IP'

3、 保存文件并重启PostgreSQL服务。

* Linux:sudo systemctl restart postgresql

步骤 3:配置防火墙

开放PostgreSQL默认端口5432

Linux (ufw):sudo ufw allow 5432/tcp

**3. SQL Server

步骤 1:使用SQL Server配置管理器

1、 打开 "SQL Server Configuration Manager"。

2、 展开 "SQL Server Network Configuration",选择你要配置的实例(如 "Protocols for MSSQLSERVER")。

3、 在右侧右键点击 "TCP/IP",选择 "启用"。

4、 双击 "TCP/IP" 打开属性,切换到 "IP Addresses" 选项卡。

5、 滚动到最下方,在 "IPAll" 部分,确保 "TCP Dynamic Ports" 为空,并在 "TCP Port" 中设置你的端口(默认是1433)。

6、 在 "IP2" (Name 通常是你的服务器公网IP) 部分,将 "Active" 和 "Enabled" 设为 "Yes",并填写 "TCP Port"。

7、 点击 "确定",然后重启SQL Server服务

步骤 2:在SQL Server中启用混合模式认证并创建用户

1、 使用SSMS(SQL Server Management Studio)以Windows身份验证登录。

2、 右键点击服务器实例 -> "属性" -> "安全性"。

3、 选择 "SQL Server and Windows Authentication mode"。

4、 点击 "确定"。

5、 展开 "安全性" -> "登录名",右键点击 "新建登录名..."。

6、 创建一个SQL Server身份验证的登录名,并设置强密码。

7、 在 "用户映射" 中,为此用户分配需要访问的数据库和权限(如db_owner)。

步骤 3:配置防火墙

开放SQL Server的端口(默认1433)。

Windows: 在“高级安全Windows Defender 防火墙”中创建入站规则,允许该端口的TCP连接。

**第三部分:测试连接

在远程客户端机器上,使用数据库客户端工具(如 MySQL Workbench, pgAdmin, SSMS, Navicat等)或命令行进行测试。

连接信息通常包括:

主机/Host: 数据库服务器的公网IP地址

端口/Port: 你配置的数据库端口

用户名/Username: 你创建的远程用户

密码/Password: 该用户的密码

**常见问题排查

如果连接失败,请检查:

1、防火墙:确保服务器和云服务商(如AWS安全组、阿里云安全组)的防火墙都已放行对应端口。

2、配置是否正确:仔细检查配置文件的拼写和位置,确保没有语法错误。

3、服务是否重启:修改配置后,必须重启数据库服务才能生效。

4、用户权限:确认你为用户授予了从正确主机('%' 或 特定IP)连接的权限。

5、网络可达:确认客户端可以ping通服务器的公网IP。

希望这个详细的指南能帮助你安全地完成数据库远程连接的配置!

文章摘自:https://idc.huochengrm.cn/fwq/18519.html

评论