当前位置:首页 > Linux > 正文

Linux服务器如何连接数据库

在 Linux服务器上建立 数据库连接,需安装数据库软件如MySQL或PostgreSQL,配置服务启动和用户权限,最后通过命令行工具(如mysql命令)或应用程序接口实现连接。

Linux服务器上建立与数据库的连接是网站运维、后端开发及数据管理的核心操作,以下以常用的MySQL/MariaDB和PostgreSQL为例,提供详细步骤及安全实践,适用于Ubuntu/CentOS等主流发行版。


准备工作

  1. 确认数据库信息

    • 数据库类型(MySQL/MariaDB/PostgreSQL等)
    • 服务器IP地址(如远程数据库需防火墙放行端口:MySQL默认3306,PostgreSQL默认5432)
    • 用户名、密码及数据库名称
    • 权限配置(确保用户有远程访问权限)
  2. 服务器环境更新

    sudo apt update && sudo apt upgrade # Ubuntu/Debian sudo yum update && sudo yum upgrade # CentOS/RHEL


安装数据库客户端工具

MySQL/MariaDB 客户端安装

# Ubuntu/Debian sudo apt install mysql-client # CentOS/RHEL sudo yum install mysql

PostgreSQL 客户端安装

# Ubuntu/Debian sudo apt install postgresql-client # CentOS/RHEL sudo yum install postgresql


连接数据库方法

方法1:命令行直接连接

  • 连接本地数据库

    mysql -u 用户名 -p # MySQL/MariaDB psql -U 用户名 -d 数据库名 # PostgreSQL

    输入密码后进入交互式命令行。

    Linux服务器如何连接数据库 第1张

  • 连接远程数据库

    mysql -h 远程IP -u 用户名 -p # MySQL psql -h 远程IP -U 用户名 -d 数据库名 # PostgreSQL

方法2:通过配置文件连接(安全推荐)

  1. 创建配置文件避免明文密码:

    • MySQL:编辑 ~/.my.cnf [client] host=数据库IP user=用户名 password=密码 database=数据库名
    • PostgreSQL:编辑 ~/.pgpass echo "数据库IP:端口:数据库名:用户名:密码" > ~/.pgpass chmod 600 ~/.pgpass # 关键:限制权限仅当前用户可读
  2. 简化连接命令:

    mysql # 自动读取.my.cnf psql -h 数据库IP -U 用户名 # 自动匹配.pgpass

  3. 测试连接与常见问题

    基础测试

    # MySQL示例:显示所有数据库 mysql -e "SHOW DATABASES;" # PostgreSQL示例:列出所有表 psql -c "dt"

    连接失败排查

    1. 网络与防火墙

      Linux服务器如何连接数据库 第2张

      telnet 数据库IP 3306 # 测试端口通断(未安装telnet则用`nc -zv IP 端口`)
      • 若不通,检查:
        • 云服务商安全组规则(如AWS安全组、阿里云ECS规则)
        • 本地防火墙:sudo ufw allow 3306(Ubuntu)
    2. 权限问题

      • MySQL:确保用户有远程访问权限 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码'; FLUSH PRIVILEGES;
      • PostgreSQL:修改 pg_hba.conf # 在末尾添加(允许所有IP访问) host all all 0.0.0.0/0 md5

        重启服务:sudo systemctl restart postgresql

    3. 服务状态检查

      sudo systemctl status mysql # 或 mariadb sudo systemctl status postgresql


    安全最佳实践

    1. 最小权限原则

      • 禁止使用root账户连接,创建专用数据库用户并限制权限: -- MySQL示例:仅允许访问特定数据库 GRANT SELECT, INSERT ON 数据库名.* TO '用户'@'%';
    2. 加密连接

      Linux服务器如何连接数据库 第3张

      • 启用SSL/TLS(MySQL需配置require_secure_transport=ON;PostgreSQL在postgresql.conf中设置ssl=on)。
      • 密码管理

        • 使用强密码(12位以上,含大小写、数字、符号)
        • 定期轮换密钥,避免硬编码密码到脚本中。
        • 网络隔离

          将数据库置于内网,仅允许应用服务器通过私有IP访问。

        • 自动化脚本示例(Python连接)

          # 安装依赖:pip install mysql-connector-python psycopg2-binary # MySQL连接示例 import mysql.connector db = mysql.connector.connect( host="IP", user="用户", password="密码", database="数据库名", ssl_disabled=False # 生产环境应启用SSL ) cursor = db.cursor() cursor.execute("SELECT VERSION()") print(cursor.fetchone()) # PostgreSQL连接示例 import psycopg2 conn = psycopg2.connect( host="IP", dbname="数据库名", user="用户", password="密码", sslmode="require" # 强制SSL ) cur = conn.cursor() cur.execute("SELECT version();") print(cur.fetchone())


          在Linux服务器连接数据库需关注:客户端安装、权限配置、网络策略及加密传输,优先使用配置文件管理凭证,遵循最小权限原则,并定期审计访问日志(如MySQL的general_log),复杂环境建议结合连接池(如PgBouncer)或ORM工具优化性能。

          引用说明:本文操作基于MySQL 8.0、PostgreSQL 14及Ubuntu 22.04 LTS,参考MySQL官方文档PostgreSQL官方文档及Linux man pages,安全实践遵循OWASP数据库安全指南。

0