PostgreSQL日常維護

目錄

一、PostgreSQL 概述

二、基本使用

(一)登錄數據庫

(二)數據庫操作

1. 列出數據庫

2. 創建數據庫

3. 刪除數據庫

4. 切換數據庫

5. 查看數據庫大小

(三)數據表操作

1. 列出表

2. 創建表

3. 復制表

4. 刪除表

5. 查看表結構

三、模式操作命令

(一)創建模式

(二)在指定模式中創建表

(三)切換當前模式

(四)查看當前所在 schema

(五)查看搜索路徑(Search Path)

(六)PostgreSQL 的模式隔離性

四、數據操作

(一)添加數據

(二)查詢數據

(三)修改數據

五、備份與恢復

(一)備份

(二)從轉儲中恢復

六、遠程連接 PostgreSQL

(一)配置訪問權限

(二)重啟服務

(三)驗證遠程連接

七、重置密碼

(一)備份配置文件

(二)修改配置文件

(三)重啟服務

(四)修改密碼

(五)恢復 pg_hba.conf 配置文件

?


?

一、PostgreSQL 概述

PostgreSQL(簡稱 pgsql)是一款功能強大的開源關系型數據庫,具備穩定性、擴展性以及對 SQL 標準的嚴格遵循等顯著特點。這些優勢使其在企業級開發與數據分析場景中得到廣泛應用。本筆記將圍繞 pgsql 的日常使用展開,涵蓋從基礎登錄到核心操作的完整流程,助力讀者掌握數據庫連接管理、庫表創建與操作、模式(Schema)設計、遠程訪問權限配置以及賬戶安全維護等關鍵技能。

二、基本使用

(一)登錄數據庫

在登錄 PostgreSQL 時,必須使用 postgres 用戶。具體操作步驟如下:

[root@bogon ~]# su -- postgres  # 切換到 postgres 用戶
[postgres@bogon ~]$ /usr/local/pgsql/bin/psql  # 啟動 psql 客戶端

?

登錄成功后,命令提示符將變為 “postgres=#”,其中 “postgres” 表示當前所在的數據庫。

(二)數據庫操作

1. 列出數據庫

在 PostgreSQL 中,有三種常用的列出數據庫的方法:

?

  • 方法一:使用元命令 \l
    在 psql 交互式終端中,以 “\” 開頭的命令稱為元命令,類似 MySQL 的 SHOW 語句,可用于快速管理數據庫。輸入 “\l” 即可列出所有數據庫。
  • 方法二:使用擴展元命令 \l+
    “\l+” 的輸出比 “\l” 多了 Size、Tablespace 和 Description 列,能提供更詳細的數據庫信息。輸入 “\l+” 即可查看擴展后的數據庫列表。
  • 方法三:使用 SQL 命令
    通過查詢系統表 pg_database 來獲取所有數據庫的信息,SQL 語句如下:
    postgres=# SELECT datname FROM pg_database;
    

    pg_database 是系統表,存儲了 PostgreSQL 實例中所有數據庫的元信息,如數據庫名稱、所有者、編碼等。它屬于系統目錄(System Catalog),類似 MySQL 的 information_schema,但 PostgreSQL 的系統目錄更底層且直接存儲在 pg_catalog 模式中。由于系統表默認屬于 pg_catalog 模式,且 pg_catalog 始終位于搜索路徑(search_path)的首位,因此查詢時無需顯式指定模式。

2. 創建數據庫

使用 CREATE DATABASE 語句創建新的數據庫,示例如下:

postgres=# create database mydb;

3. 刪除數據庫

若要刪除不再需要的數據庫,可使用 DROP DATABASE 語句,示例如下:

postgres=# drop database mydb;

4. 切換數據庫

在 psql 中,使用 \c 元命令切換當前連接的數據庫,示例如下:

postgres=# \c mydb
You are now connected to database "mydb" as user "postgres".
mydb=#

5. 查看數據庫大小

  • 使用 pg_database_size 函數以字節為單位返回數據庫的大小,示例如下:
    postgres=# SELECT pg_database_size('mydb');
    
  • 使用 pg_size_pretty () 函數將字節轉換為更易于閱讀的值,示例如下:
    postgres=# SELECT pg_size_pretty(pg_database_size('mydb'));
    

