Linux环境下开启数据库远程连接的详细步骤与注意事项

LEAF
在Linux环境下开启数据库远程连接,需先修改数据库配置文件(如MySQL的my.cnf、PostgreSQL的postgresql.conf),将bind-address设为0.0.0.0或指定IP;创建具有远程访问权限的用户(如MySQL的'GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'password');开放防火墙端口(如MySQL默认3306,PostgreSQL默认5432),注意事项:务必限制允许远程访问的IP,避免使用弱密码;关闭SELinux或调整策略;测试连接时注意网络可达性,确保数据库服务正常运行,同时需考虑数据库版本差异,避免配置错误导致服务异常。

在Linux服务器部署数据库后,常需从远程客户端(如管理工具、应用程序)进行访问,开启远程连接需同时修改数据库配置、防火墙规则及用户权限,本文以MySQL和PostgreSQL为例,详细讲解操作步骤及安全注意事项。

前置准备:确认数据库服务状态

开启远程连接前,需确保数据库服务已在Linux服务器正常运行,以MySQL和PostgreSQL为例,使用以下命令检查状态:

  • MySQLsystemctl status mysql(或mysqld,取决于安装方式)
  • PostgreSQLsystemctl status postgresql

若服务未运行,可通过systemctl start mysql/postgresql启动,并设置开机自启:systemctl enable mysql/postgresql

Linux环境下开启数据库远程连接的详细步骤与注意事项

修改数据库配置文件

数据库默认仅允许本地连接(bind-address=127.0.0.1listen_addresses=localhost),需修改配置以监听远程IP。

MySQL(以8.0为例)

  • 配置文件位置:通常为/etc/mysql/mysql.conf.d/mysqld.cnf(或/etc/my.cnf,可通过mysql --help | grep "Default options"查找)。
  • 修改步骤
    用编辑器(如vi)打开文件,找到bind-address参数,将其值修改为:
    • 0.0.0:允许任意IP连接(不推荐,存在安全风险);
    • 服务器IP:仅允许指定服务器IP(如168.1.100)。
      示例:
      bind-address = 0.0.0.0
  • 保存退出:执行wq(vi编辑器)。

PostgreSQL(以13为例)

  • 配置文件位置:通常为/etc/postgresql/13/main/postgresql.conf(版本号可能不同,通过find / -name postgresql.conf查找)。
  • 修改步骤
    打开文件,找到listen_addresses参数,默认为localhost,修改为:
    • 允许任意IP连接;
    • '服务器IP':仅允许指定IP。
      示例:
      listen_addresses = '*'
  • 保存退出wq

配置数据库用户远程访问权限

修改配置后,需为数据库用户授予远程连接权限(避免直接使用root/admin等高权限用户)。

MySQL

  • 登录数据库mysql -u root -p(输入root密码)。
  • 创建远程用户(可选):若需新用户,执行:
    CREATE USER 'remote_user'@'%' IDENTIFIED BY '强密码';
    • remote_user:用户名;
    • 允许任意IP连接(可替换为具体IP,如'192.168.1.101');
    • '强密码':需包含大小写字母、数字及特殊字符。
  • 授权:授予指定数据库的远程访问权限(如test_db):
    GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%';
  • 刷新权限FLUSH PRIVILEGES;

PostgreSQL

  • 登录数据库sudo -u postgres psql(以postgres超级用户登录)。
  • 修改pg_hba.conf:该文件控制客户端认证,路径为/etc/postgresql/13/main/pg_hba.conf(与postgresql.conf同目录)。
    打开文件,添加以下规则(允许任意IP以md5加密方式连接):
    host    all             all             0.0.0.0/0               md5
    • host:使用TCP连接;
    • all:所有数据库;
    • all:所有用户;
    • 0.0.0/0:任意IP(可替换为168.1.0/24等网段);
    • md5:密码加密方式(推荐,避免明文传输)。
  • 创建远程用户(可选)
    CREATE USER remote_user WITH PASSWORD '强密码';
  • 授权:授予所有数据库权限(谨慎使用):
    GRANT ALL PRIVILEGES ON DATABASE test_db TO remote_user;

配置Linux防火墙

Linux防火墙(如iptables、firewalld、ufw)默认会拦截远程端口,需开放数据库端口(MySQL默认3306,PostgreSQL默认5432)。

firewalld(CentOS/RHEL 7+)

  • 检查防火墙状态systemctl status firewalld(若未启动,执行systemctl start firewalld)。
  • 永久开放端口
    # MySQL(3306端口)
    firewall-cmd --permanent --add-port=3306/tcp
    # PostgreSQL(5432端口)
    firewall-cmd --permanent --add-port=5432/tcp
  • 重新加载防火墙firewall-cmd --reload

iptables(CentOS/RHEL 6及以下)

  • 开放端口
    # MySQL
    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    # PostgreSQL
    iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
  • 保存规则service iptables save

ufw(Ubuntu/Debian)

  • 检查防火墙状态ufw status(若未启用,执行ufw enable)。
  • 开放端口
    # MySQL
    ufw allow 3306/tcp
    # PostgreSQL
    ufw allow 5432/tcp

重启数据库服务使配置生效

修改配置文件和防火墙后,需重启数据库服务以加载新配置:

  • MySQLsystemctl restart mysql
  • PostgreSQLsystemctl restart postgresql

测试远程连接

使用客户端工具(如Navicat、DBeaver)或命令行测试连接:

  • 命令行测试(MySQL)mysql -h 服务器IP -u remote_user -p(输入密码后若能登录成功,则配置成功)。
  • 命令行测试(PostgreSQL)psql -h 服务器IP -U remote_user -d test_db(输入密码后若进入数据库,则配置成功)。

安全注意事项

  1. 限制访问IP:避免直接使用允许任意IP,建议仅开放可信IP(如168.1.0/24),降低安全风险。
  2. 使用强密码:数据库用户密码需包含大小写字母、数字及特殊字符,避免弱密码。
  3. 关闭root远程访问:MySQL默认禁止root远程登录,PostgreSQL默认仅允许本地连接,无需额外关闭。
  4. 定期更新数据库:及时修复漏洞,避免利用已知漏洞攻击。
  5. 启用SSL/TLS加密:对于生产环境,建议配置数据库SSL加密,防止数据传输被窃听(MySQL需配置ssl-ca等参数,PostgreSQL需修改ssl配置)。

开启Linux数据库远程连接需完成“修改数据库配置→配置用户权限→开放防火墙端口→重启服务”四步,核心是确保数据库监听远程IP、用户有远程访问权限、防火墙允许端口通信,操作时务必注意安全,避免因配置不当导致服务器被入侵。

文章版权声明:除非注明,否则均为XMSDN - MSDN原版系统镜像 | 纯净ISO系统下载原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码