当前位置:首页 > 问答 > 正文

CentOS 数据库远程连接:如何在CentOS系统中实现数据库的远程访问与配置

🔥【2025年8月最新消息】CentOS生态大更新!
根据官方消息,CentOS 7已进入维护末期,建议尽快迁移至CentOS 9 Stream或国产OpenEuler 24.03 LTS系统,特别提醒:采用鲲鹏/飞腾芯片的服务器,OpenEuler性能提升可达30%!Docker镜像加速服务新增国内源(如https://docker.1panel.live),拉取速度提升10倍!🚀


📡 CentOS数据库远程连接全攻略:MySQL/PostgreSQL远程访问配置指南

你是否遇到过这样的情况:本地数据库运行良好,但远程连接时却提示“连接被拒绝”?别担心!本文将手把手教你如何在CentOS 9系统中配置MySQL和PostgreSQL的远程访问,附赠防火墙设置、用户权限调整等实用技巧,让你轻松实现远程数据库管理!💻


🔧 一、MySQL 8.0远程连接配置

安装MySQL服务器

# 添加MySQL官方仓库
sudo yum install -y https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm
# 安装MySQL社区版
sudo yum install -y mysql-community-server
# 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld

修改配置文件

sudo vi /etc/my.cnf

[mysqld]部分添加:

CentOS 数据库远程连接:如何在CentOS系统中实现数据库的远程访问与配置

bind-address = 0.0.0.0  # 允许所有IP访问
skip-name-resolve = 1    # 禁用DNS解析,提升性能

配置防火墙

# 开放3306端口(TCP)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

用户授权与安全设置

# 获取临时root密码
sudo grep 'temporary password' /var/log/mysqld.log
# 登录MySQL并修改密码
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
# 创建远程用户并授权
CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'RemotePass123!';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

🐘 二、PostgreSQL 15远程访问配置

修改配置文件

sudo vi /var/lib/pgsql/15/data/postgresql.conf

找到#listen_addresses = 'localhost',修改为:

listen_addresses = '*'  # 监听所有IP

配置客户端认证

sudo vi /var/lib/pgsql/15/data/pg_hba.conf

在文件末尾添加:

CentOS 数据库远程连接:如何在CentOS系统中实现数据库的远程访问与配置

host    all             all             0.0.0.0/0             md5

重启服务与防火墙设置

sudo systemctl restart postgresql-15
# 开放5432端口(TCP)
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

设置用户密码

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'YourStrongPassword123!';

🔥 三、通用防火墙操作(必看!)

基础命令

# 查看防火墙状态
sudo systemctl status firewalld
# 开放多个端口(示例:80,443,3000-3010)
sudo firewall-cmd --add-port={80,443,3000-3010}/tcp --permanent
sudo firewall-cmd --reload

排错三板斧

  • 端口未开放?
    sudo firewall-cmd --list-ports 检查已开放端口
  • 服务未启动?
    sudo systemctl start firewalld
  • 配置未生效?
    sudo firewall-cmd --reload 重载配置

⚠️ 四、常见问题解决

MySQL连接报错:2003 (HY000)

原因:防火墙未开放3306端口或MySQL未配置bind-address=0.0.0.0
解决:检查配置文件与防火墙规则,重启服务:

sudo systemctl restart mysqld

PostgreSQL认证失败

原因pg_hba.conf未正确配置或密码未设置
解决:确认添加host all all 0.0.0.0/0 md5,并使用ALTER USER设置密码。

CentOS 数据库远程连接:如何在CentOS系统中实现数据库的远程访问与配置

连接速度慢?

优化技巧

  • /etc/resolv.conf顶部添加:
    options single-request-reopen
  • 启用TCP BBR算法:
    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    sudo sysctl -p

通过本文,你已掌握:

  1. MySQL/PostgreSQL远程连接配置全流程
  2. 防火墙端口开放与规则管理
  3. 用户权限与安全设置技巧
  4. 常见问题排查方法

建议定期检查系统安全,限制数据库访问IP,并启用SSL加密连接(如PostgreSQL的ssl = on配置),立即动手实践,让你的数据库轻松实现远程访问吧!🚀

💡 小贴士:使用netstat -tuln命令可实时查看端口监听状态,助你快速定位连接问题!

发表评论