(三)數據表操作

1. 列出表

在 PostgreSQL 中,有多種列出表的方法:

?

  • 使用元命令 \dt:列出當前數據庫中 search_path 中模式里的表(默認 public 模式),示例如下:
    mydb=# \dt;
    
  • 使用元命令 \d:列出表、視圖和序列,示例如下:
    mydb=# \d
    
  • 使用元命令 \d+:列出更詳細的表信息,示例如下:
    mydb=# \d+
    
  • 使用元命令 \dt my_schema.*:列出指定模式下的表(例如 my_schema),示例如下:
    mydb=# \dt my_schema.*
    
  • 使用元命令 \dt?.:查看當前數據庫的所有表(包括系統表),示例如下:
    mydb=# \dt *.*
    
  • 使用 SQL 命令:通過查詢 pg_tables 視圖列出當前數據庫中指定模式下的所有表及其詳細信息,pg_tables 屬于 pg_catalog 模式,是基于 pg_class 和 pg_namespace 的邏輯視圖,并非物理表。無需切換數據庫,直接查詢 pg_catalog.pg_tables 即可獲取當前數據庫的表信息,示例如下:
    mydb=# SELECT * FROM pg_tables WHERE schemaname = 'public';
    

2. 創建表

PostgreSQL 支持標準的 SQL 類型,如 int、smallint、real、double precision、char (N)、varchar (N)、date、time、timestamp 和 interval 等,還支持其他通用功能的類型和豐富的幾何類型,并且可以定制任意數量的用戶定義數據類型。創建表的示例如下:

postgres=# create table test(id int, name char(10), age int);

3. 復制表

要將已有的 table_name 表復制為新表 new_table,包括表結構和數據,可使用以下語句:

CREATE TABLE new_table AS TABLE table_name;

?

例如,將 test 表復制為 test2 表:

postgres=# CREATE TABLE test2 AS TABLE test;

4. 刪除表

使用 DROP TABLE 語句刪除表,示例如下:

postgres=# drop table test2;

5. 查看表結構

使用 \d 元命令查看表結構,示例如下:

postgres=# \d test;

?

輸出結果將顯示表的欄位、類型、校對規則、可空性和預設值等信息。

三、模式操作命令

在 PostgreSQL 中,模式(Schema)是一個邏輯容器,用于組織和管理數據庫對象(如表、視圖、函數、索引等),類似于文件系統中的文件夾。它可以幫助在同一個數據庫中分類存儲不同的對象,避免命名沖突,并實現權限隔離。

(一)創建模式

在當前庫 postgres 中創建名為 hr 的模式,示例如下:

postgres=# CREATE SCHEMA hr;

(二)在指定模式中創建表

未指定模式時,創建的對象(表、視圖等)會按 search_path 順序創建到第一個可用的模式中。在 postgres 庫中的 hr 模式下創建一個名為 employees 的表,示例如下:

postgres=# CREATE TABLE hr.employees (id SERIAL PRIMARY KEY, name TEXT);

(三)切換當前模式

切換模式也就是調整 search_path 的搜索范圍。

?

  • 切換到單個 schema,示例如下:
    SET search_path TO new_schema;
    
  • 切換到多個 schema(按優先級順序),示例如下:
    SET search_path TO hr, public;
    

    表示優先搜索 hr 模式,其次是 public 模式。

(四)查看當前所在 schema

使用 current_schema () 函數查看當前所在的 schema,示例如下:

postgres=# SELECT current_schema();

(五)查看搜索路徑(Search Path)

使用 SHOW search_path 命令查看當前的搜索路徑,示例如下:

postgres=# SHOW search_path;

(六)PostgreSQL 的模式隔離性

PostgreSQL 的模式是數據庫內的邏輯分組,不同模式可以存在同名表,這是與 MySQL 的不同之處。跨模式查詢需顯式指定模式名(如 schemal.users),或通過 search_path 設置默認模式,無需切換數據庫連接,所有操作在同一數據庫內完成。以下是一個跨模式查詢的示例:

