Linux下如何连接数据库服务器地址?,数据库连接命令是什么

在Linux中连接数据库服务器地址,核心方法是用命令行客户端工具,通过主机IP + 端口 + 账号 + 密码的组合直接远程登录,具体命令因数据库类型而异。下面按主流数据库逐一拆解,并解决连接过程中的常见坑。

linux怎么连接数据库服务器地址:先理清这四件事

不管用哪种数据库,本质都是“客户端程序 + 连接参数”,在动手前,先确认以下四项内容,缺一不可:

【linux】cetos服务器mariadb数据库服务自动关闭服务
加载中
【linux】cetos服务器mariadb数据库服务自动关闭服务
  • 数据库类型:MySQL、PostgreSQL、Redis、MongoDB 等,各自的客户端工具和命令完全不同。
  • 服务器地址:就是数据库服务器的 IP 或域名,本地连就填 0.0.1,跨机房或跨云环境就填公网 IP。
  • 端口号:MySQL 默认 3306,PostgreSQL 默认 5432,Redis 默认 6379,改过端口就必须显式指定。
  • 认证凭据:用户名和密码,通常由 DBA 或云平台创建分配。

行业共识认为,90% 的连接失败都与上述四项中的一项有关,尤其是“端口没开”和“账号主机限制”这两个问题最隐蔽。

linux命令行连接mysql数据库的完整步骤

MySQL 是目前中小团队使用面最广的关系型数据库,下面以它为例做全流程演示。

第一步:确认客户端是否安装

CentOS / RHEL 系列用以下命令确认:

which mysql

如果没输出,说明客户端未安装,分别执行:

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

部分国产 Linux 发行版(如 openEuler)使用 dnf install mysql,大同小异。

第二步:标准连接命令格式

mysql -h 数据库服务器IP -P 3306 -u 用户名 -p

执行后系统会提示输入密码,回车即可进入交互式 SQL 界面,拆解一下参数含义:

  • -h(host):数据库服务器地址,支持 IPv4、IPv6 和域名。
  • -P(port):注意是大写 P,端口号。
  • -u(user):登录账号。
  • -p(password):小写 p,表示需要输入密码,不要直接在 -p 后面写明文密码,容易泄露到 history 里。

第三步:远程连接的三个前置条件

很多新手卡在这一步命令完全正确,但报错 Access denied 或 Can't connect,逐一排查:

  1. 数据库账号允许远程登录

    Linux下如何连接数据库服务器地址?,数据库连接命令是什么

    ,默认的 root 账号往往只允许 localhost 登录,需要到数据库服务器上执行:

CREATE USER 'app_user'@'%' IDENTIFIED BY '强密码';GRANT ALL PRIVILEGES ON . TO 'app_user'@'%';FLUSH PRIVILEGES;

'app_user'@'%' 中的 表示允许任意 IP 连接,出于安全考虑,也可以写特定 IP 如 'app_user'@'192.168.1.%'。

  1. 防火墙放行对应端口,云服务器需要检查安全组规则,物理机或虚拟机需要检查 firewalld 或 iptables:
# firewalld 放行 3306
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
# 或者查看 iptables 规则
iptables -L -n | grep 3306
  1. 数据库服务监听地址不能只绑 127.0.0.1,查看 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或 /etc/my.cnf(CentOS),确认 bind-address 这一项,如果是 0.0.1,改成本机局域网 IP 或 0.0.0,然后重启服务:
sudo systemctl restart mysqld   # 或 mysql

快速验证网络连通性

在连接数据库之前,可以先确认网络层面是否可达:

# 检查端口是否能通
telnet 数据库服务器IP 3306
# 或使用 nc
nc -zv 数据库服务器IP 3306

如果端口不通,说明问题出在网络或防火墙,不用再纠结账号密码。

数据库服务器连不上什么原因:常见报错排查手册

实操中你会遇到五花八门的报错,下面按出现频率排序。

报错信息 根本原因 解决方案
ERROR 2003 (HY000): Can't connect to MySQL server 网络不通或端口未监听 检查防火墙、安全组、bind-address、服务状态
ERROR 1045 (28000): Access denied for user 账号密码错误或主机限制 核实密码、检查账号的 host 范围
ERROR 1130 (HY000): Host is not allowed to connect 账号只允许 localhost 登录 重新授权为 'user'@'%' 或具体 IP
Connection timed out 防火墙丢包或 IP 不可达 排查公网链路、安全组规则
Public Key Retrieval is not allowed 使用 SSL 连接的客户端配置

Linux下如何连接数据库服务器地址?,数据库连接命令是什么

连接参数加 useSSL=false 或配置证书

PostgreSQL 和 Redis 的连接差异

PostgreSQL 默认使用 psql 客户端:

psql -h 数据库服务器IP -p 5432 -U 用户名 -d 数据库名

