上一篇                     
               
			  Linux服务器如何连接数据库
- Linux
- 2025-07-03
- 2541
 在Linux服务器上建立数据库连接,需安装数据库软件如MySQL或PostgreSQL,配置服务启动和用户权限,最后通过命令行工具(如mysql命令)或应用程序接口实现连接。
 
在Linux服务器上建立与数据库的连接是网站运维、后端开发及数据管理的核心操作,以下以常用的MySQL/MariaDB和PostgreSQL为例,提供详细步骤及安全实践,适用于Ubuntu/CentOS等主流发行版。
准备工作
-  确认数据库信息 - 数据库类型(MySQL/MariaDB/PostgreSQL等)
- 服务器IP地址(如远程数据库需防火墙放行端口:MySQL默认3306,PostgreSQL默认5432)
- 用户名、密码及数据库名称
- 权限配置(确保用户有远程访问权限)
 
-  服务器环境更新 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 输入密码后进入交互式命令行。 
-  连接远程数据库  mysql -h 远程IP -u 用户名 -p # MySQL psql -h 远程IP -U 用户名 -d 数据库名 # PostgreSQL 
方法2:通过配置文件连接(安全推荐)
-  创建配置文件避免明文密码: - MySQL:编辑 ~/.my.cnf[client] host=数据库IP user=用户名 password=密码 database=数据库名 
- PostgreSQL:编辑 ~/.pgpassecho "数据库IP:端口:数据库名:用户名:密码" > ~/.pgpass chmod 600 ~/.pgpass # 关键:限制权限仅当前用户可读 
 
- MySQL:编辑 
-  简化连接命令: mysql # 自动读取.my.cnf psql -h 数据库IP -U 用户名 # 自动匹配.pgpass 
测试连接与常见问题
基础测试
# MySQL示例:显示所有数据库 mysql -e "SHOW DATABASES;" # PostgreSQL示例:列出所有表 psql -c "dt"
连接失败排查
-  网络与防火墙 telnet 数据库IP 3306 # 测试端口通断(未安装telnet则用`nc -zv IP 端口`) - 若不通,检查: 
    - 云服务商安全组规则(如AWS安全组、阿里云ECS规则)
- 本地防火墙:sudo ufw allow 3306(Ubuntu)
 
 
- 若不通,检查: 
    
-  权限问题 - 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 
 
- MySQL:确保用户有远程访问权限 
-  服务状态检查 sudo systemctl status mysql # 或 mariadb sudo systemctl status postgresql 
安全最佳实践
-  最小权限原则 - 禁止使用root账户连接,创建专用数据库用户并限制权限:-- MySQL示例:仅允许访问特定数据库 GRANT SELECT, INSERT ON 数据库名.* TO '用户'@'%'; 
 
- 禁止使用
-  加密连接 - 启用SSL/TLS(MySQL需配置require_secure_transport=ON;PostgreSQL在postgresql.conf中设置ssl=on)。
 
- 启用SSL/TLS(MySQL需配置
-  密码管理 - 使用强密码(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数据库安全指南。
 
  
			 
			