?

  1. 創建一個數據庫 mydb,并切換到該數據庫:
    postgres=# CREATE DATABASE mydb;
    postgres=# \c mydb
    
  2. 在數據庫中創建兩個模式 schemal 和 schema2:
    mydb=# CREATE SCHEMA schemal;
    mydb=# CREATE SCHEMA schema2;
    
  3. 在每個模式中創建同名表,并插入數據:
    mydb=# CREATE TABLE schemal.users (id int);
    mydb=# INSERT INTO schemal.users VALUES(1);
    mydb=# CREATE TABLE schema2.users (id int);
    mydb=# INSERT INTO schema2.users VALUES(2);
    
  4. 跨模式查詢:
    • 顯式指定模式名查詢:
      mydb=# SELECT * FROM schemal.users;
      mydb=# SELECT * FROM schema2.users;
      
    • 設置 search_path 切換默認模式查詢:
      mydb=# SET search_path TO schemal;
      mydb=# SELECT * FROM users; -- 默認訪問 schemal.users
      mydb=# SET search_path TO schema2;
      mydb=# SELECT * FROM users; -- 默認訪問 schema2.users
      

四、數據操作

(一)添加數據

在 postgres 庫中新建表 test,并插入數據,示例如下:

postgres=# create table test(id int, name char(10), age int);
postgres=# insert into test values(1,'zhangsan', 18);

(二)查詢數據

使用 SELECT 語句查詢表中的數據,示例如下:

postgres=# select * from test;

(三)修改數據

使用 UPDATE 語句修改表中的數據,示例如下:

postgres=# update test set age=20 where id=1;

五、備份與恢復

(一)備份

pg_dump 是 PostgreSQL 中用于備份數據庫的工具。它可以備份整個數據庫、單個模式或單個表。以下是使用 pg_dump 備份數據庫的基本命令:

pg_dump -U username -h host -p port dbname > dumpfile

?

其中:

?

  • -U username:指定連接數據庫的用戶名。
  • -h host:指定數據庫服務器的主機名或 IP 地址。
  • -p port:指定數據庫服務器的端口號。
  • dbname:指定要備份的數據庫名稱。
  • dumpfile:指定備份文件的名稱和路徑。

?

如果沒有足夠的特權來備份整個數據庫,仍然可以使用諸如 -n schema 或 -t table 選項來備份該數據庫中能夠訪問的部分。例如,備份指定模式 schema1 中的數據:

pg_dump -U postgres -h localhost -p 5432 mydb -n schema1 > schema1_backup.sql

?

要聲明 pg_dump 連接哪個數據庫服務器,使用命令行選項 -h host 和 -p port。默認主機是本地主機或 PGHOST 環境變量指定的主機,默認端口是環境變量 PGPORT 或(如果 PGPORT 不存在)內建的默認值。pg_dump 默認使用與當前操作系統用戶名同名的數據庫用戶名進行連接,要使用其他名字,要么聲明 -U 選項,要么設置環境變量 PGUSER。請注意,pg_dump 的連接也要通過客戶認證機制。

?

pg_dump 對于其他備份方法的一個重要優勢是,其輸出可以很容易地在新版本的 PostgreSQL 中載入,而文件級備份和連續歸檔都是極度的服務器版本限定的。pg_dump 也是唯一可以將一個數據庫傳送到一個不同機器架構上的方法,例如從一個 32 位服務器到一個 64 位服務器。由 pg_dump 創建的備份在內部是一致的,也就是說,轉儲表現了 pg_dump 開始運行時刻的數據庫快照,且在 pg_dump 運行過程中發生的更新將不會被轉儲。pg_dump 工作的時候并不阻塞其他的對數據庫的操作(但是會阻塞那些需要排它鎖的操作,比如大部分形式的 ALTER TABLE)。

(二)從轉儲中恢復

pg_dump 生成的文本文件可以由 psql 程序讀取。從轉儲中恢復的常用命令是:

psql dbname < dumpfile

?

其中 dumpfile 就是 pg_dump 命令的輸出文件。這條命令不會創建數據庫 dbname,必須在執行 psql 前自己從 template0 創建(例如,用命令 createdb -T template0 dbname)。psql 支持類似 pg_dump 的選項用以指定要連接的數據庫服務器和要使用的用戶名。非文本文件轉儲可以使用 pg_restore 工具來恢復。

