本文是数据库与计算机网络系列刷题笔记的第五篇,重点梳理数据库服务与计算机网络服务的交叉应用、核心配置及常见考点。
一、数据库服务:从存储到网络接口
- 数据库连接方式
- 本地连接:客户端与数据库服务器在同一台物理机器上,通常通过IPC(进程间通信)或本地套接字连接,速度快、开销小。
- 网络连接:客户端通过网络协议远程访问数据库服务器。这是现代分布式应用的主流方式。
- 网络服务端口
- MySQL:默认端口 3306。
- PostgreSQL:默认端口 5432。
- Oracle:默认端口 1521。
- MongoDB:默认端口 27017。
- Redis:默认端口 6379。
- 记忆要点:这些端口是配置防火墙、客户端连接和服务监听的常见考点。
- 连接驱动与协议
- JDBC/ODBC:Java/通用数据库连接标准,提供统一的API,底层使用厂商特定的驱动程序通过网络与数据库通信。
- 特定协议:如MySQL使用其专有协议,PostgreSQL使用基于消息的协议。
二、计算机网络服务:支撑数据库访问的基石
- 传输层协议的选择
- TCP:绝大多数数据库服务(如MySQL, PostgreSQL, Oracle)默认使用TCP协议,因为它提供可靠的、面向连接的、有序的数据流传输,确保SQL语句和查询结果的完整送达。
- 注意点:某些缓存数据库(如Redis的早期版本)也主要使用TCP。UDP在数据库核心服务中极少使用,因其不可靠性。
- 服务发现与连接字符串
- 一个典型的数据库连接字符串(如JDBC URL)包含了网络寻址的关键信息:
jdbc:mysql://<主机名或IP>:<端口>/<数据库名>?参数=值
- 这里的
主机名或IP、端口直接对应计算机网络中的网络层(IP)和传输层(端口)寻址。
- 网络安全与访问控制
- 防火墙:必须在网络层面开放对应数据库服务的端口,客户端才能建立连接。
- 数据库自身权限:如MySQL的
GRANT语句可以指定允许连接的用户、客户端源IP地址('username'@'192.168.1.%')以及操作权限,这是应用层之上的访问控制。
- 加密连接:使用SSL/TLS(如MySQL的
REQUIRE SSL选项)对网络传输中的数据进行加密,防止窃听和篡改,涉及TCP连接之上的安全层。
三、典型场景与刷题要点
- 场景:应用服务器无法连接数据库
- 排查思路(经典考点):
- 网络连通性:应用服务器是否能
ping通数据库服务器的IP?
- 端口可达性:使用
telnet <数据库IP> <端口>或nc -zv <数据库IP> <端口>测试端口是否开放。
- 服务状态:数据库服务进程是否在运行并监听正确端口?(
netstat -tlnp | grep <端口>)
- 本地防火墙:数据库服务器本机的防火墙(如
iptables,firewalld)是否允许该端口入站?
- 数据库权限:连接使用的用户名、密码是否正确?该用户是否被授权从应用服务器的IP地址进行连接?
- 连接池(Connection Pool)
- 概念:为避免频繁创建和销毁昂贵的数据库连接,在应用层维护一个“池子”存放已建立的连接,用时取出,用完放回。
- 网络意义:减少了TCP三次握手/四次挥手的次数,降低了网络开销和数据库服务器并发连接压力。
- 常见组件:HikariCP, Druid, Tomcat JDBC Pool等。
- 分布式数据库与网络
- 主从复制:主库与从库之间通过网络传输二进制日志(Binlog)进行数据同步。考点包括网络延迟对复制滞后(Replication Lag)的影响。
- 分片(Sharding):数据分散在不同网络节点,应用层或中间件需要知道如何将查询路由到正确的分片节点,这依赖于配置好的网络地址映射。
四、
数据库不仅仅是数据存储系统,更是重要的网络服务提供者。理解其服务如何通过网络暴露(端口、协议),如何被安全访问(防火墙、权限、加密),以及如何在网络环境中高效运行(连接池、分布式),是后端开发、运维和架构设计的核心能力。刷题时,应着重练习将数据库知识与网络诊断、配置和安全知识相结合的综合应用题。
关键记忆:一个成功的远程数据库连接,需要网络通、端口开、服务在、权限有四个条件同时满足。