PG 的连接复杂度略高于 MySQL,因为还需要在 pg_hba.conf 中配置认证方式,常见的 scram-sha-256 或 md5 认证会导致连接报错,需要确认该文件的放行规则。

Redis 多数场景不需要账号,但默认只允许本机访问,远程连接命令:

redis-cli -h 数据库服务器IP -p 6379 -a 密码

Redis 的坑集中在 protected-mode yes 和 bind 127.0.0.1 这两个默认配置上,批量连接时要改成:

bind 0.0.0.0
protected-mode no
requirepass 复杂密码

注意 bind 0.0.0.0 后必须在防火墙层严格控制来源 IP,否则极易被扫描爆破。

数据库连接工具哪个好用:命令行之外的效率之选

虽然 Linux 命令行连接是基本功,但日常开发中多数人会搭配图形化工具减少重复劳动,这里不讨论具体产品,只按场景给建议:

纯命令行的进阶用法配置文件免密

在 ~/.my.cnf 中写入:

[client]
host=数据库服务器IP
user=用户名
password=密码

之后直接执行 mysql 就能登录,但这个方法等同于明文存储密码,仅建议在受控的跳板机上使用,并配合 chmod 600 ~/.my.cnf 限制文件权限。

图形化工具对比

工具 适合场景 核心优势
DBeaver 跨数据库通用 支持 MySQL、PG、Oracle、Redis 等几乎所有主流库
Navicat 商业付费 交互体验流畅,数据导入导出方便
DataGrip Java 开发者 IDE 一体化,代码提示完善
TablePlus 轻量敏捷 启动快,界面简洁,适合快速查询

整体来看,命令行适合写脚本、排查问题、服务器端操作;图形化工具适合日常开发查询、导出数据、看表结构,两者配合效率最高。

进阶场景:生产环境连接数据库的几种姿势

通过 SSH 隧道加密连接

生产环境数据库通常不直接暴露公网端口,较稳妥的连接方式是 SSH 隧道:

Linux下如何连接数据库服务器地址?,数据库连接命令是什么

ssh -L 3307:数据库内网IP:3306 用户@跳板机公网IP

该命令的含义是:把本机的 3307 端口映射到跳板机内网能访问的数据库 3306 端口,之后在本地执行:

mysql -h 127.0.0.1 -P 3307 -u 用户名 -p

配置连接池参数

如果应用服务器需要连接数据库,建议在连接串中准确设置超时时间和连接池大小,以 Golang 的 sql 包为例,常用参数包括 SetMaxOpenConns(100)、SetConnMaxLifetime(5 time.Minute),防止短连接风暴把数据库打挂。

多数据库地址场景:从配置文件读取

工程化实践中,不建议把数据库地址硬编码到代码里,较常规的做法是把连接串放到 .env 环境变量或配置中心,按环境(dev/staging/prod)动态加载,这样切换数据库服务器地址时只需改一份配置,不用重新发版。

Q&A:linux连接数据库服务器地址高频问题解答

Q1:同一台 Linux 上能同时装 MySQL 和 PostgreSQL 客户端吗?

可以,两者客户端工具包名不同,相互独立,安装互不影响,CentOS 上分别执行 yum install mysql 和 yum install postgresql 即可,要注意连接不同数据库时使用对应的命令和端口号。

Q2:连接时报 Access denied,但账号密码肯定没错,可能是什么原因?

多数情况下与账号绑定的 host 范围有关,MySQL 账号匹配遵循“最小匹配优先”原则,例如你要连接的主机是 168.1.10,而账号同时存在 'user'@'%' 和 'user'@'localhost' 两条记录,MySQL 可能会匹配到更精确的 localhost 记录并拒绝远程连接,用 SELECT user, host FROM mysql.user; 在服务器上排查一下,把不需要的 host 记录删掉或统一授权。

Q3:Linux 命令行的 mysql -h localhost 和 mysql -h 127.0.0.1 有什么区别?

localhost 默认走 Unix socket 文件连接,0.0.1 走 TCP/IP 协议,在很多场景下,mysql -h localhost 会跳过 TCP 层,直接通过 socket 通信,如果你本机没启用 socket 或路径不对,就会连接失败,而使用 0.0.1 则能够稳定连接。

Linux 连接数据库服务器地址的核心始终是:确认网络可达、确认端口监听、确认账号授权、确认防火墙放行,这四步走完,绝大多数连接问题都会迎刃而解,掌握这一套流程后,不管是 MySQL、PostgreSQL 还是 Redis,底层逻辑都是相通的。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/610856.html

赞 (0)
导览系统服务器有哪些类型?,如何选择配置?
上一篇 2026年8月30日 21:00
Win7系统连接服务器失败怎么办,网络错误如何解决?
下一篇 2026年8月30日 21:05