?

在開始恢復之前,轉儲庫中對象的擁有者以及在其上被授予了權限的用戶必須已經存在。如果它們不存在,那么恢復過程將無法將對象創建成具有原來的所屬關系以及權限(有時候這就是所需要的,但通常不是)。

?

默認情況下,psql 腳本在遇到一個 SQL 錯誤后會繼續執行。如果希望在遇到一個 SQL 錯誤后讓 psql 退出,那么可以設置 ON_ERROR_STOP 變量來運行 psql,這將使 psql 在遇到 SQL 錯誤后退出并返回狀態 3,示例如下:

psql --set ON_ERROR_STOP=on dbname < infile

六、遠程連接 PostgreSQL

(一)配置訪問權限

默認情況下,PostgreSQL 只能本地訪問,要允許遠程連接,需要在 pg_hba.conf 配置文件中進行配置。找到 IPv4 local connections 這一行,在這一行下面添加以下內容:

host all all 0.0.0.0/0 trust

?

其中:

?

  • host:指定連接類型,host 表示該規則適用于通過 TCP/IP 進行的遠程連接,如果是本地連接,通常會使用 local。
  • all:定義哪些數據庫可以接受這個規則,all 表示適用于所有數據庫,也可以指定特定的數據庫名。
  • all:定義哪些用戶可以接受這個規則,all 表示適用于所有用戶,也可以指定特定的用戶名。
  • 0.0.0.0/0:定義哪些客戶端 IP 地址或 IP 地址范圍可以接受這個規則,0.0.0.0/0 表示任何 IP 地址(即沒有 IP 地址限制),也可以指定具體的 IP 地址或 IP 地址范圍。
  • trust:定義認證方法,trust 表示不需要密碼或其他任何形式的認證,客戶端可以直接連接。這通常只在本地或受信任的網絡環境中使用,因為它允許任何人無需認證即可訪問數據庫,在生產環境中,應該使用更安全的認證方法,如 md5 或 password(對于較新版本的 PostgreSQL,建議使用 scram-sha-256)。

?

如果選擇使用 md5 或 password 等需要密碼的認證方法,需要先為用戶設置密碼,示例如下:

postgres=# ALTER USER postgres WITH PASSWORD '123456';

(二)重啟服務

配置完 pg_hba.conf 文件后,需要重啟 PostgreSQL 服務,使配置生效,示例如下:

[root@localhost ~]# systemctl start postgresql

(三)驗證遠程連接

使用其它主機遠程連接本機數據庫,根據配置的認證方法不同,操作也有所不同:

?

  • 如果設置的是 trust 認證方法,無需密碼可直接登錄,示例如下:
    [postgres@localhost ~]$ psql -h 192.168.10.102
    
  • 如果設置的是 md5 或 password 等需要密碼的認證方法,登錄時需要輸入密碼,示例如下:
    [postgres@localhost ~]$ psql -h 192.168.10.102
    Password for user postgres:
    

七、重置密碼

如果忘記了 PostgreSQL 的密碼,可以通過以下步驟重置密碼:

(一)備份配置文件

對 pg_hba.conf 文件進行備份,示例如下:

[root@localhost ^]# cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.confbak

(二)修改配置文件

修改配置文件以信任本地連接不需要密碼,將配置文件中的認證方法(如 scram-sha-256 或者 md5)修改為 trust,示例如下:

[root@localhost ^]# vim /var/lib/pgsql/data/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 trust

(三)重啟服務

修改完配置文件后,重啟 PostgreSQL 服務,示例如下:

[root@localhost ^]# systemctl restart postgresql

(四)修改密碼

登錄數據庫修改密碼,密碼自定義,示例如下:

postgres=# ALTER USER postgres WITH PASSWORD 'new_password';

(五)恢復 pg_hba.conf 配置文件

將備份的 pg_hba.confbak 文件的內容覆蓋 pg_hba.conf,重啟 PostgreSQL 數據庫服務器,重新登陸時,如果提示輸入密碼,則輸入剛才修改的密碼即可。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80819.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80819.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80819.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

