<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>David 的技术博客 on 计算机知识分享网</title><link>https://jiaochengziyuan.cn/</link><description>Recent content in David 的技术博客 on 计算机知识分享网</description><generator>Hugo</generator><language>zh-CN</language><managingEditor>986945193@qq.com (David)</managingEditor><webMaster>986945193@qq.com (David)</webMaster><copyright>Copyright © 2014-至今, David.</copyright><lastBuildDate>Sat, 22 Aug 2026 09:00:00 +0800</lastBuildDate><follow_challenge><feedId>00000000000000000</feedId><userId>00000000000000000</userId></follow_challenge><atom:link href="https://jiaochengziyuan.cn/index.xml" rel="self" type="application/rss+xml"/><item><title>Podman 无根容器实战：常用命令、Pod 与 Docker 兼容</title><link>https://jiaochengziyuan.cn/p/podman-%E6%97%A0%E6%A0%B9%E5%AE%B9%E5%99%A8%E5%AE%9E%E6%88%98%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4pod-%E4%B8%8E-docker-%E5%85%BC%E5%AE%B9/</link><pubDate>Sat, 22 Aug 2026 09:00:00 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/podman-%E6%97%A0%E6%A0%B9%E5%AE%B9%E5%99%A8%E5%AE%9E%E6%88%98%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4pod-%E4%B8%8E-docker-%E5%85%BC%E5%AE%B9/</guid><description>&lt;p&gt;上篇我们聊了 Podman 的架构优势，这一篇直接进入实战。所有命令默认在**无根（rootless）**模式下执行——也就是你以普通用户身份直接运行，无需 &lt;code&gt;sudo&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h2 id="无根模式到底意味着什么"&gt;无根模式到底意味着什么&lt;/h2&gt;&#10;&lt;p&gt;在无根模式下，Podman 借助 Linux 的 &lt;strong&gt;user namespace&lt;/strong&gt;，把你容器内的 &lt;code&gt;uid 0&lt;/code&gt;（root）映射到宿主机上一个普通的高位 UID（例如 &lt;code&gt;1000:100000&lt;/code&gt; 区间）。宿主机上真正的 root 与你容器内的 root 完全不是一回事。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 查看当前无根映射&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman unshare cat /proc/self/uid_map&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 输出类似： 0 1000 1 1 100000 65536&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;&#10;&lt;p&gt;小提示：无根容器因为网络需要桥接，默认使用 &lt;code&gt;slirp4netns&lt;/code&gt; 或 &lt;code&gt;pasta&lt;/code&gt; 做用户态网络栈。如果你发现 &lt;code&gt;-p&lt;/code&gt; 端口映射不生效，多半是这两个组件没装好。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="常用命令速查"&gt;常用命令速查&lt;/h2&gt;&#10;&lt;h3 id="镜像与容器生命周期"&gt;镜像与容器生命周期&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 拉取镜像&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman pull docker.io/library/redis:7-alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 后台运行，端口、卷、自重启&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run -d &lt;span style="color:#0a3069"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --name redis &lt;span style="color:#0a3069"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -p 6379:6379 &lt;span style="color:#0a3069"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -v &lt;span style="color:#953800"&gt;$HOME&lt;/span&gt;/redis-data:/data &lt;span style="color:#0a3069"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --restart unless-stopped &lt;span style="color:#0a3069"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; redis:7-alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 查看运行中的容器&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman ps&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 查看全部（含已停止）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman ps -a&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 进入容器执行命令&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman &lt;span style="color:#6639ba"&gt;exec&lt;/span&gt; -it redis redis-cli ping&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 查看日志&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman logs -f redis&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 停止并删除&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman stop redis &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; podman rm redis&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="镜像管理"&gt;镜像管理&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman images &lt;span style="color:#57606a"&gt;# 列出本地镜像&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman rmi redis:7-alpine &lt;span style="color:#57606a"&gt;# 删除镜像&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman system prune -a &lt;span style="color:#57606a"&gt;# 清理无用镜像与容器（慎用）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="podman-的原生-pod"&gt;Podman 的原生 Pod&lt;/h2&gt;&#10;&lt;p&gt;这是 Podman 区别于 Docker 的杀手锏：&lt;strong&gt;Pod 是一等公民&lt;/strong&gt;。一个 Pod 内的多个容器共享同一个网络命名空间（和 IP），就像 Kubernetes 里的 Pod 一样。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 创建一个 Pod，并映射对外端口&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman pod create --name mypod -p 8080:80&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 在 Pod 内启动容器（它们共享网络）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run -dt --pod mypod --name web nginx:alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run -dt --pod mypod --name sidecar busybox sleep &lt;span style="color:#0550ae"&gt;3600&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 查看 Pod 及其容器&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman pod ps&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman pod inspect mypod&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这种&amp;quot;本地即 K8s&amp;quot;的模型，让你在笔记本上就能验证多容器协作的行为，再原样搬上集群。&lt;/p&gt;&#10;&lt;h2 id="与-docker-的兼容实战"&gt;与 Docker 的兼容实战&lt;/h2&gt;&#10;&lt;h3 id="一行别名旧脚本照跑"&gt;一行别名，旧脚本照跑&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;alias docker=&amp;#39;podman&amp;#39;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;source&lt;/span&gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker ps &lt;span style="color:#57606a"&gt;# 实际上调用的是 podman&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="替代-docker-compose"&gt;替代 Docker Compose&lt;/h3&gt;&#10;&lt;p&gt;Podman 提供官方子命令 &lt;code&gt;podman-compose&lt;/code&gt;，并兼容现有 &lt;code&gt;docker-compose.yml&lt;/code&gt;：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install podman-compose&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 直接复用已有的 compose 文件&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman-compose up -d&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman-compose down&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你的 &lt;code&gt;docker-compose.yml&lt;/code&gt; 里写的是 &lt;code&gt;image: redis:7&lt;/code&gt;，Podman 默认会从 &lt;code&gt;docker.io&lt;/code&gt; 拉取，行为一致。&lt;/p&gt;&#10;&lt;h2 id="用-systemd-管理容器开机自启"&gt;用 systemd 管理容器开机自启&lt;/h2&gt;&#10;&lt;p&gt;Podman 与 &lt;code&gt;systemd&lt;/code&gt; 是&amp;quot;天作之合&amp;quot;。最推荐的方式是 &lt;strong&gt;Quadlet&lt;/strong&gt;——用声明式文件让 systemd 接管容器。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# ~/.config/containers/systemd/redis.container&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;[Unit]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Description&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;Redis 容器&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;[Container]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Image&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;docker.io/library/redis:7-alpine&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;PublishPort&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;6379:6379&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Volume&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;%h/redis-data:/data&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;[Service]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Restart&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;always&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;[Install]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;WantedBy&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;default.target&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启用与启动：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl --user daemon-reload&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl --user &lt;span style="color:#6639ba"&gt;enable&lt;/span&gt; --now redis.container&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;&#10;&lt;p&gt;注意：无根容器要让它在用户登出后仍运行，需要执行一次&#10;&lt;code&gt;loginctl enable-linger $USER&lt;/code&gt;。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="排错清单"&gt;排错清单&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;现象&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;可能原因&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;解决方式&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;端口映射失败&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;缺少 &lt;code&gt;slirp4netns&lt;/code&gt;/&lt;code&gt;pasta&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;安装对应包并确认版本&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无法拉取镜像&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;镜像仓库地址未写全&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;显式写 &lt;code&gt;docker.io/library/xxx&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;卷权限拒绝&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无根 UID 映射差异&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用 &lt;code&gt;podman unshare chown&lt;/code&gt; 修正属主&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;开机不自启&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;未开启 linger&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;loginctl enable-linger $USER&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="小结"&gt;小结&lt;/h2&gt;&#10;&lt;p&gt;Podman 的无根模式把&amp;quot;最小权限&amp;quot;变成了默认行为，而原生 Pod、docker 兼容别名、compose 与 systemd 集成，又让它几乎无缝接替你原有的 Docker 工作流。&lt;/p&gt;&#10;&lt;p&gt;如果你正在评估把开发机或 CI 环境从 Docker 迁到 Podman，现在就是一个不错的时机——&lt;strong&gt;命令几乎不用改，安全性却实打实地提升了&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;em&gt;回到上一篇：&lt;a href="https://jiaochengziyuan.cn/p/podman-intro/"&gt;Podman 入门：为什么它是 Docker 的优秀替代品&lt;/a&gt;&#13;&#10;&lt;/em&gt;&lt;/p&gt;&#10;</description></item><item><title>Podman 入门：为什么它是 Docker 的优秀替代品</title><link>https://jiaochengziyuan.cn/p/podman-%E5%85%A5%E9%97%A8%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AE%83%E6%98%AF-docker-%E7%9A%84%E4%BC%98%E7%A7%80%E6%9B%BF%E4%BB%A3%E5%93%81/</link><pubDate>Thu, 20 Aug 2026 09:00:00 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/podman-%E5%85%A5%E9%97%A8%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AE%83%E6%98%AF-docker-%E7%9A%84%E4%BC%98%E7%A7%80%E6%9B%BF%E4%BB%A3%E5%93%81/</guid><description>&lt;p&gt;如果你用过 Docker，一定对那条常驻在后台的 &lt;code&gt;dockerd&lt;/code&gt; 守护进程不陌生。它功能强大，但也带来一个尴尬的事实：&lt;strong&gt;只要 dockerd 挂了，你所有的容器管理操作就全部失灵&lt;/strong&gt;；而且它默认以 root 身份运行，一旦被攻破，宿主机的 root 权限就直接暴露。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://podman.io/" target="_blank" rel="noopener noreferrer"&gt;Podman&lt;/a&gt;&#13;&#10; 正是为解决这些痛点而生。它由 Red Hat 主导，目标是成为「无需守护进程、无需 root」的容器引擎。&lt;/p&gt;&#10;&lt;h2 id="什么是-podman"&gt;什么是 Podman&lt;/h2&gt;&#10;&lt;p&gt;Podman（&lt;strong&gt;Pod Manager&lt;/strong&gt;）是一个开源的容器引擎，用于开发、管理和运行 OCI（Open Container Initiative）标准的容器与 Pod。最有趣的一点是：&lt;strong&gt;它的命令行参数与 Docker 几乎完全一致&lt;/strong&gt;——你甚至可以把 &lt;code&gt;docker&lt;/code&gt; 直接 alias 成 &lt;code&gt;podman&lt;/code&gt;，现有脚本几乎不用改。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Docker 用户熟悉的操作，在 Podman 里一模一样&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman pull nginx:alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run -d -p 8080:80 --name web nginx:alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman ps&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="核心差异无守护进程--无根容器"&gt;核心差异：无守护进程 + 无根容器&lt;/h2&gt;&#10;&lt;p&gt;Podman 与 Docker 的根本区别体现在架构层面。&lt;/p&gt;&#10;&lt;h3 id="无守护进程daemonless"&gt;无守护进程（Daemonless）&lt;/h3&gt;&#10;&lt;p&gt;Docker 采用 Client/Server 架构：&lt;code&gt;docker&lt;/code&gt; 命令行只是客户端，真正干活的 &lt;code&gt;dockerd&lt;/code&gt; 守护进程常驻后台。Podman 则&lt;strong&gt;没有守护进程&lt;/strong&gt;——每条命令直接通过 &lt;code&gt;runC&lt;/code&gt; 等 OCI runtime 与 Linux 内核交互（借助 &lt;code&gt;conmon&lt;/code&gt; 做进程监控）。&lt;/p&gt;&#10;&lt;p&gt;这意味着：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;没有单点故障，某条命令崩溃不会影响其他容器；&lt;/li&gt;&#10;&lt;li&gt;不需要一个长期运行的特权进程；&lt;/li&gt;&#10;&lt;li&gt;天然契合 Linux 的 &lt;code&gt;systemd&lt;/code&gt; 集成。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="无根容器rootless"&gt;无根容器（Rootless）&lt;/h3&gt;&#10;&lt;p&gt;Docker 早期必须以 root 运行。Podman 通过 &lt;strong&gt;user namespaces&lt;/strong&gt; 让用户以普通身份启动容器，容器内的 root 实际映射到宿主机上的一个非特权 UID，互不干扰。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;无根容器不是&amp;quot;弱化版安全&amp;quot;，而是把风险隔离到了用户层面：即使容器被逃逸，攻击者拿到的也只是该用户的权限，而非整台机器的 root。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="podman-vs-docker-速查"&gt;Podman vs Docker 速查&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Docker&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Podman&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;架构&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Client/Server（有守护进程）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无守护进程（直接调用 runtime）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;运行身份&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;默认 root&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;默认无根（rootless）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;单点故障&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;dockerd 挂掉则全崩&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无，命令独立&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pod 概念&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;需 Docker Compose 模拟&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;原生支持 &lt;code&gt;podman pod&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;systemd 集成&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;需自行配置&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;官方推荐 &lt;code&gt;quadlet&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CLI 兼容性&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;与 docker 高度一致&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;许可证&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;已转向商业订阅协议&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apache 2.0 完全开源&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="安装-podman"&gt;安装 Podman&lt;/h2&gt;&#10;&lt;p&gt;不同发行版的安装方式都很简单：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# macOS（通过 Homebrew）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install podman&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman machine init &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; podman machine start&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Ubuntu / Debian&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y podman&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# CentOS / Rocky / Fedora&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dnf install -y podman&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;验证安装：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman info &lt;span style="color:#1f2328"&gt;|&lt;/span&gt; head -n &lt;span style="color:#0550ae"&gt;5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="从-docker-平滑迁移"&gt;从 Docker 平滑迁移&lt;/h2&gt;&#10;&lt;p&gt;如果你已经有一套基于 Docker 的工作流，迁移成本极低：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 1. 建立别名，旧脚本无需改动&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#39;alias docker=podman&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;source&lt;/span&gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 2. 镜像与容器数据可直接复用（都遵循 OCI 标准）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman images&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run hello-world&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="小结"&gt;小结&lt;/h2&gt;&#10;&lt;p&gt;Podman 并非要&amp;quot;取代&amp;quot;Docker 的一切，而是在&lt;strong&gt;安全模型与架构简洁性&lt;/strong&gt;上给出了更现代的答案。对于新项目、CI 环境、以及注重最小权限的生产部署，无守护进程 + 无根容器的组合非常值得尝试。&lt;/p&gt;&#10;&lt;p&gt;下一篇，我会带你深入 &lt;strong&gt;Podman 无根模式下的常用命令、Pod 编排，以及与 Docker Compose 的兼容实战&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;em&gt;相关阅读：&lt;a href="https://jiaochengziyuan.cn/p/podman-rootless-practice/"&gt;Podman 无根容器实战&lt;/a&gt;&#13;&#10;&lt;/em&gt;&lt;/p&gt;&#10;</description></item><item><title>【android】adb常用命令总结</title><link>https://jiaochengziyuan.cn/p/androidadb%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E6%80%BB%E7%BB%93/</link><pubDate>Sat, 25 Jul 2026 11:08:15 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/androidadb%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E6%80%BB%E7%BB%93/</guid><description>&lt;h5 id="查看app进程"&gt;查看&lt;code&gt;app&lt;/code&gt;进程&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb shell&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ps | grep xxx-app&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="重启adb服务"&gt;重启&lt;code&gt;adb&lt;/code&gt;服务&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb kill-server&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# kill掉之后再输入，出现successful就重启成功了&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb start-server&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="adb安装app"&gt;&lt;code&gt;adb&lt;/code&gt;安装&lt;code&gt;App&lt;/code&gt;:&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb connect 10.168.1.245:5555&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb -s 10.168.1.245:5555 install -r D:\a\release\xxx_release.apk&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb disconnect 10.168.1.245:5555&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="查看android设备分辨率和dpi"&gt;查看&lt;code&gt;android&lt;/code&gt;设备分辨率和&lt;code&gt;dpi&lt;/code&gt;&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 进入linux命令行&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb shell &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 查看分辨率&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wm size &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 查看dpi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wm density &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="查看android系统日志"&gt;查看&lt;code&gt;android&lt;/code&gt;系统日志&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 进入linux命令行&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb shell &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 查看日志&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logcat &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="根据包名启动app"&gt;根据包名，启动&lt;code&gt;APP&lt;/code&gt;&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb shell am start -n com.david.xxx.app/com.david.xxx.app.LauncherActivity &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="根据包名停止app"&gt;根据包名，停止&lt;code&gt;APP&lt;/code&gt;&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adb shell am force-stop com.david.xxx.app&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【mysql】mysql主从复制从库SQL线程未执行解决方案</title><link>https://jiaochengziyuan.cn/p/mysqlmysql%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%E4%BB%8E%E5%BA%93sql%E7%BA%BF%E7%A8%8B%E6%9C%AA%E6%89%A7%E8%A1%8C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link><pubDate>Tue, 07 Jul 2026 14:51:01 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/mysqlmysql%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%E4%BB%8E%E5%BA%93sql%E7%BA%BF%E7%A8%8B%E6%9C%AA%E6%89%A7%E8%A1%8C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid><description>&lt;h5 id="在slave服务器上通过如下命令"&gt;在slave服务器上通过如下命令&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; show slave status\G;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="显示如下情况"&gt;显示如下情况：&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Slave_SQL_Running是No,表示slave不同步&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Slave_IO_Running: Yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Slave_SQL_Running: No&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="解决方法一忽略错误继续同步"&gt;解决方法一(忽略错误，继续同步)：&lt;/h4&gt;&#10;&lt;h5 id="1先停掉slave"&gt;1、先停掉slave&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; stop slave;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="2跳过错误步数后面步数可变"&gt;2、跳过错误步数，后面步数可变&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; set global sql_slave_skip_counter=1;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="3再启动slave"&gt;3、再启动slave&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; start slave;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="4查看同步状态恢复正常"&gt;4、查看同步状态，恢复正常&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; show slave status\G;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="解决方法二重新做主从完全同步"&gt;解决方法二(重新做主从，完全同步)：&lt;/h4&gt;&#10;&lt;h5 id="1先进入主库进行锁表注意窗口不要关闭"&gt;1、先进入主库进行锁表，注意窗口不要关闭&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; flush table with read lock;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="2把主数据库的数据进行备份根据实际需要"&gt;2、把主数据库的数据进行备份（根据实际需要）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 系统终端执行&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p --opt -R 数据库 &amp;gt; /data/bak.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="3再新开个窗口查看主数据库信息"&gt;3、再新开个窗口，查看主数据库信息&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; show master status;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+------------------+----------+------------------------------------+---------------------------------------------+-------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+------------------+----------+------------------------------------+---------------------------------------------+-------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| mysql-bin.000001 | 528 | store_db,product_db_1,product_db_2 | mysql,information_schema,performance_schema | |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;+------------------+----------+------------------------------------+---------------------------------------------+-------------------+&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1 row in set (0.00 sec)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="4在从库上停止slave"&gt;4、在从库上停止slave&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; stop slave;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="5从库导入备份的数据文件根据实际情况是否执行"&gt;5、从库导入备份的数据文件(根据实际情况是否执行)&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; source /data/bak.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="6从库重置同步"&gt;6、从库重置同步&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; reset slave;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="7重新设置同步节点"&gt;7、重新设置同步节点&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; CHANGE MASTER TO MASTER_HOST=&amp;#39;127.0.0.1&amp;#39;,MASTER_PORT=3306,MASTER_USER=&amp;#39;MySlave&amp;#39;,MASTER_PASSWORD=&amp;#39;123456&amp;#39;,MASTER_LOG_FILE=&amp;#39;mysql-bin.000001&amp;#39;,MASTER_LOG_POS=528;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Query OK, 0 rows affected, 1 warning (0.72 sec)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;host，port，user，password请根据你的主库设置相应修改，log_file和log_pos根据主库中master status相应修改。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="8开启slave"&gt;8、开启slave&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; start slave;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="9查看slave状态"&gt;9、查看slave状态&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; show slave status\G;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="显示如下信息则表示正常"&gt;显示如下信息则表示正常&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Slave_IO_Running: Yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Slave_SQL_Running: Yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="10对主数据库解锁"&gt;10、对主数据库解锁&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; unlock tables;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="11再次在主库中添加或修改数据看从库数据是否同步"&gt;11、再次在主库中添加或修改数据，看从库数据是否同步&lt;/h5&gt;&#10;</description></item><item><title>【jdk】Ubuntu安装jdk后root用户下无法获取java环境变量解决办法</title><link>https://jiaochengziyuan.cn/p/jdkubuntu%E5%AE%89%E8%A3%85jdk%E5%90%8Eroot%E7%94%A8%E6%88%B7%E4%B8%8B%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96java%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/</link><pubDate>Fri, 29 May 2026 11:48:21 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/jdkubuntu%E5%AE%89%E8%A3%85jdk%E5%90%8Eroot%E7%94%A8%E6%88%B7%E4%B8%8B%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96java%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/</guid><description>&lt;h5 id="按照网上配置java环境变量的方法在etcprofile文件中添加如下内容配置之后如果重启系统后切换到root用户无法获取已配置的java环境变量在普通用户下可以获取到"&gt;按照网上配置&lt;code&gt;java&lt;/code&gt;环境变量的方法在&lt;code&gt;/etc/profile&lt;/code&gt;文件中添加如下内容，配置之后，如果重启系统后切换到&lt;code&gt;root&lt;/code&gt;用户无法获取已配置的&lt;code&gt;java&lt;/code&gt;环境变量，在普通用户下可以获取到&lt;/h5&gt;&#10;&lt;p&gt;比如我们的&lt;code&gt;/etc/profile&lt;/code&gt;配置为：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;export&lt;/span&gt; &lt;span style="color:#953800"&gt;JAVA_HOME&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;/usr/local/java/jdk1.8.0_65&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;export&lt;/span&gt; &lt;span style="color:#953800"&gt;JRE_HOME&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;${&lt;/span&gt;&lt;span style="color:#953800"&gt;JAVA_HOME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;}&lt;/span&gt;/jre&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;export&lt;/span&gt; &lt;span style="color:#953800"&gt;CLASSPATH&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;.:&lt;span style="color:#953800"&gt;$JAVA_HOME&lt;/span&gt;/lib:&lt;span style="color:#953800"&gt;$JRE_HOME&lt;/span&gt;/lib:&lt;span style="color:#953800"&gt;$CLASSPATH&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;export&lt;/span&gt; &lt;span style="color:#953800"&gt;PATH&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#953800"&gt;$JAVA_HOME&lt;/span&gt;/bin:&lt;span style="color:#953800"&gt;$JRE_HOME&lt;/span&gt;/bin:&lt;span style="color:#953800"&gt;$PATH&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="我们执行以下命令即可比如我们的jdk路径为usrlocaljavajdk180_65那么执行以下命令"&gt;我们执行以下命令即可，比如我们的jdk路径为&lt;code&gt;/usr/local/java/jdk1.8.0_65&lt;/code&gt;，那么执行以下命令&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln -s /你的jdk路径/bin/jar /bin/jar &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln -s /你的jdk路径/bin/java /bin/java &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln -s /你的jdk路径/bin/javac /bin/javac &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln -s /你的jdk路径/bin/javah /bin/javah &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln -s /你的jdk路径/bin/javadoc /bin/javadoc&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【linux】 openEuler22.03配置yum源</title><link>https://jiaochengziyuan.cn/p/linux-openeuler22.03%E9%85%8D%E7%BD%AEyum%E6%BA%90/</link><pubDate>Fri, 29 May 2026 11:48:21 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/linux-openeuler22.03%E9%85%8D%E7%BD%AEyum%E6%BA%90/</guid><description>&lt;h6 id="通过信息我们可以得到该版本是基于centos8"&gt;通过信息我们可以得到，该版本是基于CentOS8&lt;/h6&gt;&#10;&lt;h6 id="备份原有源文件"&gt;备份原有源文件&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="配置新的-yum-华为-源"&gt;配置新的 YUM 华为 源&lt;/h6&gt;&#10;&lt;h6 id="编辑配置文件etcyumreposdopeneulerrepo"&gt;编辑配置文件&lt;code&gt;/etc/yum.repos.d/openEuler.repo&lt;/code&gt;&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[openEuler-everything]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name=openEuler-everything&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/everything/x86_64/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enabled=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpgcheck=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[openEuler-EPOL]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name=openEuler-epol&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/EPOL/main/x86_64/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enabled=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpgcheck=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[openEuler-update]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name=openEuler-update&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;baseurl=http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/update/x86_64/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enabled=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpgcheck=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="如果需要使用清华镜像源可以替换为以下内容"&gt;如果需要使用清华镜像源，可以替换为以下内容&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[openEuler-everything]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name=openEuler-everything&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;baseurl=https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS-SP3/everything/x86_64/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enabled=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpgcheck=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[openEuler-EPOL]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name=openEuler-epol&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;baseurl=https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS-SP3/EPOL/main/x86_64/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enabled=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpgcheck=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[openEuler-update]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name=openEuler-update&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;baseurl=https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS-SP3/update/x86_64/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;enabled=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpgcheck=0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="刷新缓存并测试"&gt;刷新缓存并测试&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum clean all&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum makecache&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 测试更新&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum update&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【springboot】springboot中配置sql方言的语句</title><link>https://jiaochengziyuan.cn/p/springbootspringboot%E4%B8%AD%E9%85%8D%E7%BD%AEsql%E6%96%B9%E8%A8%80%E7%9A%84%E8%AF%AD%E5%8F%A5/</link><pubDate>Fri, 29 May 2026 11:48:21 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/springbootspringboot%E4%B8%AD%E9%85%8D%E7%BD%AEsql%E6%96%B9%E8%A8%80%E7%9A%84%E8%AF%AD%E5%8F%A5/</guid><description>&lt;h5 id="如果我们配置不对的sql方言则会报以下错误"&gt;如果我们配置不对的&lt;code&gt;sql&lt;/code&gt;方言，则会报以下错误：&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;spring boot + mybatis 连接 oracle 出现 ORA-00923: 未找到要求的 FROM 关键字 错误&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="比如hikari-连接池配置mysql的配置如下"&gt;比如：&lt;code&gt;hikari&lt;/code&gt; 连接池配置&lt;code&gt;mysql&lt;/code&gt;的配置如下：&lt;/h4&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;spring:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; datasource:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hikari:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; connection-test-query: select 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="其他数据库类型的配置参考"&gt;其他数据库类型的配置参考:&lt;/h4&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DataBase validationQuery&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hsqldb select 1 from INFORMATION_SCHEMA.SYSTEM_USERS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Oracle select 1 from dual&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DB2 select 1 from sysibm.sysdummy1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MySql select 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Microsoft SqlServer select1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;postgresql select version()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ingres select 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;derby values 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;H2 select 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【java】springboot Jar包在Linux下自动启动脚本配置</title><link>https://jiaochengziyuan.cn/p/javaspringboot-jar%E5%8C%85%E5%9C%A8linux%E4%B8%8B%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC%E9%85%8D%E7%BD%AE/</link><pubDate>Tue, 21 Oct 2025 19:12:45 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/javaspringboot-jar%E5%8C%85%E5%9C%A8linux%E4%B8%8B%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC%E9%85%8D%E7%BD%AE/</guid><description>&lt;h5 id="可以使用crontab表达式配置"&gt;可以使用&lt;code&gt;crontab&lt;/code&gt;表达式配置&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;crontab -e&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="然后在后面追加这里是延迟5分钟启动该服务"&gt;然后在后面追加，这里是延迟5分钟启动该服务&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 这里nohup和Java最好都是用绝对路径，因为程序环境变量有可能还没加载成功。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@reboot sleep 300 &amp;amp;&amp;amp; /usr/bin/nohup /usr/local/jdk8/bin/java -jar /home/david/david-ajserver/bin/david-ajserver-undertow-1.0.jar 2&amp;gt;&amp;amp;1 &amp;amp;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【docker】Docker搭建本地私服registry2.8并迁移</title><link>https://jiaochengziyuan.cn/p/dockerdocker%E6%90%AD%E5%BB%BA%E6%9C%AC%E5%9C%B0%E7%A7%81%E6%9C%8Dregistry2.8%E5%B9%B6%E8%BF%81%E7%A7%BB/</link><pubDate>Thu, 16 Oct 2025 10:18:32 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/dockerdocker%E6%90%AD%E5%BB%BA%E6%9C%AC%E5%9C%B0%E7%A7%81%E6%9C%8Dregistry2.8%E5%B9%B6%E8%BF%81%E7%A7%BB/</guid><description>&lt;h6 id="拉取镜像的命令"&gt;拉取镜像的命令&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker pull 10.168.1.170:5000/library/registry:2.8&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="创建docker镜像存储目录方便后期迁移私服镜像"&gt;创建&lt;code&gt;docker&lt;/code&gt;镜像存储目录，方便后期迁移私服镜像&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p /data/registry-data&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="添加docker信任的私有仓库地址"&gt;添加&lt;code&gt;docker&lt;/code&gt;信任的私有仓库地址&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;vi /etc/docker/daemon.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#增加下面内容&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;#34;insecure-registries&amp;#34;:[&amp;#34;Ip:5000&amp;#34;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#参考配置：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;#34;insecure-registries&amp;#34;:[&amp;#34;192.168.1.106:5000&amp;#34;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="重启docker-服务"&gt;重启&lt;code&gt;docker&lt;/code&gt; 服务&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl restart docker&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="启动私服registry"&gt;启动私服&lt;code&gt;registry&lt;/code&gt;&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;d &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;name&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;registry \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;v &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;registry&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;data&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;registry \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;p &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;5000&lt;/span&gt; &lt;span style="color:#0550ae"&gt;10.168&lt;/span&gt;&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#0550ae"&gt;1.170&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;library&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;registry&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;2.8&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="查看私有仓库在浏览器输入"&gt;查看私有仓库，在浏览器输入：&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;http://ip:5000/v2/_catalog&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="修改tag为私服镜像"&gt;修改&lt;code&gt;tag&lt;/code&gt;为私服镜像&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# docker镜像上传时需要指定仓库名称和镜像名称&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker tag docker.1ms.run/library/registry:2.8 10.168.1.170:5000/library/registry:2.8&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="上传镜像到本地的registry仓库中"&gt;上传镜像到本地的registry仓库中&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker push 10.168.1.170:5000/library/registry:2.8&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="备份registry镜像和仓库文件"&gt;备份registry镜像和仓库文件&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 备份镜像&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker save -o registry2.8.tar 10.168.1.170:5000/library/registry:2.8&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 打包仓库文件&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar czvf registry-images-data.tar.gz /data/registry-data&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;h5 id="迁移"&gt;迁移&lt;/h5&gt;&#10;&lt;h5 id="首先将备份的镜像和仓库压缩包上传到新服务器然后在新的服务器上面还原registry镜像"&gt;首先将备份的镜像和仓库压缩包上传到新服务器，然后在新的服务器上面，还原&lt;code&gt;registry&lt;/code&gt;镜像&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker &lt;span style="color:#6639ba"&gt;load&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;i registry2&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#0550ae"&gt;8.&lt;/span&gt;tar&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="解压仓库压缩包"&gt;解压仓库压缩包&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar xf registry-images-data.tar.gz -C /data/registry-data&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="最后启动新的容器即可"&gt;最后启动新的容器即可&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;d &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;name&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;registry &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;v &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;registry&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;data&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;registry &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;p &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;5000&lt;/span&gt; &lt;span style="color:#0550ae"&gt;10.168&lt;/span&gt;&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#0550ae"&gt;1.170&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;library&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;registry&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;2.8&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【mysql】windows安装mysql8.0.42压缩包版</title><link>https://jiaochengziyuan.cn/p/mysqlwindows%E5%AE%89%E8%A3%85mysql8.0.42%E5%8E%8B%E7%BC%A9%E5%8C%85%E7%89%88/</link><pubDate>Wed, 08 Oct 2025 11:11:11 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/mysqlwindows%E5%AE%89%E8%A3%85mysql8.0.42%E5%8E%8B%E7%BC%A9%E5%8C%85%E7%89%88/</guid><description>&lt;h5 id="官网下载好mysql-8042-winx64zip压缩包然后解压在目录下新建一个myini文件"&gt;官网下载好&lt;code&gt;mysql-8.0.42-winx64.zip&lt;/code&gt;压缩包，然后解压，在目录下新建一个&lt;code&gt;my.ini&lt;/code&gt;文件&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[mysqld]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 设置3306端口&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port=3306&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 设置mysql的安装目录 ----------是你的文件路径-------------&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;basedir=C:/mysql8/mysql-8.0.42-winx64&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;datadir=C:/mysql8/mysql-8.0.42-winx64/data&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 允许最大连接数&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;max_connections=500&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 允许连接失败的次数。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;max_connect_errors=100&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 服务端使用的字符集默认为utf8mb4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;character-set-server=utf8mb4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 创建新表时将使用的默认存储引擎&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;default-storage-engine=INNODB&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 默认使用“mysql_native_password”插件认证&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#mysql_native_password&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;default_authentication_plugin=mysql_native_password&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[mysql]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 设置mysql客户端默认字符集&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;default-character-set=utf8mb4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[client]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 设置mysql客户端连接服务端时默认使用的端口&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port=3306&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;default-character-set=utf8mb4&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="初始化mysql"&gt;初始化mysql&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqld --initialize&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;或者 带有日志输出&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqld --initialize --console&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;或者 日志和密码会保存在pwd.txt文件中&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqld --initialize --console &amp;gt; pwd.txt 2&amp;gt;&amp;amp;1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="以管理员的方式打开cmd命令窗口winr输入cmd-后在cmd上单击右键选择以管理员身份运行并且进入到mysql安装目录的bin目录下cd然后输入命令"&gt;以&lt;strong&gt;管理员&lt;/strong&gt;的方式打开cmd命令窗口（win+r输入cmd 后在cmd上单击右键选择以管理员身份运行），并且进入到mysql安装目录的bin目录下（cd）。然后输入命令&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;安装服务：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;C:\mysql8\mysql-8.0.42-winx64\bin\bin&amp;gt;mysqld install mysql&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;卸载服务：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;C:\mysql8\mysql-8.0.42-winx64\bin\bin&amp;gt;mysqld -remove mysql&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Service successfully removed.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="然后启动停止mysql服务可以再服务中也可以再dos终端"&gt;然后启动、停止MySQL服务，可以再服务中也可以再dos终端&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;// 启动MySQL服务&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;net start mysql&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;// 关闭MySQL服务&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;net stop mysql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="然后连接mysql第一次需要修改密码我们修改密码"&gt;然后连接&lt;code&gt;mysql&lt;/code&gt;，第一次需要修改密码，我们修改密码&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;C:\mysql8\mysql-8.0.42-winx64\bin&amp;gt;mysql -uroot -p&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; show databases;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 修改密码&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; ALTER user &amp;#39;root&amp;#39;@&amp;#39;localhost&amp;#39; IDENTIFIED BY &amp;#39;123456&amp;#39;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Query OK, 0 rows affected (0.01 sec)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 刷新权限&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; flush privileges;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Query OK, 0 rows affected (0.01 sec)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="开启远程访问权限"&gt;开启远程访问权限&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; use mysql;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Database changed&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; update user set host=&amp;#39;%&amp;#39; where user=&amp;#39;root&amp;#39;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Query OK, 1 row affected (0.00 sec)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Rows matched: 1 Changed: 1 Warnings: 0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; flush privileges;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Query OK, 0 rows affected (0.00 sec)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql&amp;gt; exit&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【docker】docker环境下部署fastdfs</title><link>https://jiaochengziyuan.cn/p/dockerdocker%E7%8E%AF%E5%A2%83%E4%B8%8B%E9%83%A8%E7%BD%B2fastdfs/</link><pubDate>Sat, 27 Sep 2025 10:32:49 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/dockerdocker%E7%8E%AF%E5%A2%83%E4%B8%8B%E9%83%A8%E7%BD%B2fastdfs/</guid><description>&lt;h6 id="构建tracker服务"&gt;构建&lt;code&gt;Tracker&lt;/code&gt;服务&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;d &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;name tracker &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;network&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;host &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;v &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fastdfs&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;tracker&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fdfs delron&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fastdfs tracker&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="构建storage服务"&gt;构建&lt;code&gt;Storage&lt;/code&gt;服务&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;d &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;name storage &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;network&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;host &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;e TRACKER_SERVER&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;10.168&lt;/span&gt;&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#0550ae"&gt;1.112&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;22122&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;v &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fastdfs&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;storage&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fdfs &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;e GROUP_NAME&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;group1 delron&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fastdfs storage&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="默认情况下在storage服务中是帮我们安装了nginx服务的相关的端口为"&gt;默认情况下在&lt;code&gt;Storage&lt;/code&gt;服务中是帮我们安装了&lt;code&gt;Nginx&lt;/code&gt;服务的，相关的端口为&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tracker&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;22122&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;storage&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;23000&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;8888&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="所以我们对外暴漏的静态http资源文件使用8888端口访问"&gt;所以我们对外暴漏的静态&lt;code&gt;http&lt;/code&gt;资源文件使用&lt;code&gt;8888&lt;/code&gt;端口访问。&lt;/h6&gt;&#10;&lt;h6 id="如果我们要修改nginx端口我们可以参考一下目录"&gt;如果我们要修改&lt;code&gt;nginx&lt;/code&gt;端口我们可以参考一下目录&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 进入storage容器&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker exec -it storage /bin/bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 修改storage.conf的映射端口，将8888改为8080&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sed -i &amp;#39;s/8888/8080/g&amp;#39; /etc/fdfs/storage.conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 最后我们修改nginx的监听端口&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sed -i &amp;#39;s/8888/8080/g&amp;#39; /usr/local/nginx/conf/nginx.conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="测试图片上传"&gt;测试图片上传&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 1、我们提前准备好一个图片，可以放在Linux主机/data/fastdfs/storage目录&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp &lt;span style="color:#0550ae"&gt;1.&lt;/span&gt;png &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fastdfs&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;storage&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 2、然后进入到我们的storage容器内部。因为我们有挂载，所以我们在容器中可以看到准备的图片。&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;fdfs&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 3、接着我们测试上传的命令&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;[&lt;/span&gt;root&lt;span style="color:#f6f8fa;background-color:#82071e"&gt;@&lt;/span&gt;localhost fdfs&lt;span style="color:#1f2328"&gt;]&lt;/span&gt;&lt;span style="color:#57606a"&gt;# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.png&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;group1&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;M00&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;00&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;00&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;CqgBoWjXSx6APZypAAA67trVtME382&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;png&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 4、上传成功后，我们可以通过http查看图片。这里端口是修改后的8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;http&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt;&lt;span style="color:#0550ae"&gt;10.168&lt;/span&gt;&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#0550ae"&gt;1.112&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;8080&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;group1&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;M00&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;00&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;00&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;CqgBoWjXSx6APZypAAA67trVtME382&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;png&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="参考地址"&gt;参考地址&lt;/h5&gt;&#10;&lt;p&gt;&lt;a href="https://cloud.tencent.com/developer/article/1979896" target="_blank" rel="noopener noreferrer"&gt;https://cloud.tencent.com/developer/article/1979896&lt;/a&gt;&#13;&#10;&lt;/p&gt;&#10;</description></item><item><title>【redis】rockylinux9.6环境下redis6集群设置开机自启</title><link>https://jiaochengziyuan.cn/p/redisrockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8Bredis6%E9%9B%86%E7%BE%A4%E8%AE%BE%E7%BD%AE%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF/</link><pubDate>Fri, 26 Sep 2025 15:38:04 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/redisrockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8Bredis6%E9%9B%86%E7%BE%A4%E8%AE%BE%E7%BD%AE%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF/</guid><description>&lt;h5 id="创建服务"&gt;创建服务&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;etc&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;systemd&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;system&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#f6f8fa;background-color:#82071e"&gt;@&lt;/span&gt;&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;service &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;[&lt;/span&gt;Unit&lt;span style="color:#1f2328"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Description&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;Redis Cluster Node &lt;span style="color:#0550ae"&gt;%&lt;/span&gt;i&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;After&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;network&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;target&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;[&lt;/span&gt;Service&lt;span style="color:#1f2328"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;forking&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ExecStart&lt;span style="color:#0550ae"&gt;=/&lt;/span&gt;usr&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;bin&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;server &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/%&lt;/span&gt;i&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ExecStop&lt;span style="color:#0550ae"&gt;=/&lt;/span&gt;usr&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;bin&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cli &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;p &lt;span style="color:#0550ae"&gt;%&lt;/span&gt;i shutdown&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Restart&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;always&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;[&lt;/span&gt;Install&lt;span style="color:#1f2328"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WantedBy&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;multi&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;user&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;target&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="创建脚本并且执行该脚本"&gt;创建脚本，并且执行该脚本&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;for port in {7000..7005}; do&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sudo systemctl enable redis-cluster@${port}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sudo systemctl start redis-cluster@${port}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;done&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="防火墙配置如果需要"&gt;防火墙配置（如果需要）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;port&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7000&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7005&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;tcp &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;port&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;17000&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;17005&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;tcp &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;reload&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【redis】在rockylinux9.6环境下redis6集群开启远程访问</title><link>https://jiaochengziyuan.cn/p/redis%E5%9C%A8rockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8Bredis6%E9%9B%86%E7%BE%A4%E5%BC%80%E5%90%AF%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE/</link><pubDate>Fri, 26 Sep 2025 15:13:36 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/redis%E5%9C%A8rockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8Bredis6%E9%9B%86%E7%BE%A4%E5%BC%80%E5%90%AF%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE/</guid><description>&lt;h5 id="在每个节点的redisconf中添加以下配置即可"&gt;在每个节点的&lt;code&gt;redis.conf&lt;/code&gt;中添加以下配置即可&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 绑定IP（0.0.0.0表示允许所有IP连接）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bind 0.0.0.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 保护模式关闭（如果设置密码可以保持开启）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;protected-mode no&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【redis】在rockylinux9.6环境下搭建redis6集群配置密码</title><link>https://jiaochengziyuan.cn/p/redis%E5%9C%A8rockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8B%E6%90%AD%E5%BB%BAredis6%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E5%AF%86%E7%A0%81/</link><pubDate>Fri, 26 Sep 2025 15:09:09 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/redis%E5%9C%A8rockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8B%E6%90%AD%E5%BB%BAredis6%E9%9B%86%E7%BE%A4%E9%85%8D%E7%BD%AE%E5%AF%86%E7%A0%81/</guid><description>&lt;h5 id="在每个节点的redisconf中添加requirepass与masterauth的配置"&gt;在每个节点的&lt;code&gt;redis.conf&lt;/code&gt;中添加&lt;code&gt;requirepass&lt;/code&gt;与&lt;code&gt;masterauth&lt;/code&gt;的配置&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 客户端连接密码&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;requirepass YourStrongPassword123!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 主从认证密码（应与requirepass一致）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;masterauth YourStrongPassword123!&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="创建集群时的注意事项使用密码创建集群时需要添加-a参数"&gt;创建集群时的注意事项，使用密码创建集群时，需要添加&lt;code&gt;-a&lt;/code&gt;参数&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -a YourStrongPassword123! --cluster create \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--cluster-replicas 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="日常管理命令"&gt;日常管理命令&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 检查集群状态&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -a YourStrongPassword123! --cluster check 127.0.0.1:7000&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 添加新节点，新启动的redis，可以执行以下命令，加入现有redis集群&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -a YourStrongPassword123! --cluster add-node new_host:new_port existing_host:existing_port&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="定期轮换密码"&gt;定期轮换密码&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 动态修改密码（无需重启）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -a OldPassword123! -p 7000 CONFIG SET requirepass NewPassword456!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -a OldPassword123! -p 7000 CONFIG SET masterauth NewPassword456!&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="测试配置"&gt;测试配置&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 测试客户端连接&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -c -p 7000 -a YourStrongPassword123!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 检查主从复制，在从节点上执行&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -a YourStrongPassword123! -p 7003 INFO replication&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 验证集群状态&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -a YourStrongPassword123! --cluster check 127.0.0.1:7000&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【redis】在rockylinux9.6环境下搭建redis6集群</title><link>https://jiaochengziyuan.cn/p/redis%E5%9C%A8rockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8B%E6%90%AD%E5%BB%BAredis6%E9%9B%86%E7%BE%A4/</link><pubDate>Fri, 26 Sep 2025 15:06:58 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/redis%E5%9C%A8rockylinux9.6%E7%8E%AF%E5%A2%83%E4%B8%8B%E6%90%AD%E5%BB%BAredis6%E9%9B%86%E7%BE%A4/</guid><description>&lt;h5 id="安装redis"&gt;安装&lt;code&gt;Redis&lt;/code&gt;&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 安装EPEL仓库&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dnf install epel-release -y&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 安装Redis 6&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dnf install redis -y&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 检查Redis版本&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-server --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="准备集群配置"&gt;准备集群配置&lt;/h5&gt;&#10;&lt;h6 id="创建集群目录结构"&gt;创建集群目录结构&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;p &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7000&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7001&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7002&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7003&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7004&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7005&lt;/span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="为每个节点创建配置文件以7000为例其他端口类似"&gt;为每个节点创建配置文件（以&lt;code&gt;7000&lt;/code&gt;为例，其他端口类似）&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7000&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port &lt;span style="color:#0550ae"&gt;7000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;enabled yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;file nodes&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7000.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;node&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;timeout &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;appendonly yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;daemonize yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pidfile &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis_7000&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;pid&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logfile &lt;span style="color:#0a3069"&gt;&amp;#34;/var/log/redis_7000.log&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dir &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7001&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port &lt;span style="color:#0550ae"&gt;7001&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;enabled yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;file nodes&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7001.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;node&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;timeout &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;appendonly yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;daemonize yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pidfile &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis_7001&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;pid&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logfile &lt;span style="color:#0a3069"&gt;&amp;#34;/var/log/redis_7001.log&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dir &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7001&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7002&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port &lt;span style="color:#0550ae"&gt;7002&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;enabled yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;file nodes&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7002.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;node&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;timeout &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;appendonly yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;daemonize yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pidfile &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis_7002&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;pid&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logfile &lt;span style="color:#0a3069"&gt;&amp;#34;/var/log/redis_7002.log&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dir &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7002&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7003&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port &lt;span style="color:#0550ae"&gt;7003&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;enabled yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;file nodes&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7003.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;node&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;timeout &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;appendonly yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;daemonize yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pidfile &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis_7003&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;pid&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logfile &lt;span style="color:#0a3069"&gt;&amp;#34;/var/log/redis_7003.log&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dir &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7003&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7004&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port &lt;span style="color:#0550ae"&gt;7004&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;enabled yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;file nodes&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7004.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;node&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;timeout &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;appendonly yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;daemonize yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pidfile &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis_7004&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;pid&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logfile &lt;span style="color:#0a3069"&gt;&amp;#34;/var/log/redis_7004.log&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dir &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7004&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7005&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;port &lt;span style="color:#0550ae"&gt;7005&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;enabled yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;file nodes&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7005.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;node&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;timeout &lt;span style="color:#0550ae"&gt;5000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;appendonly yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;daemonize yes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pidfile &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis_7005&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;pid&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logfile &lt;span style="color:#0a3069"&gt;&amp;#34;/var/log/redis_7005.log&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dir &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7005&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;EOF&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="启动redis实例"&gt;启动&lt;code&gt;Redis&lt;/code&gt;实例&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 单独启动一个&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;server &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/$&lt;/span&gt;&lt;span style="color:#1f2328"&gt;{&lt;/span&gt;port这里是端口号目录下的文件&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 可以将以下内容，写入一个.sh脚本文件。&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;for&lt;/span&gt; port &lt;span style="color:#0550ae"&gt;in&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7000.&lt;/span&gt;&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7005&lt;/span&gt;&lt;span style="color:#1f2328"&gt;};&lt;/span&gt; &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;server &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cluster&lt;span style="color:#0550ae"&gt;/$&lt;/span&gt;&lt;span style="color:#1f2328"&gt;{&lt;/span&gt;port&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;redis&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;done&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="检查是否所有实例都正常运行"&gt;检查是否所有实例都正常运行&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ps aux | grep redis-server&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="创建redis集群"&gt;创建Redis集群&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 使用redis-cli工具创建集群：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 系统会提示你确认配置，输入&amp;#34;yes&amp;#34;继续。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="验证集群状态"&gt;验证集群状态&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 连接到任意节点&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli -c -p 7000&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 在Redis CLI中检查集群状态&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CLUSTER NODES&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CLUSTER INFO&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="集群管理常用命令"&gt;集群管理常用命令&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 添加新节点：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli --cluster add-node new_host:new_port existing_host:existing_port&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 重新分片：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli --cluster reshard host:port&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#检查集群：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;redis-cli --cluster check host:port&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【zentao】还原sql和文件方式备份迁移禅道18版本</title><link>https://jiaochengziyuan.cn/p/zentao%E8%BF%98%E5%8E%9Fsql%E5%92%8C%E6%96%87%E4%BB%B6%E6%96%B9%E5%BC%8F%E5%A4%87%E4%BB%BD%E8%BF%81%E7%A7%BB%E7%A6%85%E9%81%9318%E7%89%88%E6%9C%AC/</link><pubDate>Fri, 19 Sep 2025 18:57:18 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/zentao%E8%BF%98%E5%8E%9Fsql%E5%92%8C%E6%96%87%E4%BB%B6%E6%96%B9%E5%BC%8F%E5%A4%87%E4%BB%BD%E8%BF%81%E7%A7%BB%E7%A6%85%E9%81%9318%E7%89%88%E6%9C%AC/</guid><description>&lt;h5 id="这里我们测试的是docker-compose部署的环境数据库是mariadb首先我们准备好备份的数据然后将数据上传到新服务器"&gt;这里我们测试的是&lt;code&gt;docker-compose&lt;/code&gt;部署的环境，数据库是&lt;code&gt;mariadb&lt;/code&gt;，首先我们准备好备份的数据，然后将数据上传到新服务器&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -zcvf 202509121013104.file.tar.gz 202509121013104.file&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -zcvf 202509121013104.code.tar.gz 202509121013104.code&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -zcvf 202509121013104.sql.php.tar.gz 202509121013104.sql.php&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 下载文件&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sz 202509121013104.file.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sz 202509121013104.code.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sz 202509121013104.sql.php.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="将数据库文件代码文件禅道项目上传文件进行复制到容器中"&gt;将数据库文件、代码文件、禅道项目上传文件进行复制到容器中&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;R &lt;span style="color:#0550ae"&gt;202509180030204.&lt;/span&gt;file &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;docker&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;zentao&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;zentao&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;file&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;zentao&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;www&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;upload&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#0550ae"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 这里sql.php 如果开始有php代码，记得删除，然后再执行sql还原命令&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp &lt;span style="color:#0550ae"&gt;202509121013104.&lt;/span&gt;sql &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;docker&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;zentao&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;data&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;zentao&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;db&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="进入到mysql或者mariadb容器配置一下参数"&gt;进入到&lt;code&gt;MySQL&lt;/code&gt;或者&lt;code&gt;mariadb&lt;/code&gt;容器,配置一下参数&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 进入sql数据库&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql -uroot -pwoshishujukumima&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 执行以下命令&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set global sql_mode=&amp;#39;&amp;#39;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SET GLOBAL innodb_flush_log_at_trx_commit=0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SET GLOBAL sync_binlog=0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="参考地址"&gt;参考地址：&lt;/h5&gt;&#10;&lt;p&gt;&lt;a href="https://www.zentao.net/thread/295303.html" target="_blank" rel="noopener noreferrer"&gt;https://www.zentao.net/thread/295303.html&lt;/a&gt;&#13;&#10;&lt;/p&gt;&#10;</description></item><item><title>【mysql】mysql备份与还原数据库的常用命令</title><link>https://jiaochengziyuan.cn/p/mysqlmysql%E5%A4%87%E4%BB%BD%E4%B8%8E%E8%BF%98%E5%8E%9F%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/</link><pubDate>Thu, 18 Sep 2025 16:38:59 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/mysqlmysql%E5%A4%87%E4%BB%BD%E4%B8%8E%E8%BF%98%E5%8E%9F%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/</guid><description>&lt;h4 id="一备份数据"&gt;一、备份数据：&lt;/h4&gt;&#10;&lt;h5 id="mysqldump常用命令"&gt;Mysqldump常用命令：&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 &amp;gt; xxx.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="常见选项"&gt;常见选项：&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-u: 用户名&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-p: 密码&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-P: 端口号，不写默认3306&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--all-databases, -A：备份所有数据库&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--databases, -B: 用于备份多个数据库，如果没有该选项，mysqldump把第一个名字参数作为数据库名，后面的作为表名。使用该选项，mysqldum把每个名字都当作为数据库名。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-d: 只导出数据库的表结构&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-t: 只导出数据库的数据&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--quick, -q：快速导出&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;--xml, -X：导出为xml文件&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="下面是具体的使用samples"&gt;下面是具体的使用samples:&lt;/h4&gt;&#10;&lt;h5 id="1-备份全部数据库的数据和结构-a"&gt;1. 备份全部数据库的数据和结构（-A）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 -A &amp;gt; 0101.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="2-备份全部数据库的结构-d"&gt;2. 备份全部数据库的结构（-d）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 -P3306 -A -d &amp;gt; 0102.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="3-备份全部数据库的数据-t"&gt;3. 备份全部数据库的数据（-t）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 -P3306 -A -t &amp;gt; 0103.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="4-备份单个数据库的数据和结构sakila-为数据库名"&gt;4. 备份单个数据库的数据和结构（sakila 为数据库名）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 -P3306 sakila &amp;gt; 0104.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="5-备份单个数据库结构sakila-为数据库名-d"&gt;5. 备份单个数据库结构（sakila 为数据库名，-d）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 -P3306 sakila -d &amp;gt; 0105.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="6-备份单个数据库数据sakila-为数据库名-t"&gt;6. 备份单个数据库数据（sakila 为数据库名，-t）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 -P3306 sakila -t &amp;gt; 0106.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="7-备份多个表的结构和数据-table1table2为表名"&gt;7. 备份多个表的结构和数据 (table1,table2为表名)&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 -P3306 sakila table1 table2 &amp;gt; 0107.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="8-一次备份多个数据库"&gt;8. 一次备份多个数据库&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqldump -uroot -p123456 --databases db1 db2 &amp;gt; 0108.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="二还原数据库"&gt;二、还原数据库：&lt;/h4&gt;&#10;&lt;h5 id="1-系统命令行"&gt;1. 系统命令行：&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysqladmin -uroot -p123456 create db_name &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql -uroot -p123456 db_name &amp;lt; d:\bak\0101.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注：在导入备份数据库前，db_name如果没有，是需要创建的； 而且与backup20110527.sql中数据库名是一样的才可以导入。&lt;/p&gt;&#10;&lt;h5 id="2-soure-方法"&gt;2. soure 方法：&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql &amp;gt; use db&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mysql &amp;gt; source d:\bak\0101.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Comments：&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1. 还原单个数据库、单个数据库的多表需要指定数据库，而还原多个数据库时不用指定数据库。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2. 区别：备份用的命令是mysqldump， 还原用的是mysql。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【redis】rockylinux利用防火墙放行redis端口</title><link>https://jiaochengziyuan.cn/p/redisrockylinux%E5%88%A9%E7%94%A8%E9%98%B2%E7%81%AB%E5%A2%99%E6%94%BE%E8%A1%8Credis%E7%AB%AF%E5%8F%A3/</link><pubDate>Wed, 17 Sep 2025 16:50:19 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/redisrockylinux%E5%88%A9%E7%94%A8%E9%98%B2%E7%81%AB%E5%A2%99%E6%94%BE%E8%A1%8Credis%E7%AB%AF%E5%8F%A3/</guid><description>&lt;h6 id="检查防火墙状态"&gt;检查防火墙状态&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 查看防火墙是否运行&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall-cmd --state&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 或使用systemctl检查&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl status firewalld&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="如果防火墙开启放行redis端口"&gt;如果防火墙开启，放行&lt;code&gt;Redis&lt;/code&gt;端口&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 临时放行端口（重启后失效）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;port&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;6379&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;tcp&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 永久放行端口&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;port&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;6379&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;tcp &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 重新加载防火墙配置&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;reload&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="对于redis集群多个端口"&gt;对于&lt;code&gt;Redis&lt;/code&gt;集群（多个端口）&lt;/h6&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 放行Redis集群端口范围（如7000-7005）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;port&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7000&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7005&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;tcp &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 放行Redis集群总线端口（端口号+10000）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;port&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;17000&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;17005&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;tcp &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 重新加载防火墙&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;reload&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="更安全的ip限制方式推荐"&gt;更安全的&lt;code&gt;IP&lt;/code&gt;限制方式（推荐）&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 只允许特定IP访问Redis端口&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;rich&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;rule&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;rule family=&amp;#34;ipv4&amp;#34; source address=&amp;#34;允许的IP地址&amp;#34; port protocol=&amp;#34;tcp&amp;#34; port=&amp;#34;6379&amp;#34; accept&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 对于集群&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;rich&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;rule&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;rule family=&amp;#34;ipv4&amp;#34; source address=&amp;#34;允许的IP地址&amp;#34; port protocol=&amp;#34;tcp&amp;#34; port=&amp;#34;7000-7005&amp;#34; accept&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;permanent &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;rich&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;rule&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;rule family=&amp;#34;ipv4&amp;#34; source address=&amp;#34;允许的IP地址&amp;#34; port protocol=&amp;#34;tcp&amp;#34; port=&amp;#34;17000-17005&amp;#34; accept&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cmd &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;reload&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="验证端口是否已放行"&gt;验证端口是否已放行&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 查看所有开放的端口&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall-cmd --list-ports&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 查看详细的防火墙规则&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall-cmd --list-all&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 检查特定端口是否开放&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall-cmd --query-port=6379/tcp&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="防火墙其他相关命令"&gt;防火墙其他相关命令&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 关闭防火墙，并禁止开机启动（不推荐用于生产环境）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl stop firewalld&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl disable firewalld&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 重新启用防火墙&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start firewalld&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl enable firewalld&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 查看防火墙服务是否开机启动&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl is-enabled firewalld&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>【docker-compose】使用docker-compose部署dufs文件服务器</title><link>https://jiaochengziyuan.cn/p/docker-compose%E4%BD%BF%E7%94%A8docker-compose%E9%83%A8%E7%BD%B2dufs%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8/</link><pubDate>Wed, 17 Sep 2025 10:14:59 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/docker-compose%E4%BD%BF%E7%94%A8docker-compose%E9%83%A8%E7%BD%B2dufs%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8/</guid><description>&lt;h5 id="首先我们构建一个docker-composeyml-文件"&gt;首先，我们构建一个&lt;code&gt;docker-compose.yml&lt;/code&gt; 文件&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;services:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dufs:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; image: sigoden/dufs:latest&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; container_name: dufs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; command: /data -A&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ports:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - 5000:5000&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; volumes:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - ./data:/data&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; restart: always&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="参数接单说明"&gt;参数接单说明&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# （命令）：允许 data 目录所有操作&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;command: /data -A&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# 登录账号：user 登录密码：pass&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;command: /data -a user:pass@/:rw&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="自带webdav功能可以直接使用http地址进行挂载到本地"&gt;自带&lt;code&gt;Webdav&lt;/code&gt;功能，可以直接使用&lt;code&gt;http&lt;/code&gt;地址进行挂载到本地&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;http://10.168.1.170:5000&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="官网参考地址"&gt;官网参考地址&lt;/h5&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/sigoden/dufs" target="_blank" rel="noopener noreferrer"&gt;https://github.com/sigoden/dufs&lt;/a&gt;&#13;&#10;&lt;/p&gt;&#10;</description></item><item><title>【docker-compose】使用docker-compose部署beszel监控中心</title><link>https://jiaochengziyuan.cn/p/docker-compose%E4%BD%BF%E7%94%A8docker-compose%E9%83%A8%E7%BD%B2beszel%E7%9B%91%E6%8E%A7%E4%B8%AD%E5%BF%83/</link><pubDate>Sat, 13 Sep 2025 14:37:08 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/docker-compose%E4%BD%BF%E7%94%A8docker-compose%E9%83%A8%E7%BD%B2beszel%E7%9B%91%E6%8E%A7%E4%B8%AD%E5%BF%83/</guid><description>&lt;h5 id="首先我们搭建一个服务中心"&gt;首先，我们搭建一个服务中心&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;services:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; beszel:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; image: henrygd/beszel:0.12&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; container_name: beszel&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; restart: unless-stopped&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ports:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - 8090:8090&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; volumes:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - ./beszel_data:/beszel_data&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="然后登录web管理后台创建需要监控的具体应用"&gt;然后登录web管理后台，创建需要监控的具体应用。&lt;/h5&gt;&#10;&lt;h5 id="最后再添加具体的客户端主机执行agent命令也可以参考管理后台给出的命令"&gt;最后再添加具体的客户端主机，执行&lt;code&gt;agent&lt;/code&gt;命令，也可以参考管理后台给出的命令。&lt;/h5&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 仅供参考，具体可以参考管理后台&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;d &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;name beszel&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;agent &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;network host &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;restart unless&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;stopped &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;v &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;docker&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;sock&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;run&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;docker&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;sock&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;ro &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;v &lt;span style="color:#0550ae"&gt;./&lt;/span&gt;beszel_agent_data&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;&lt;span style="color:#cf222e"&gt;var&lt;/span&gt;&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;lib&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;beszel&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;agent &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;e KEY&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII3EgZw7YejMxsdfidsCWS3GynYjYvH235cJ7&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;e LISTEN&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;45876&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;e TOKEN&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;717d-5c3747d2e4-x09c-68ca3xeca&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;e HUB_URL&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;http://10.168.1.170:8090&amp;#34;&lt;/span&gt; henrygd&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;beszel&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;agent&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;0.12&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="官网参考地址"&gt;官网参考地址&lt;/h5&gt;&#10;&lt;p&gt;&lt;a href="https://beszel.dev/zh/guide/getting-started" target="_blank" rel="noopener noreferrer"&gt;https://beszel.dev/zh/guide/getting-started&lt;/a&gt;&#13;&#10;&lt;/p&gt;&#10;</description></item></channel></rss>