相关推荐

  • 服务器测评,实测体验与数据对比,服务器测评推荐

    2026年服务器选型的核心结论是:对于高并发互联网业务,首选基于ARM架构的国产化云原生实例以兼顾性能与合规;对于传统企业核心数据库,仍建议采用Intel/AMD x86架构的高主频实例以确保最大兼容性;个人开发者则推荐按需购买的轻量级应用服务器以控制成本,核心架构与性能实测对比在2026年的云计算市场,底层硬……

    2026年5月16日
    7800
  • ajax上传到服务器端失败怎么办?ajax文件上传代码示例

    通过Ajax实现文件上传的核心在于使用FormData对象构建请求体,配合XMLHttpRequest或Fetch API发送POST请求,从而在无需刷新页面的情况下将二进制数据流传输至服务器,传统的表单提交会导致页面刷新,用户体验割裂,而Ajax技术完美解决了这一痛点,它允许浏览器在后台与服务器进行少量数据交……

    2026年6月5日
    4900
  • AI智能机器人早教机真的有用吗?哪款性价比高

    AI智能机器人早教机并非简单的电子玩具,而是通过自然语言处理与情感交互技术,为3至10岁儿童提供个性化启蒙教育的智能终端,其核心价值在于替代低效的机械背诵,实现“因材施教”的沉浸式学习体验,在2026年的家庭育儿场景中,家长对教育工具的期待已从“功能堆砌”转向“有效陪伴”,传统的点读笔或平板只能提供单向的内容输……

    2026年6月7日
    3300
  • AIoT社区是什么?AIoT社区有哪些优势

    AIoT社区的核心价值在于构建一个连接技术、产品与用户的生态系统,通过数据驱动和智能化服务,提升社区运营效率与居民生活品质,AIoT社区的核心优势智能化管理:通过物联网设备(如智能门禁、环境监测传感器)实时采集数据,结合AI算法优化社区资源配置,降低能耗20%-30%,用户体验提升:居民可通过APP一键报修、预……

    2026年3月21日
    10400
  • 构建pdfjs遇到报错怎么办?pdfjs集成到vue项目

    构建pdfjs的核心在于通过npm安装依赖、配置webpack打包并引入核心库,最终实现浏览器端高效、安全的PDF渲染,无需依赖后端转换服务,在2026年的Web开发语境下,前端工程师对文档处理的需求早已超越了简单的“查看”层面,随着企业级应用对数据隐私和安全性的要求日益严苛,直接在客户端解析PDF文件成为了主……

    程序编程 2026年5月27日
    6600
  • ajax刷新数据库怎么操作?如何实现页面局部刷新

    AJAX刷新数据库的核心在于利用JavaScript异步请求与后端API交互,实现页面局部更新而无需整体重载,从而显著提升用户体验与数据实时性,为什么传统刷新方式正在被淘汰在早期的Web开发中,每次用户点击按钮或提交表单,浏览器都会向服务器发送完整请求,服务器返回整个HTML页面,浏览器重新解析并渲染所有内容……

    2026年6月5日
    4910
  • 如何在ASP中高效实现数组去重并避免重复项的技巧探讨?

    在ASP中去除数组重复项最高效可靠的方法是使用Scripting.Dictionary对象的键唯一特性实现,该方法时间复杂度为O(n),显著优于循环嵌套方案,且能保留元素原始顺序,以下是详细实现:<%Function RemoveDuplicates(arr) Dim dict, item, result……

    2026年2月4日
    13600
  • 人工智能如何应用于实际场景?|人工智能深度学习应用领域

    AI智能与深度学习:驱动智能时代的核心引擎深度学习是当前人工智能实现突破性进展的核心驱动力与关键技术基础, 它通过模拟人脑神经网络的复杂结构,赋予机器从海量数据中自主学习、识别模式、做出预测和决策的能力,正在深刻重塑各行各业, 深度学习的核心原理:神经网络的力量之源深度学习并非全新概念,但其爆发性增长得益于三大……

    2026年2月14日
    16230
  • 我的世界服务器32q乱码棒怎么做?,我的世界乱码棒怎么合成

    在Minecraft服务器中制作32q乱码棒,最直接的方法是通过/give指令配合NBT标签生成带乱码名称和自定义攻击属性的物品,但长期稳定使用更推荐通过服务器插件或数据包实现,我的世界32q乱码棒是怎么产生的乱码棒并非官方定义物品,而是玩家利用游戏机制制作的特殊装备,它的核心特征包含两点:一是物品名称显示为乱……

    2026年7月24日
    300
  • 函数实例并发上限与请求排队关系

    函数实例的并发上限决定了同一时刻能处理多少请求,超过上限的请求不会直接报错,而是进入队列等待处理,这就是请求排队现象,理解两者关系,是降低Serverless延迟、避免超时和成本浪费的核心,函数实例并发上限是什么意思?请求排队从哪来函数实例可以理解为一台微型的“工作台”,每个实例启动后,只负责处理交给它的请求……

    2026年9月11日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注