<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      📘 PostgreSQL 入門 (介紹 -> 安裝 -> 配置)

      官方地址:https://www.postgresql.org/
      中文官方文檔:http://www.postgres.cn/docs/14/

      一:?? PostgreSQL 簡介

      1、引言:為什么選擇 PostgreSQL?

      在數(shù)據(jù)庫世界里,有這樣一款系統(tǒng),它不僅開源免費,還擁有強大的功能、良好的兼容性、極高的擴展性,并被全球無數(shù)企業(yè)和開發(fā)者所信賴——它就是 PostgreSQL,簡稱 Postgres

      如果你曾經(jīng)使用過 MySQL、SQL Server 或 Oracle,那么 PostgreSQL 將是你通往更高階數(shù)據(jù)庫技術的理想選擇。它被譽為“世界上最先進的開源關系型數(shù)據(jù)庫系統(tǒng)”。


      2、PostgreSQL 是什么?

      PostgreSQL 是一個功能強大、符合 SQL 標準的對象-關系型數(shù)據(jù)庫系統(tǒng)。

      • 關系型數(shù)據(jù)庫:數(shù)據(jù)以表格形式組織,通過 SQL 查詢語言操作。

      • 對象特性:支持繼承、復雜數(shù)據(jù)類型、用戶自定義函數(shù)等面向對象特性。

      • 開源免費:采用 PostgreSQL 許可證(類似于 MIT),可自由用于商業(yè)和個人項目。

      • 跨平臺支持:Windows、Linux、macOS 皆可運行。


      3、PostgreSQL 的核心優(yōu)勢

      ? 1. 標準合規(guī) + 功能強大

      • 完全支持 SQL 標準(SQL:2011)

      • 支持事務、外鍵、視圖、觸發(fā)器、存儲過程等

      • 支持 多版本并發(fā)控制(MVCC),無鎖讀寫更高效

      ? 2. 豐富的數(shù)據(jù)類型

      除了常規(guī)的 INTEGERVARCHARBOOLEAN 外,PostgreSQL 還支持:

      • JSON / JSONB:高效處理結構化文檔數(shù)據(jù)

      • ARRAY:數(shù)組類型,可直接存儲多個值

      • UUID, HSTORE, CIDR, GEOMETRY 等專業(yè)類型

      ? 3. 高度可擴展

      PostgreSQL 支持動態(tài)加載擴展模塊,比如:

      • PostGIS:空間地理信息處理

      • pg_trgm:字符串相似度搜索

      • full-text search:全文索引與搜索

      開發(fā)者還可以創(chuàng)建自己的:

      • 數(shù)據(jù)類型

      • 操作符

      • 索引方法

      • 存儲過程(支持多種語言,如 PL/pgSQL、Python、SQL、C)

      ? 4. 安全性和可靠性

      • 支持細粒度權限控制(基于用戶、角色)

      • 提供備份/恢復工具(如 pg_dumppg_restore

      • 支持 WAL(Write-Ahead Logging)機制,保障數(shù)據(jù)完整性


      4、PostgreSQL 應用場景

      PostgreSQL 被廣泛應用于以下領域:

      • ?? 企業(yè)級系統(tǒng):銀行、ERP、CRM 系統(tǒng)

      • ?? Web 開發(fā):與 Django、Ruby on Rails、Node.js 等框架集成

      • ?? 大數(shù)據(jù)分析:結合 TimescaleDB 做時間序列數(shù)據(jù)分析

      • ?? 地理信息系統(tǒng)(GIS):配合 PostGIS 處理地圖和位置數(shù)據(jù)


      5、PostgreSQL 與其他數(shù)據(jù)庫的比較

      特性 PostgreSQL MySQL Oracle SQLite
      開源免費 ? ? ?(商業(yè)許可) ?
      標準兼容性 ????? ??? ???? ??
      擴展性 ????? ?? ???? ?
      支持事務 ? ? ? ?
      JSON 支持 高效原生支持 基本支持 中等 基本支持
      MVCC 并發(fā)控制 ?(強大) 部分支持 ?(強大) ?

      二:?? PostgreSQL安裝

      官方地址:https://www.postgresql.org/download/

      1、環(huán)境說明

      在開始 PostgreSQL 的學習和實踐之前,首先明確我們的系統(tǒng)環(huán)境和目標版本:

      • 操作系統(tǒng):Ubuntu 22.04 LTS

      • PostgreSQL 版本:14.18,14.15

      PostgreSQL 的安裝和配置方式會隨著系統(tǒng)和版本略有不同,本筆記以 Ubuntu 系統(tǒng)為例,演示兩種常見安裝方式:apt 安裝 和 源碼編譯安裝。


      2、安裝方式詳解

      方法一:使用 APT 包管理器安裝(推薦)-version14.18

      Ubuntu 默認的軟件源通常包含 PostgreSQL,但版本可能不是最新。為確保安裝的是你指定的 14.18 版本,推薦添加官方 PostgreSQL 倉庫。

      步驟:

      # 1. 更新系統(tǒng)軟件包索引
      sudo apt update
      
      # 2. 安裝必要工具
      sudo apt install wget ca-certificates gnupg lsb-release
      
      # 3. 自動化存儲庫配置:
      sudo apt install -y postgresql-common
      sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
      復制腳本
      # 4. 要手動配置 Apt 存儲庫,請按照以下步驟操作:
      > 導入存儲庫簽名密鑰:
      sudo apt install curl ca-certificates
      sudo install -d /usr/share/postgresql-common/pgdg
      sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
      > 創(chuàng)建存儲庫配置文件:
      . /etc/os-release
      sudo sh -c “echo 'deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main' > /etc/apt/sources.list.d/pgdg.list”
      
      # 5. 更新軟件包列表:
      sudo apt update
      
      # 6. 安裝最新版本的 PostgreSQL:
      # 如果您想要特定版本,請使用“postgresql-17”或類似版本代替“postgresql”
      sudo apt -y install postgresql-14
      

      服務管理命令:

      • 確保服務啟動
      # 啟動 PostgreSQL
      sudo systemctl start postgresql
      
      # 設置開機自啟
      sudo systemctl enable postgresql
      
      # 查看服務狀態(tài)
      sudo systemctl status postgresql
      

      安裝完成后,確認版本:

      默認情況下,Postgres使用稱為“角色”的概念來處理認證和授權。這些在某些方面類似于常規(guī)的Unix/Linux用戶和組。安裝過程中創(chuàng)建了一個名為postgres的用戶賬戶,它與默認的Postgres角色相關聯(lián)。

      有幾種方法可以使用這個賬戶訪問Postgres。一種是切換到服務器上的postgres賬戶:

      su postgres
      

      然后你可以通過運行以下命令訪問Postgres提示符:

      psql
      

      這將登錄到PostgreSQL提示符,從這里你可以立即與數(shù)據(jù)庫管理系統(tǒng)交互。

      要退出PostgreSQL提示符,運行以下命令:

      \q
      

      這將帶你回到postgres Linux命令提示符。要返回到你的常規(guī)系統(tǒng)用戶,運行exit命令:

      exit
      

      另一種連接到Postgres提示符的方法是直接使用sudo運行psql命令:

      sudo -u postgres psql
      

      這將直接登錄到Postgres,無需中間的bash shell。

      同樣,你可以通過運行以下命令退出交互式Postgres會話:

      \q
      

      查看版本

      postgres@zabbix-proxy:~$ psql --version
      psql (PostgreSQL) 14.18 (Ubuntu 14.18-1.pgdg22.04+1)
      

      參考鏈接:https://www.postgresql.org/download/linux/ubuntu/

      方法二:源碼編譯安裝(適用于自定義或特殊需求)-version14.15

      源碼安裝適合需要自定義配置、調(diào)試源碼或安裝非官方補丁的高級用戶。

      步驟:

      # 1. 安裝依賴工具和庫
      sudo apt update
      sudo apt install build-essential libreadline-dev zlib1g-dev flex bison  gcc make pkg-config liblz4-dev zlib1g-dev libssl-dev
      
      # 2. 下載源碼(指定版本)
      wget https://ftp.postgresql.org/pub/source/v14.15/postgresql-14.15.tar.gz
      
      # 3. 解壓源碼包
      tar -xvzf postgresql-14.15.tar.gz
      cd postgresql-14.15
      
      # 4. 配置編譯參數(shù)
      ./configure --prefix=/app/postgresql/
      
      # 5. 編譯并安裝
      make -j$(nproc)
      sudo make install
      

      創(chuàng)建運行用戶

      sudo useradd -m -s /bin/bash postgres
      sudo passwd postgres
      

      用戶添加sudo權限

      cat <<EOF | sudo tee /etc/sudoers.d/postgres > /dev/null 
      postgres    ALL=(ALL)       ALL
      EOF
      

      創(chuàng)建存儲目錄

      sudo mkdir -p /data/{pg_data,pg_wal}
      sudo chown -R postgres. /data/{pg_data,pg_wal}
      sudo chmod 700 /data/{pg_data,pg_wal}
      

      設置環(huán)境變量

      sudo su - postgres
      
      cat <<'EOF' | tee -a ~/.bashrc >>/dev/null
      # Postgresql Service Environment variable
      export PGHOME=/app/postgresql
      export PGDATA=/data/pg_data
      export LD_LIBRARY=$PGHOME/lib
      export PATH=$PGHOME/bin:$PATH
      EOF
      
      source ~/.bashrc
      

      初始化數(shù)據(jù)庫

      sudo su - postgres
      
      initdb --pgdata=/data/pg_data --waldir=/data/pg_wal --encoding=UTF8 --locale=en_US.utf8 --auth=scram-sha-256 --username=postgres --pwprompt
      
      postgres@sql:~$ initdb --pgdata=/data/pg_data --waldir=/data/pg_wal --encoding=UTF8 --locale=en_US.utf8 --auth=scram-sha-256 --username=postgres --pwprompt
      The files belonging to this database system will be owned by user "postgres".
      This user must also own the server process.
      
      The database cluster will be initialized with locale "en_US.utf8".
      The default text search configuration will be set to "english".
      
      Data page checksums are disabled.
      
      Enter new superuser password:#輸入密碼
      Enter it again:#輸入密碼
      
      fixing permissions on existing directory /data/pg_data ... ok
      fixing permissions on existing directory /data/pg_wal ... ok
      creating subdirectories ... ok
      selecting dynamic shared memory implementation ... posix
      selecting default max_connections ... 100
      selecting default shared_buffers ... 128MB
      selecting default time zone ... Asia/Shanghai
      creating configuration files ... ok
      running bootstrap script ... ok
      performing post-bootstrap initialization ... ok
      syncing data to disk ... ok
      
      Success. You can now start the database server using:
      
          pg_ctl -D /data/pg_data -l logfile start
      
      1. 初始化報錯 initdb: error: invalid locale name "en_US.utf8"

        Ubuntu 解決辦法:安裝 language-pack-en 包,查看所有 locales 方法 locale --all-locales

      1. 初始化報錯 initdb: error: invalid locale name "zh_CN.utf8"
        Ubuntu 解決辦法:安裝 language-pack-kde-zh-hans 包,查看所有 locales 方法 locale --all-locales

      添加postgresql配置

      cat <<'EOF' | tee -a $PGDATA/postgresql.conf > /dev/null
      # 服務監(jiān)聽相關配置
      listen_addresses = '*' # 監(jiān)聽地址
      port = 5432 # 監(jiān)聽端口
      
      # 設置時區(qū)
      timezone = 'Asia/Shanghai'
      log_timezone = 'Asia/Shanghai'
      
      # WAL相關配置
      wal_level = replica # 該參數(shù)決定了系統(tǒng)生成和記錄 WAL 日志的程度 logical>replica>minimal
      full_page_writes = on # 控制是否在 WAL(Write-Ahead Logging)記錄中包括整個頁面的副本,而不僅僅是被修改的部分【優(yōu)點】可以提高崩潰恢復的可靠性【缺點】WAL日志的空間使用高
      wal_log_hints = on # 控制是否在 WAL 中記錄對表的索引的更改操作的提示信息【優(yōu)點】有助于在崩潰時加速恢復過程【缺點】增加 WAL 記錄的生成量
      
      # 服務日志配置參數(shù)
      log_directory = 'logs' # 日志目錄 $PGDATA/log_directory
      logging_collector = on # 開啟日志采集
      log_destination = stderr # 日志輸出格式
      log_filename = 'postgresql-%Y-%m-%d.log' # 日志文件名稱
      log_truncate_on_rotation = on # 可重用同名日志文件
      log_rotation_age = 1d # 多長時間輪換文件記錄日志
      log_rotation_size = 0 # 日志輪換大小的參數(shù),當設置為0時不輪換
      
      # 記錄慢SQL日志設置 
      log_statement = all # 需設置跟蹤所有語句,否則只能跟蹤出錯信息,設置跟蹤的語句類型,有4種類型:none(默認), ddl, mod, all。跟蹤所有語句時可設置為 "all"。
      log_min_duration_statement = 5000 # milliseconds,記錄執(zhí)行5秒及以上的語句,跟蹤慢查詢語句,單位為毫秒。如設置 5000,表示日志將記錄執(zhí)行5秒以上的SQL語句
      
      EOF
      

      啟動服務

      1. 手工啟動服務
      pg_ctl start
      
      2. systemd啟動
      cat <<'EOF' | sudo tee /usr/lib/systemd/system/postgresql.service >> /dev/null
      [Unit]
      Description=Postgresql Server
      Documentation=https://www.postgresql.org/docs/14/index.html
      Wants=network.service
      After=network.service
      
      [Service]
      Type=forking
      User=postgres
      Environment=PGDATA=/data/pg_data
      ExecStart=/app/postgresql/bin/pg_ctl -D ${PGDATA} start
      ExecStop=/app/postgresql/bin/pg_ctl -D ${PGDATA} stop
      ExecReload=/app/postgresql/bin/pg_ctl -D ${PGDATA} reload
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      EOF
      
      sudo systemctl daemon-reload
      sudo systemctl start postgresql
      

      查看日志

      cd $PGDATA/logs/
      tail -f postgresql-`date "+%Y-%m-%d"`.log
      

      檢查版本

      postgres@sql:~$ psql --version
      psql (PostgreSQL) 14.15
      

      小結:選擇哪種安裝方式?

      安裝方式 優(yōu)點 缺點 適合人群
      apt 安裝 快速、簡單、自動配置服務 不易定制,依賴系統(tǒng)版本 初學者、生產(chǎn)環(huán)境
      編譯安裝 靈活,可自定義路徑/功能 復雜,需要手動配置環(huán)境變量等 高級用戶、開發(fā)調(diào)試

      三:?? PostgreSQL配置

      1、核心配置文件匯總

      配置文件 主要功能 默認路徑 備注
      postgresql.conf 主配置文件,控制服務器行為 [數(shù)據(jù)目錄]/ 最重要的配置文件
      pg_hba.conf 客戶端連接認證配置 [數(shù)據(jù)目錄]/ 控制訪問權限
      pg_ident.conf 用戶身份映射配置 [數(shù)據(jù)目錄]/ 用于OS用戶到DB用戶的映射
      postgresql.auto.conf 系統(tǒng)自動管理配置 [數(shù)據(jù)目錄]/ 優(yōu)先級最高

      2、配置文件詳解

      2.1 postgresql.conf - 主配置文件

      2.1.1 連接與認證配置

      # 監(jiān)聽設置
      listen_addresses = '*'          # 監(jiān)聽所有IP地址,也可指定具體IP
      port = 5432                     # 默認監(jiān)聽端口
      
      # 連接限制
      max_connections = 100           # 最大并發(fā)連接數(shù)
      authentication_timeout = 1min   # 認證超時時間
      
      # 密碼加密
      password_encryption = scram-sha-256  # 推薦使用強加密
      

      2.1.2 資源與內(nèi)存配置

      # 內(nèi)存設置
      shared_buffers = 128MB          # 共享緩沖區(qū)大小,建議為內(nèi)存的25%
      work_mem = 4MB                  # 每個操作使用的內(nèi)存
      maintenance_work_mem = 64MB     # 維護操作使用的內(nèi)存
      effective_cache_size = 1GB      # 系統(tǒng)估計緩存大小
      

      2.1.3 預寫式日志(WAL)配置

      wal_level = replica             # WAL級別:minimal, replica, logical
      

      2.1.4 日志記錄配置

      # 日志基礎設置
      logging_collector = on        # 日志開啟
      log_destination = 'stderr'    
      log_directory = 'pg_log'      # 日志路徑
      log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'  #日志文件名
      
      # 慢查詢?nèi)罩?log_min_duration_statement = 1000  # 記錄執(zhí)行超過1秒的查詢
      

      2.2 pg_hba.conf - 客戶端認證配置

      2.2.1 文件格式

      # 類型  數(shù)據(jù)庫  用戶  地址      認證方法
      TYPE  DATABASE  USER  ADDRESS   METHOD
      
      -----------
      示例:
      # local         DATABASE  USER  METHOD  [OPTIONS]
      # host          DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
      # hostssl       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
      # hostnossl     DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
      # hostgssenc    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
      # hostnogssenc  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
      

      2.2.2 連接類型

      • local:Unix域套接字連接

      • host:TCP/IP連接(SSL和非SSL)

      • hostssl:僅SSL加密的TCP/IP連接

      • hostnossl:僅非SSL的TCP/IP連接

      2.2.3 認證方法

      • trust:無條件允許連接(??生產(chǎn)環(huán)境慎用)

      • scram-sha-256:SCRAM-SHA-256密碼認證(推薦)

      • md5:MD5加密密碼認證

      • ident:通過操作系統(tǒng)用戶身份認證

      • peer:使用操作系統(tǒng)用戶名進行peer認證

      2.2.4 配置示例

      # 允許本地所有用戶信任連接
      local   all             all                                     trust
      
      # 允許本地用戶密碼認證
      local   all             all                                     scram-sha-256
      
      # 允許任意地址所有用戶對所有數(shù)據(jù)庫,密碼認證 -》遠程連接
      host    all             all             0.0.0.0                 md5
      
      # 允許網(wǎng)絡段用戶連接
      host    all             all             192.168.1.0/24          scram-sha-256
      
      # 允許特定用戶從特定IP連接特定數(shù)據(jù)庫
      host    mydb            myuser          192.168.1.100/32        scram-sha-256
      
      # SSL連接要求
      hostssl all             all             0.0.0.0/0               scram-sha-256
      

      2.3 pg_ident.conf - 用戶映射配置

      2.3.1 文件格式

      # 映射名  系統(tǒng)用戶名  PostgreSQL用戶名
      MAPNAME  SYSTEM-USERNAME  PG-USERNAME
      

      2.3.2 配置示例

      # 將操作系統(tǒng)用戶映射到數(shù)據(jù)庫用戶
      mymap   john   john_db
      mymap   jane   jane_db
      

      2.4 postgresql.auto.conf

      • ALTER SYSTEM命令自動維護
      • 優(yōu)先級高于postgresql.conf
      • 不應手動編輯此文件

      3、配置管理操作

      3.1 查找配置文件位置

      -- 查看數(shù)據(jù)目錄
      SELECT setting FROM pg_settings WHERE name = 'data_directory';
      
      -- 查看配置文件路徑
      SELECT name, setting FROM pg_settings WHERE name LIKE '%config_file%';
      

      3.2 配置生效方法

      3.2.1 重新加載配置(無需重啟)

      # 方法1:使用pg_ctl
      pg_ctl reload -D $PGDATA
      
      # 方法2:使用SQL命令
      SELECT pg_reload_conf();
      
      # 方法3:使用系統(tǒng)服務
      sudo systemctl reload postgresql
      

      3.2.2 重啟服務(完全重啟)

      # 方法1:使用pg_ctl
      pg_ctl restart -D $PGDATA
      
      # 方法2:使用系統(tǒng)服務
      sudo systemctl restart postgresql
      

      3.3 配置查看與修改

      3.3.1 查看當前配置

      -- 查看所有參數(shù)
      SELECT name, setting, unit, context FROM pg_settings;
      
      -- 查看特定參數(shù)
      SELECT name, setting FROM pg_settings WHERE name = 'shared_buffers';
      

      3.3.2 修改配置

      -- 方法1:使用ALTER SYSTEM(寫入postgresql.auto.conf)
      ALTER SYSTEM SET shared_buffers = '256MB';
      
      -- 方法2:直接編輯postgresql.conf文件
      -- 然后重新加載或重啟服務
      

      4、安全最佳實踐

      4.1 認證安全

      1. 避免使用trust認證:在生產(chǎn)環(huán)境中禁止使用

      2. 使用強密碼加密:優(yōu)先選擇scram-sha-256

      3. 限制網(wǎng)絡訪問:僅允許必要的IP段連接

      4. 使用SSL加密:對遠程連接啟用SSL

      4.2 文件權限

      # 配置文件權限設置
      chmod 600 $PGDATA/postgresql.conf
      chmod 600 $PGDATA/pg_hba.conf
      chmod 600 $PGDATA/pg_ident.conf
      

      5、故障排查技巧

      5.1 連接問題排查

      1. 檢查pg_hba.conf中的認證規(guī)則

      2. 確認listen_addresses設置正確

      3. 驗證端口是否開放和防火墻設置

      5.2 配置驗證

      # 檢查配置語法
      postgres --check-config
      
      # 查看生效的配置
      psql -c "SELECT name, setting, source FROM pg_settings WHERE source != 'default';"
      

      6、重要提醒

      1. 修改前備份:修改配置文件前務必進行備份

      2. 測試環(huán)境驗證:重要變更先在測試環(huán)境驗證

      3. 變更記錄:記錄所有配置變更及原因

      4. 監(jiān)控影響:配置變更后監(jiān)控系統(tǒng)性能

      posted @ 2025-07-06 16:31  kyle_7Qc  閱讀(114)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲影院丰满少妇中文字幕无码 | 亚洲中文精品一区二区| 亚洲国产成人AⅤ片在线观看| 国产熟睡乱子伦视频在线播放| 国产成人亚洲一区二区三区| 肉大捧一进一出免费视频| 国产精品免费看久久久无码| 一区二区三区在线 | 欧洲| 久久亚洲精品成人av无| 日本久久久www成人免费毛片丨| 最近中文字幕日韩有码| 69精品无人区国产一区| 亚洲一区在线成人av| 成人无码www在线看免费| 亚洲成年av天堂动漫网站| 亚洲精品亚洲人成人网| 最新亚洲人成无码WWW| 精品无码av无码免费专区| 免费午夜无码片在线观看影院| 久久天天躁狠狠躁夜夜躁2020| 绩溪县| 日韩熟女乱综合一区二区| 国产精品视频亚洲二区| 99热这里只有精品免费播放| 么公的好大好硬好深好爽视频| 国产99在线 | 亚洲| 亚洲熟妇无码另类久久久| 18禁视频一区二区三区| 成人av午夜在线观看| 多伦县| 精品国产综合成人亚洲区| 怡春院久久国语视频免费| 亚洲男人第一无码av网| 日本边添边摸边做边爱喷水| 男人扒开女人内裤强吻桶进去| 久久久精品2019中文字幕之3| 日韩在线视频一区二区三区| 扒开粉嫩的小缝隙喷白浆视频| 国产精品久久无码不卡黑寡妇| 中文字幕久久六月色综合| 熟女熟妇伦av网站|