要查看VPS(虚拟专用服务器)中的数据库,首先需要明确数据库的类型(如MySQL、MariaDB、PostgreSQL、MongoDB等),因为不同数据库的查看方法和工具存在差异,以下是针对常见数据库类型的详细操作步骤,包括连接方式、查询方法及注意事项,帮助用户高效、安全地访问和管理VPS数据库。

准备工作:确认数据库环境与权限
在查看数据库前,需确保以下基础条件满足:
- 数据库类型确认:通过VPS命令行输入
mysql --version(MySQL/MariaDB)、psql --version(PostgreSQL)或mongod --version(MongoDB)确认数据库版本及类型。 - 连接信息获取:包括数据库地址(默认为localhost)、端口(MySQL默认3306,PostgreSQL默认5432,MongoDB默认27017)、用户名及密码,这些信息通常在数据库安装时配置,或由VPS服务商提供。
- 权限检查:确保所用用户具备足够的查询权限,MySQL中需拥有
SELECT权限,PostgreSQL需具备CONNECT和SELECT权限,MongoDB需对目标数据库有read权限,若权限不足,需联系管理员授权(如MySQL可通过GRANT SELECT ON database_name.* TO 'username'@'host';授权)。
通过命令行工具查看数据库
命令行是管理数据库最直接的方式,适合服务器端操作或远程SSH连接场景。
MySQL/MariaDB
MySQL和MariaDB(MySQL的分支)操作高度相似,核心工具为 mysql 客户端。
-
连接数据库:
(图片来源网络,侵删)mysql -h 数据库地址 -P 端口 -u 用户名 -p
连接本地MySQL:
mysql -h localhost -P 3306 -u root -p,输入密码后进入MySQL命令行。 -
查看所有数据库:
SHOW DATABASES;
结果示例:
| Database |
|-------------------|
| information_schema |
| mysql |
| performance_schema |
| your_database | -
切换数据库:
(图片来源网络,侵删)USE your_database;
-
查看数据库中的表:
SHOW TABLES;
-
查询表数据:
SELECT * FROM table_name LIMIT 10; -- 查询前10行数据 SELECT column1, column2 FROM table_name WHERE condition; -- 条件查询
-
查看表结构:
DESCRIBE table_name;
PostgreSQL
PostgreSQL使用 psql 客户端,语法与MySQL略有不同。
-
连接数据库:
psql -h 数据库地址 -p 端口 -U 用户名 -d 数据库名
连接本地PostgreSQL:
psql -h localhost -p 5432 -U postgres -d mydb,输入密码后进入psql环境。 -
查看所有数据库:
\l
结果示例:
| Name | Owner | Encoding | Collate | Ctype | Access |
|-----------|----------|----------|---------|-------|------------|
| mydb | postgres | UTF8 | en_US | en_US | |
| postgres | postgres | UTF8 | en_US | en_US | | -
切换数据库:
\c mydb
-
查看当前数据库的表:
\dt
-
查询表数据:
SELECT * FROM table_name LIMIT 10; -- 查询前10行数据 SELECT column1, column2 FROM table_name WHERE condition; -- 条件查询
-
查看表结构:
\d table_name
MongoDB
MongoDB是NoSQL数据库,使用 mongosh(新版)或 mongo(旧版)客户端。
-
连接数据库:
mongosh 数据库地址:端口/数据库名
连接本地MongoDB:
mongosh localhost:27017/mydb,无需密码(若启用认证,需添加-u 用户名 -p 密码)。 -
查看所有数据库:
show dbs;
结果示例:
| Database | Size |
|------------|-------|
| admin | 0.000GB|
| config | 0.000GB|
| local | 0.000GB|
| mydb | 0.001GB| -
切换数据库:
use mydb;
-
查看当前数据库的集合(表):
show collections;
-
查询集合数据:
db.collection_name.find().limit(10); -- 查询前10条数据 db.collection_name.find({ field: value }); -- 条件查询 -
查看集合结构:
db.collection_name.findOne(); -- 查看单条数据的字段结构
通过图形化界面工具查看数据库
对于不熟悉命令行的用户,图形化界面工具(GUI)更直观,支持可视化查询和管理。
MySQL/MariaDB:phpMyAdmin
phpMyAdmin是流行的Web端MySQL管理工具,需在VPS上部署(如通过LAMP/LNMP环境安装)。
- 访问方式:浏览器输入
http://VPS_IP/phpmyadmin,输入数据库用户名和密码登录。 - 操作步骤:
- 在左侧“数据库”列表中选择目标数据库;
- 点击“表”列表中的表名,可查看表数据(浏览标签)、表结构(结构标签);
- 点击“SQL”标签,可执行自定义查询语句(如
SELECT * FROM table_name WHERE id = 1)。
PostgreSQL:pgAdmin
pgAdmin是PostgreSQL官方GUI工具,支持跨平台(Windows/macOS/Linux)。
- 安装与配置:下载并安装pgAdmin,添加服务器连接(右键“Servers”→“Create”→“Server”),输入VPS的数据库地址、端口、用户名及密码。
- 操作步骤:
- 连接服务器后,展开左侧数据库树形结构,选择目标数据库;
- 右键点击表名,选择“View Data”查看数据,“View/Edit Table”查看表结构;
- 使用“Query Tool”执行SQL查询语句。
MongoDB:MongoDB Compass
MongoDB Compass是官方GUI工具,提供可视化查询和性能分析功能。
- 安装与连接:下载并安装Compass,点击“Connect”,输入VPS的数据库地址、端口及认证信息。
- 操作步骤:
- 在左侧“Databases”列表中选择目标数据库;
- 点击集合名称,可在“Documents”标签中查看数据,支持条件筛选(如JSON格式查询条件);
- “Schema”标签可展示集合的字段类型和索引信息。
通过远程连接工具查看数据库
若需从本地电脑访问VPS数据库,可通过SSH隧道或直接开放数据库端口(需谨慎,建议绑定特定IP并启用SSL)。
SSH隧道(推荐)
通过SSH加密隧道转发数据库端口,避免直接暴露数据库服务。
- 操作步骤(以Windows为例,使用PuTTY):
- PuTTY中连接VPS,在“Connection”→“SSH”→“Tunnels”下添加转发:
- 源端口:本地任意端口(如3307);
- 目标:
localhost:3306(数据库端口);
- 保存并打开SSH连接,本地工具(如Navicat)连接时,主机填
localhost,端口填3307,用户名和密码为数据库凭据。
- PuTTY中连接VPS,在“Connection”→“SSH”→“Tunnels”下添加转发:
直接开放数据库端口(不推荐)
若需直接远程连接,需修改数据库配置文件(如MySQL的 /etc/mysql/mysql.conf.d/mysqld.cnf),将 bind-address 改为 0.0.0,并重启数据库服务,在VPS防火墙(如iptables、firewalld)开放对应端口,并限制访问IP(如仅允许公网IP访问)。
注意事项
-
安全性:
- 避免在命令行中直接暴露密码(使用
-p时会提示输入,而非明文); - 数据库用户权限遵循最小化原则,避免使用root超级用户;
- 敏感数据查询后及时关闭连接,防止未授权访问。
- 避免在命令行中直接暴露密码(使用
-
性能优化:
- 大数据量查询时,使用
LIMIT分页,避免一次性加载过多数据; - 复杂查询前可通过
EXPLAIN分析执行计划(如MySQL的EXPLAIN SELECT * FROM table_name;)。
- 大数据量查询时,使用
-
错误处理:
- 连接失败时,检查数据库服务是否运行(
systemctl status mysql/systemctl status postgresql)、端口是否开放、用户名密码是否正确; - 查询语法错误时,根据数据库返回的提示(如MySQL的
ERROR 1064)修正语句。
- 连接失败时,检查数据库服务是否运行(
相关问答FAQs
Q1: 忘记数据库密码怎么办?
A1:
- MySQL/MariaDB:通过安全模式重置密码,停止数据库服务(
systemctl stop mysql),跳过权限表启动(mysqld_safe --skip-grant-tables &),无密码登录后执行UPDATE mysql.user SET password=PASSWORD('新密码') WHERE User='root';,刷新权限(FLUSH PRIVILEGES;),重启服务。 - PostgreSQL:切换到postgres用户(
su - postgres),执行psql -c "ALTER USER postgres PASSWORD '新密码';"。 - MongoDB:若未启用认证,直接启动mongosh修改;若已启用,需通过
--authbypass参数启动服务后重置用户密码。
Q2: 如何查看数据库的存储大小?
A2:
- MySQL/MariaDB:
SELECT table_schema AS '数据库', SUM(data_length + index_length) / 1024 / 1024 AS '大小(MB)' FROM information_schema.tables GROUP BY table_schema;
- PostgreSQL:
SELECT datname AS '数据库', pg_database_size(datname) / 1024 / 1024 AS '大小(MB)' FROM pg_database;
- MongoDB:
db.stats(); -- 查看当前数据库大小
或
db.runCommand({ listDatabases: 1, nameOnly: false }).databases.forEach(db => { print(db.name + ": " + db.sizeOnDisk / 1024 / 1024 + "MB"); });