廣東省省考備考(第十六天5.21)—言語:語句排序題(聽課后強化)

錯題 解析 對比選項&#xff0c;確定首句。①句介紹目前人類可以利用一些技術手段進入元宇宙&#xff0c;憑借網絡重新定義自己&#xff0c;體驗一種全新的生活&#xff0c;②句介紹對于多數人來說&#xff0c;首先要弄清楚什么是元宇宙&#xff0c;③句介紹元宇宙是指超越現實…

高并發架構設計之限流

一、引言 再強大的系統&#xff0c;也怕流量短事件內集中爆發&#xff0c;就像銀行怕擠兌一樣&#xff0c;所以&#xff0c;高并發另一個必不可少的模塊就是限流。限流是一種通過控制請求的速率或數量來保護系統免受過載的技術。流控的精髓是限制單位時間內的請求量&#xff0…

視頻監控聯網系統GB28181協議中設備控制流程詳解

文章目錄 9.3 設備控制9.3.1 基本要求9.3.2 命令流程9.3.2.1 無應答命令流程 9.3.3 協議接口9.3.3.1 請求命令9.3.3.2 應答命令 智聯視頻超融合平臺介紹 9.3 設備控制 9.3.1 基本要求 控制滿足以下基本要求&#xff1a; a) 源設備向目標設備發送控制命令&#xff0c;控制命令…

深入剖析原型模式:原理、實現與應用實踐

在軟件開發的世界里,設計模式如同建筑師手中的藍圖,為復雜系統的構建提供了行之有效的解決方案。其中,原型模式(Prototype Pattern)作為創建型設計模式的重要一員,以其獨特的對象創建方式,在提高代碼復用性、增強系統靈活性等方面發揮著關鍵作用。本文將深入剖析原型模式…

圖繪Linux:基礎指令脈絡閣

目錄 Linux命令行介紹 目錄操作 ls 目錄所含文件信息 ls 常用選項 pwd 在那個目錄下 cd 進入目錄 mkdir 創建目錄 文件操作 touch 創建普通文件 echo向文件寫入 cat 輸出文件內容 cp 拷貝文件/目錄 mv剪切重命名 rm 刪除文件/目錄 查找 * 匹配符 man 查找指令 …

數據分析 —— 數據預處理

一、什么是數據預處理 數據預處理&#xff08;Data Preprocessing&#xff09;是數據分析和機器學習中至關重要的步驟&#xff0c;旨在將原始數據轉換為更高質量、更適合分析或建模的形式。由于真實世界的數據通常存在不完整、不一致、噪聲或冗余等問題&#xff0c;預處理可以…

【Redis】哨兵(Sentinel)機制

文章目錄 1. Redis Sentinel的概念1.1 基本概念1.2 引出高可用 2. Redis Sentinel的部署&#xff08;基于docker&#xff09;2.1 部署2.2 驗證2.3 選舉流程 Redis 的主從復制模式下&#xff0c;?旦主節點由于故障不能提供服務&#xff0c;需要人工進行主從切換&#xff0c;同時…

初識Linux · 五種IO模型和非阻塞IO

目錄 前言&#xff1a; 五種IO模型 什么是IO IO模型 非阻塞IO 前言&#xff1a; 前文我們已經將網絡的基本原理介紹完了&#xff0c;都是通過圍繞TCP/IP四層協議&#xff0c;將應用層&#xff0c;傳輸層&#xff0c;網絡層&#xff0c;數據鏈路層全部介紹完畢&#xff0c…

Node.js 24發布:性能與安全雙提升

在科技的迅速發展中&#xff0c;Node.js作為一個備受青睞的開源跨平臺Java運行環境&#xff0c;近日迎來了其24.0版本的正式發布。此次更新不僅承諾提升性能和安全性&#xff0c;還為開發者提供了更為順暢的開發體驗&#xff0c;值得我們深入探討。 Node.js 24.0的最大亮點之一…

SLAM文獻之-SuperOdometry: Lightweight LiDAR-inertial Odometry and Mapping

《Super Odometry: IMU-centric LiDAR-Visual-Inertial Estimator for Challenging Environments》是一篇旨在增強 SLAM 系統在惡劣環境下魯棒性的工作&#xff0c;尤其關注塵霧、煙霧等遮擋條件下的魯棒估計。下面從算法原理、公式推導、創新點和應用場景四個方面進行詳細解析…

