在本地局域网中让多台电脑访问同一个数据库,是常见的网络应用需求。以下是实现方法和步骤:
一、基本思路
将数据库部署在局域网中的一台电脑(或服务器)上,其他电脑通过该主机的 IP地址 + 端口 访问数据库。
二、实现步骤
1. 选择数据库类型
常见支持多客户端访问的数据库:
- MySQL / MariaDB
- PostgreSQL
- SQL Server
- SQLite(不推荐用于多机并发,适合单机)
- MongoDB(NoSQL)
推荐使用:MySQL 或 PostgreSQL,支持多用户并发连接。
2. 安装并配置数据库服务器
以 MySQL 为例:
(1) 在一台电脑(如 A 电脑)安装 MySQL 服务
# Ubuntu/Debian
sudo apt install mysql-server
# Windows: 下载 MySQL Installer 并安装
(2) 启动 MySQL 服务
sudo systemctl start mysql
sudo systemctl enable mysql
3. 配置允许远程访问
默认情况下,MySQL 只允许本地连接(localhost),需要修改配置:
(1) 修改配置文件 my.cnf 或 mysqld.cnf
路径通常为:
- Linux:
/etc/mysql/mysql.conf.d/mysqld.cnf - Windows:
C:ProgramDataMySQLMySQL Server x.xmy.ini
找到以下行并注释或修改:
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
0.0.0.0表示监听所有网络接口。
保存后重启 MySQL:
sudo systemctl restart mysql
4. 创建可远程访问的用户
登录 MySQL:
mysql -u root -p
执行 SQL 命令创建用户并授权:
-- 创建用户,允许从任意 IP 连接(也可指定特定 IP)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
-- 授予数据库权限(例如对 test_db 的所有权限)
GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
5. 获取服务器电脑的局域网 IP 地址
在 A 电脑上运行:
- Windows:
ipconfig→ 查找 IPv4 地址(如192.168.1.100) - Linux/macOS:
ifconfig或ip a
记下这个 IP(比如 192.168.1.100)
6. 允许防火墙通过数据库端口
确保防火墙放行数据库端口:
- MySQL 默认端口:
3306 - PostgreSQL:
5432 - SQL Server:
1433
例如,在 Ubuntu 上开放 3306:
sudo ufw allow 3306
Windows 用户:进入“高级安全防火墙” → 添加入站规则,放行 TCP 3306。
7. 其他电脑连接数据库
在 B、C 等电脑上,使用数据库客户端连接:
使用命令行连接 MySQL:
mysql -h 192.168.1.100 -P 3306 -u remote_user -p
使用图形工具(如 Navicat、DBeaver、HeidiSQL):
- 主机:
192.168.1.100 - 端口:
3306 - 用户名:
remote_user - 密码:
your_password
三、注意事项
-
安全性
- 避免使用 root 用户远程登录。
- 设置强密码。
- 如果只允许局域网内访问,可通过防火墙限制 IP 范围。
-
网络稳定性
- 确保所有设备在同一子网(如都属于
192.168.1.x)。 - 检查路由器是否隔离了设备间的通信(关闭 AP 隔离)。
- 确保所有设备在同一子网(如都属于
-
数据库性能
- 多人频繁读写时,注意数据库负载和锁机制。
-
SQLite 不适用
- SQLite 是文件型数据库,不适合多机并发访问,容易损坏。
四、替代方案(可选)
- 使用小型数据库服务器:如树莓派运行 MySQL,作为专用数据库主机。
- 使用 Docker 容器:在某台电脑上用 Docker 启动数据库服务,便于管理。
- NAS 设备:部分 NAS 支持安装数据库服务(如 Synology 的 MariaDB 套件)。
总结
✅ 实现多台电脑访问同一数据库的关键点:
- 数据库服务开启远程连接;
- 正确配置用户权限;
- 防火墙放行端口;
- 使用局域网 IP 进行连接。
只要配置正确,局域网内多台电脑即可稳定共享一个数据库。
如有具体数据库类型或操作系统,可提供更详细指导。
云小栈