Linux
从命令行列出所有 MySQL 数据库只需一条 SQL 语句 — SHOW DATABASES; — 在使用 mysql 客户端完成 MySQL 服务器身份验证后执行即可。此方法适用于任何运行 MySQL 5.7、MySQL 8.x 或兼容 MariaDB 服务器的 Linux 发行版,需要具备 SHOW DATABASES 权限或超级用户访问权限。 本指南不仅涵盖基本命令,还介绍了身份验证选项、权限范围可见性、非交互式脚本模式、性能模式过滤,以及即使是经验丰富的管理员也容易遇到的常见故障。 前提条件 在继续之前,请确认以下事项: MySQL Server 或 MariaDB 已安装且服务处于运行状态。 您拥有至少具备 SHOW DATABASES 权限的用户账户,或以 root 身份进行身份验证。 mysql 客户端二进制文件在您的 Shell 的 PATH 中可用(使用 which mysql 验证)。 如果您正在管理远程服务器 — 例如 VPS 托管环境 — 还需确保 […]
Git 是一个分布式版本控制系统(DVCS),它随时间记录项目文件树的快照,允许任意数量的贡献者并行工作而不会覆盖彼此的更改。每位开发者在本地机器上都持有完整的仓库副本——包括完整的提交历史——消除了单点故障并支持完全离线的工作流程。 Git 由 Linus Torvalds 于 2005 年 4 月创建,用于取代 BitKeeper 进行 Linux 内核开发。Git 从基本原则出发,围绕三个不可妥协的需求进行设计:速度、数据完整性以及对非线性分布式工作流的支持。这些设计目标至今仍定义了 Git 与其前身的本质区别,也是它在二十多年后仍是主流 VCS 的原因。 Git 与集中式版本控制的区别 理解 Git 的架构需要与集中式系统进行直接比较,例如 Subversion(SVN)或 CVS,这些系统中单一权威服务器持有规范仓库,开发者检出浅层工作副本。 维度 Git(分布式) SVN(集中式) — — — 仓库模型 每个节点都有完整克隆 精简工作副本,服务器保存历史 离线能力 完整的提交、分支、diff、日志 只读;提交需要服务器 分支成本 近乎零(指针操作) 昂贵的目录复制 单点故障 无——任何克隆都可恢复 服务器宕机导致所有提交中断 合并策略 三路合并 + rebase 仅三路合并 历史完整性 SHA-1/SHA-256 内容哈希 顺序修订号 网络依赖 […]
Java applet在任何现代网络浏览器中均不再受支持,包括Mozilla Firefox。Mozilla从2017年的Firefox 52开始永久取消了NPAPI插件支持——正是这一架构使Java applet成为可能。如果您今天需要运行旧版基于Java的网络应用程序,您无法简单地在当前Firefox版本中切换某个设置;您必须使用三种专门的变通方法之一,每种方法都有不同的安全性和操作权衡。 本指南以精确的技术细节涵盖了每种可行方法,包括大多数教程所忽略的风险。 为何Java在现代Firefox中不再有效 了解根本原因可以避免浪费排查时间。浏览器中的Java applet依赖于NPAPI(Netscape插件应用程序编程接口),这是一种可追溯至1990年代中期的插件架构。NPAPI赋予插件几乎不受限制地访问主机系统的权限,使其成为远程代码执行漏洞的持续攻击面。 弃用时间线如下: 2015年:Google Chrome完全放弃了NPAPI支持。 2016年:Mozilla开始在Firefox中默认屏蔽NPAPI插件。 2017年3月:Firefox 52成为最后一个支持NPAPI的版本。Firefox ESR 52将该支持延续至2018年中期。 2018年至今:所有Firefox版本均不含任何NPAPI支持。在现代构建版本中,没有任何扩展、标志或about:config调整能够恢复它。 Oracle自身在JDK 9(2017年)中弃用了Java浏览器插件,并在JDK 11中将其完全移除。这意味着即使Firefox仍接受NPAPI插件,该插件本身也不再随现代Java发行版一同提供。 实际含义:任何声称在当前版本中”在Firefox中启用Java”的方法,要么具有误导性,要么涉及在底层运行一个独立的旧版浏览器引擎。 三种方法的比较 方法 安全风险 复杂度 费用 最适合 — — — — — 旧版Firefox ESR 52 高——存在未修补的CVE 低 免费 在隔离机器上快速进行一次性访问 IE Tab / 浏览器模拟器 中——取决于IE版本 低至中 免费/付费套餐 在受管理的Windows工作站上偶尔访问 搭载旧版浏览器的虚拟机 低——完全隔离 高 免费(VirtualBox) 频繁或长期使用Java applet 方法一:使用Firefox […]
Cloudflare错误520是一个HTTP状态码,当Cloudflare的边缘网络从您的源服务器收到空的、意外的或无法解析的响应时返回。与表示网关超时或错误网关的502或504不同,520是Cloudflare对所有不符合任何已知HTTP规范的响应的统称——这意味着源服务器在技术上已响应,但其返回的内容无效、被截断或结构异常。 从实际角度来看,错误520意味着Cloudflare与您的源服务器之间的TCP连接已建立,但HTTP层握手失败。用户会看到一个Cloudflare品牌的错误页面,显示消息“Web server is returning an unknown error”——您的网站对他们来说实际上已无法访问。 触发错误520的原因:根本原因解析 在修改任何配置之前,了解确切的故障模式至关重要。错误520不是单一问题——它是一类症状。以下是最常见的原因,按生产环境中的发生频率排列。 源服务器返回没有HTTP状态行的空响应体。这是最常见的触发原因。Apache或Nginx可能在响应过程中崩溃,导致Cloudflare持有一个没有数据到达的开放TCP套接字。 防火墙或安全软件阻止了Cloudflare的IP范围。ModSecurity、Fail2Ban、CSF(ConfigServer Security & Firewall)或Wordfence等应用层插件可能会静默丢弃来自Cloudflare出口IP的数据包,导致连接在没有正确HTTP响应的情况下被重置。 Cloudflare与源服务器之间的SSL/TLS握手不匹配。如果Cloudflare设置为”Full (Strict)”模式,但您的源服务器拥有过期、自签名或配置错误的证书,则TLS协商会在任何HTTP数据交换之前失败。 HTTP响应头格式错误或过大。Cloudflare对响应头强制执行32 KB的硬性限制。任何单个响应头或超过此限制的组合响应头集都会导致520。这是编写不当的PHP应用程序将大量会话数据或调试输出转储到响应头中的常见边缘情况。 源服务器进程崩溃或OOM(内存不足)终止。如果Web服务器工作进程(例如Nginx工作进程或PHP-FPM池)在请求处理过程中被Linux OOM终止器终止,连接会突然断开。 在发送响应头之前发生应用程序级异常。在调用res.writeHead()之前发生的PHP致命错误、未处理的Python异常或Node.js崩溃,会导致Cloudflare无法解析的空响应。 源服务器重置连接(TCP RST)。源服务器主动重置TCP连接,Cloudflare将其解释为未知响应。 错误520与其他Cloudflare 5xx错误的对比 区分520与类似的Cloudflare错误可以避免浪费诊断精力。 错误代码 含义 主要原因 — — — 520 来自源服务器的未知/意外响应 空响应、格式错误的响应头、TCP RST 521 源服务器拒绝连接 源Web服务器宕机;端口80/443未监听 522 连接超时 源服务器接受TCP连接耗时过长 523 源服务器不可达 DNS解析失败或到源IP的路由问题 524 发生超时 TCP已连接但源服务器响应耗时过长 525 SSL握手失败 TLS证书不匹配或密码套件不兼容 526 SSL证书无效 源证书不受Cloudflare信任 […]
删除 MySQL 数据库将永久移除其中所有的表、存储过程、视图、触发器和数据。该操作通过 SQL DROP DATABASE 语句执行,在引擎层面不可逆——命令执行完成后不存在内置的撤销机制。 在使用以下任何方法之前,您必须拥有目标数据库的 DROP 权限,或全局 SUPER 权限。否则,MySQL 将返回 ERROR 1044 (42000): Access denied。如果您在 VPS 托管方案上管理您的环境,通常拥有完整的 MySQL root 级别访问权限,可以自由授予或撤销权限。 前提条件:删除数据库前必须执行的操作 跳过准备工作是导致灾难性、不可恢复数据丢失的最常见原因。请将以下步骤视为强制要求,而非可选项。 1. 创建经过验证的备份 使用 mysqldump 将整个数据库导出为压缩 SQL 文件: mysqldump -u username -p –single-transaction –routines –triggers database_name | gzip > /backups/database_name_$(date +%F).sql.gz 关键参数说明: –single-transaction — 在不锁定 InnoDB 表的情况下获取一致性快照 –routines — 导出存储过程和函数 –triggers […]
Ubuntu 仍然是消费级硬件和生产服务器基础设施中部署最广泛的 Linux 发行版。在着手安装之前,了解精确的硬件门槛——以及低于这些门槛的实际影响——是稳定部署与令人沮丧的故障排查之间的分水岭。 直接回答:Ubuntu Desktop 24.04 LTS 最低需要 2 GHz 双核处理器、4 GB RAM 和 25 GB 磁盘空间。Ubuntu Server 24.04 LTS 最低可在 512 MB RAM 和 2.5 GB 存储空间上运行,使其同样适用于资源受限的环境和云 VPS 实例。 为何不同 Ubuntu 变体的系统要求各不相同 Ubuntu 提供多种不同的安装配置,每种配置的资源占用量存在根本差异。基于 GNOME 的桌面版由于其合成器、显示服务器(自 22.04 起默认使用 Wayland)以及捆绑的应用程序套件,开销最大。服务器版去除了所有这些组件,留下一个针对吞吐量和正常运行时间优化的无头环境。最小安装介于两者之间:保留了图形安装程序路径,但省略了 LibreOffice、Thunderbird 和大多数媒体应用程序。 在下载 ISO 之前了解哪种配置符合您的使用场景,可以避免浪费时间,也无需在安装后清理多余的软件包。 Ubuntu 桌面版系统要求 Ubuntu 桌面版面向终端用户工作站、开发者机器和教育环境。GNOME Shell 桌面环境是资源消耗的主要驱动因素。 最低要求(Ubuntu Desktop 24.04 […]
traceroute 是一种网络诊断工具,用于映射 IP 数据包从您的计算机到目标主机所经过的确切路径,记录沿途每个中间路由器(跳点),并测量到每个跳点的往返时间(RTT)。它是隔离延迟峰值、丢包或路由异常是否源于本地网络、ISP 基础设施、传输骨干网或目标服务器本身的最有效工具。 当您运行 traceroute 时,您的系统会发送一系列具有递增 TTL(生存时间)值的探测数据包。每个将 TTL 递减至零的路由器都会返回 ICMP “超时”消息,从而揭示其身份和响应时间。这一机制使 traceroute 与简单的 `ping` 有着本质区别——它暴露了完整的路由拓扑,而不仅仅是端到端的可达性。 Traceroute 的底层工作原理 了解底层机制可以防止对结果的误解——即使是经验丰富的管理员也会犯这种错误。 Windows(`tracert`)默认发送 ICMP Echo Request 数据包。 Linux 和 macOS(`traceroute`)默认向高编号端口(33434+)发送 UDP 数据报,但这是可配置的。 每个探测每跳发送三次,每行产生三个 RTT 测量值。 对 ICMP/UDP 进行速率限制或丢弃的路由器将显示星号(`* * *`),但这并不一定意味着其后的路径已中断。 操作系统之间的这种行为差异至关重要:在 Linux 上显示无响应的跳点在 Windows 上可能正常响应,这仅仅是因为路由器的 ACL 阻止了 UDP 但允许 ICMP。 如何在 Windows 上运行 Traceroute 第一步:打开命令提示符 按 `Win […]
服务器身份验证是验证您的身份以获得对远程系统、托管控制面板或在线服务的授权访问的过程。三种主要方法是基于密码的 SSH、SSH 密钥对身份验证和基于 Web 的控制面板登录——每种方法都有不同的安全特性、使用场景和故障模式,每位管理员都必须了解。 无论您管理单个 VPS 托管实例还是一批裸金属服务器,掌握这些登录方法将直接决定您的运营安全态势。本指南深入介绍每种方法,包括每种方法背后的技术原理、文档中鲜少提及的实际陷阱,以及您可以立即应用的加固清单。 SSH 登录:密码身份验证与基于密钥的身份验证 SSH(安全外壳协议,RFC 4253)默认通过 TCP 端口 22 在您的客户端和远程服务器之间建立加密隧道。在选择身份验证方法之前,请了解每种方法实际上能防御什么。 任何 SSH 会话的前提条件 运行 `sshd` 且端口 22(或自定义端口)可访问的远程服务器 SSH 客户端:Linux/macOS 上的原生 `ssh`、OpenSSH for Windows(内置于 Windows 10/11),或适用于旧版 Windows 环境的 PuTTY 有效凭据:用户名/密码对或已配置的密钥对 使用用户名和密码登录 打开终端并运行: “`bash ssh username@server_ip_address “` 将 `username` 替换为您的系统账户名,将 `server_ip_address` 替换为服务器的 IPv4、IPv6 或完全限定域名(FQDN)。 “`bash ssh deploy@203.0.113.45 “` 如果服务器在非标准端口上运行 SSH(一种常见的加固做法): “`bash […]
Linux中的`history`命令是Bash shell的内置工具,用于记录、显示和管理终端会话中执行的每条命令。它读取和写入`~/.bash_history`(每个用户主目录中的纯文本文件),使您能够在会话之间调用、搜索、重新执行和审计命令,而无需重新输入。 对于系统管理员和高级用户而言,Bash历史记录不仅仅是一个便利功能——它是操作审计跟踪、调试工具和生产力倍增器。了解其内部机制、配置变量和安全影响,是区分普通用户与能从命令行中获取最大价值的工程师的关键所在。 Bash历史记录的内部工作原理 当您打开终端会话时,Bash会将`~/.bash_history`的内容加载到内存列表中。当您执行命令时,这些命令会被追加到内存缓冲区中。当会话正常关闭(通过`exit`或`logout`)时,缓冲区会根据环境变量定义的规则刷新回`~/.bash_history`。 这种架构有一个关键影响:如果您的会话异常终止(断电、SSH断开、`kill -9`),该会话中的命令可能永远不会被写入磁盘。当管理员无法追踪在中断会话期间运行的命令时,这是一个常见的困惑来源。 两个shell选项可以修改这种默认的退出时写入行为: `shopt -s histappend` — 将新历史记录追加到`~/.bash_history`,而不是覆盖它。这在多会话环境中至关重要。 `PROMPT_COMMAND='history -a'` — 强制Bash在每次提示后将最新命令追加到历史文件,实现实时持久化和跨终端可见性。 如果没有`histappend`,最后关闭的shell将获胜——它会覆盖历史文件,悄无声息地丢弃所有其他并发会话的条目。 `history`命令的基本用法 显示完整命令历史记录 “`bash history “` 输出已存储命令的编号列表。左侧的数字是历史索引,用于事件指示符。 显示特定数量的最近命令 “`bash history 20 “` 显示最近20条命令。当您需要快速查看最近活动而无需滚动数百条条目时非常有用。 立即将当前会话历史记录写入文件 “`bash history -w “` 强制将内存中的历史缓冲区立即写入`~/.bash_history`。在关闭关键会话之前使用此命令,以确保不会丢失任何内容。 从文件读取历史记录到当前会话 “`bash history -r “` 将`~/.bash_history`重新加载到当前会话的内存中。当您想访问同一登录期间在另一个终端窗口中输入的命令时非常有用。 调用和重新执行命令 使用`!`的事件指示符 Bash的事件指示符语法允许通过引用直接重新执行历史命令: 指示符 行为 — — `!!` 重新运行紧接着的上一条命令 `!n` 运行历史索引`n`处的命令 `!-n` 运行从当前位置向前数`n`个位置的命令 […]
GNU Screen 是一个终端多路复用器,允许您从单个终端连接创建、管理和持久恢复多个独立的 shell 会话。当您分离一个 Screen 会话时,其中运行的每个进程都会继续在后台执行——在 SSH 断开连接、网络中断和终端关闭后依然存活——直到您明确重新连接或终止会话。 这一功能对于通过 SSH 管理远程服务器的系统管理员来说不可或缺。无论您是在编译大型代码库、运行数据库迁移、监控日志,还是执行耗时数小时的备份任务,Screen 都能确保工作持续进行,无论您的客户端连接发生什么情况。 为什么 GNU Screen 在现代基础设施中仍然重要 虽然 `tmux` 等工具越来越受欢迎,但 GNU Screen 在企业 Linux 环境、嵌入式系统和遗留基础设施中仍然无处不在。它作为默认或接近默认的软件包随大多数服务器发行版一起提供,无需任何配置即可立即使用,其会话持久性模型非常稳固。在 VPS 或独立服务器上,正常运行时间和不间断任务执行至关重要,Screen 通常是实现可靠持久会话的最快途径。 主要操作优势: 跨断开连接的会话持久性 — 进程在 SSH 超时和网络中断后依然存活 多窗口多路复用 — 在单个 SSH 连接内运行并行任务 低资源开销 — 与基于 GUI 的替代方案相比,CPU 和内存占用可忽略不计 可脚本化的会话管理 — 通过 shell 脚本自动化会话创建和命令注入 广泛兼容性 — 几乎在每个符合 POSIX 标准的系统上都可用 […]
on All Hosting Services