指令燒錄ORIN NANO操作系統

1 概述 模組為ORIN NANO 4GB版本 Ubuntu系統為18.04虛擬機 說明&#xff1a;刷機過程會有重新連接USB的操作&#xff0c;燒寫過程需要注意虛擬機提示&#xff0c;官方不建議使用虛擬機&#xff0c;建議直接使用ubuntu操作系統的機器。 2 下載燒錄所需文件 進入到下載網址&am…

游戲引擎學習第287天:加入brain邏輯

Blackboard&#xff1a;動態控制類似蛇的多節實體 我們目前正在處理一個關于實體系統如何以組合方式進行管理的問題。具體來說&#xff0c;是在游戲中實現多個實體可以共同或獨立行動的機制。例如&#xff0c;我們的主角擁有兩個實體組成部分&#xff0c;一個是身體&#xff0…

QML定時器Timer和線程任務WorkerScript

定時器 Timer 屬性 interval: 事件間隔毫秒repeat: 多次執行&#xff0c;默認只執行一次running: 定時器啟動triggeredOnStart: 定時器啟動時立刻觸發一次事件 信號 triggered(): 定時時間到&#xff0c;觸發此信號 方法 restart(): 重啟定時器start(): 啟動定時器stop(): 停止…

Linux中的域名解析服務器

一、DNS&#xff08;域名系統&#xff09;詳解 1. 核心功能與特點 特性說明核心作用將域名&#xff08;如 www.example.com&#xff09;轉換為 IP 地址&#xff08;如 192.168.1.1&#xff09;&#xff0c;實現人類可讀地址與機器可讀地址的映射。端口與協議- 默認端口&#…

Springboot2

1、搭建環境 2、配置文件 application.properties application.yml 3、springboot接收請求 springspringmvc 接收請求 響應數據 4、springboot集成jdbc spring-boot-starter-jdbc.jar JdbcTemplate(update|query) 5、springboot自動裝配原理&#xff08;重點&#x…

【課堂筆記】核方法和Mercer定理

文章目錄 Kernal引入定義Mercer定理描述有限情形證明一般情形證明 Kernal 引入 在實際數據中常常遇到不可線性分割的情況&#xff0c;此時通常需要將其映射到高維空間中&#xff0c;使其變得線性可分。例如二維數據&#xff1a; 通過映射 ? ( x 1 , x 2 ) ( x 1 2 , 2 x 1…

談談未來iOS越獄或巨魔是否會消失

2024年10月的預測&#xff0c;先說結論&#xff1a; 巨魔iOS17.1消失概率為99%。 因為巨魔強依賴的漏洞就是一個簽名漏洞&#xff0c;攻擊面有限又經過2輪修復&#xff0c;第3次出現漏洞的概率極低。而越獄的話由于系統組件和服務較多&#xff0c;所以出現漏洞概率高攻擊面多&…

根據當前日期計算并選取上一個月和上一個季度的日期范圍,用于日期控件的快捷選取功能

1.選擇月份范圍 代碼如下&#xff1a; <el-date-picker v-model"value" type"monthrange" align"right" unlink-panels range-separator"至"start-placeholder"開始月份" end-placeholder"結束月份" :picker-…

用戶棧的高效解析邏輯

一、背景 在之前的博客 內核邏輯里抓取用戶棧的幾種方法-CSDN博客 里&#xff0c;介紹了使用內核邏輯進行用戶棧的函數地址的抓取邏輯&#xff0c;但是并沒有涉及如何解析出函數符號的邏輯。 就如perf工具一樣&#xff0c;它也是分為兩個步驟&#xff0c;一個步驟是內核態抓取…

vue3 el-table 行號

在 Vue 3 中&#xff0c;使用 Element Plus 的 <el-table> 組件來創建表格時&#xff0c;如果你想添加行號&#xff08;即每一行的編號&#xff09;&#xff0c;可以通過自定義列來實現。下面是如何實現的步驟&#xff1a; 1. 安裝 Element Plus 首先&#xff0c;確保你…