主頁 > 資料庫 > postgresql 安全問題的認識

postgresql 安全問題的認識

2020-09-10 06:46:21 資料庫

Postgresql安全

分類:連接安全、賬戶安全(個人理解)

一、       連接安全:

1、          客戶端接入認證的主要方式是通過pg_hba.conf檔案來進行配置,

2、     

3、          具體引數說明:

3.1、TYPE定義了多種連接PostgreSQL的方式,分別是:

“local”使用本地unix套接字,

“host”使用TCP/IP連接(包括SSL和非SSL),“host”結合“IPv4地址”使用IPv4方式,結合“IPv6地址”則使用IPv6方式,

“hostssl”只能使用SSL TCP/IP連接,

“hostnossl”不能使用SSL TCP/IP連接,

3.2、DATABASE指定哪個資料庫,多個資料庫,庫名間以逗號分隔,“all”只有在沒有其他的符合條目時才代表“所有”,如果有其他的符合條目則代表“除了該條之外的”,因為“all”的優先級最低,

 

這兩條都是指定local訪問方式,因為前一條指定了特定的資料庫db1,所以后一條的all代表的是除了db1之外的資料庫,同理用戶的all也是這個道理,

注意:all` ,`sameuser`,`samerole`,`replication`,`資料庫名稱` ,或者多個

資料庫名稱用 `逗號`,值 all 表明該記錄匹配所有資料庫; 不匹配 replication,

值 sameuser表示如果被請求的資料庫和請求的用戶同名,則匹配;

值samerole指定所請求的用戶必須是與所請求的資料庫同名的角色成員,

值 replication 表示匹配一條replication連接,它不指定一個特定的資料庫,一般在流復制中使用;

3.3、USER指定哪個資料庫用戶(PostgreSQL正規的叫法是角色,role),多個用戶以逗號分隔,

3.4、ADDRESS項可以是IPv4地址或IPv6地址,可以定義某臺主機或某個網段,舉例: IPv4 地址范圍的典型示例是對于單個主機為172.20.143.89/32;

對于小型網路為172.20.143.0/24對于較大網路為10.6.0.0/16;0.0.0.0/0代表所有IPv4地址,::0/0代表所有IPv6地址,當然你可以使用 all 選項來匹配所有的IP地址

3.5、METHOD指定如何處理客戶端的認證,常用的有ident,md5,password,trust,reject,cert,scram-sha-256

ident是Linux下PostgreSQL默認的local認證方式,凡是能正確登錄服務器的作業系統用戶(注:不是資料庫用戶)就能使用本用戶映射的資料庫用戶不需密碼登錄資料庫,用戶映射檔案為pg_ident.conf,這個檔案記錄著與作業系統用戶匹配的資料庫用戶,如果某作業系統用戶在本檔案中沒有映射用戶,則默認的映射資料庫用戶與作業系統用戶同名,比如,服務器上有名為user1的作業系統用戶,同時資料庫上也有同名的資料庫用戶,user1登錄作業系統后可以直接輸入psql,以user1資料庫用戶身份登錄資料庫且不需密碼,

md5是常用的密碼認證方式,如果你不使用ident,最好使用md5,密碼是以md5形式傳送給資料庫,較安全,且不需建立同名的作業系統用戶,

password是以明文密碼傳送給資料庫,建議不要在生產環境中使用,

trust是只要知道資料庫用戶名就不需要密碼或ident就能登錄,建議不要在生產環境中使用,

reject是拒絕認證,

cert使用SSL服務進行驗證

案例:md5升級到scram-sha-256, 在postgresql.conf中設定 password_encryption = 'scram-sha-256', 讓所有用戶設定新密碼,并將pg_hba.conf 中的認證方法宣告更改為scram-sha-256

 

 

 

 

Ssl案例:https://www.cnblogs.com/sandata/p/12659913.html

1.3 使用SSL進行安全的TCP/IP連接

從CA認證中心申請到正式的服務器、客戶端的證書和密鑰,(假設服務器的私鑰為server.key,證書為server.crt,客戶端的私鑰為client.key,證書為client.crt,CA根證書名稱為cacert.pem,)此處以OPENSSL生成的認證為基礎:

1)部署CA環境

登陸postgres用戶執行

1

[postgres@PGServer2 ~]$ mkdir -p security

拷貝openssl.cnf到security目錄下

1

[postgres@PGServer2 ~]$ cp /etc/pki/tls/openssl.cnf ~/security/

創建CA環境并授權private為777權限

1

2

[postgres@PGServer2 ~]$ mkdir -p security/CA/{certs,private}

[postgres@PGServer2 ~]$ chmod 777 security/CA/private/

驗證CA環境目錄

1

2

3

4

5

6

[postgres@PGServer2 ~]$ tree security/

security/

├── CA

│   ├── certs

│   └── private

└── openssl.cnf

創建serial檔案,并寫入01

1

[postgres@PGServer2 ~]$ echo '01' > security/CA/serial

創建index.txt索引檔案

1

[postgres@PGServer2 ~]$ touch security/CA/index.txt

修改openssl.cnf檔案中的引數

[postgres@PGServer2 ~]$ vi security/openssl.cnf

[postgres@PGServer2 ~]$ cat security/openssl.cnf  | egrep "security|default_md|new_certs_dir" | awk '{print $1,$2,$3}'

dir = /home/postgres/security/CA

new_certs_dir = $dir/certs

default_md = sha256

1

2

 

3

4

5

[postgres@PGServer2 ~]$ vi security/openssl.cnf

[postgres@PGServer2 ~]$ cat security/openssl.cnf|egrep 

"security|default_md|new_certs_dir" | awk '{print $1,$2,$3}'

dir = /home/postgres/security/CA

new_certs_dir = $dir/certs

default_md = sha256

 

2)生成根私鑰

生成2048位的CA私鑰:輸入密碼test

1

2

3

4

5

6

7

[postgres@PGServer2 ~]$ openssl  genrsa -aes256 -out security/CA/private/

cakey.pem 2048

 

Generating RSA private key, 2048 bit long modulus

.+++

....+++

e is 65537 (0x10001)

Enter pass phrase for security/CA/private/cakey.pem:

Verifying - Enter pass phrase for security/CA/private/cakey.pem:

3)生成根證書請求檔案

根證書檔案名稱為server.req
輸入cakey.pem的口令test,
輸入國家名稱:CN
輸入省份:Jiangsu
輸入城市:NanJing
輸入組織名稱:gs
其中有些可以省略不填

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[postgres@PGServer2 ~]$ openssl req -config security/openssl.cnf -new -key 

security/CA/private/cakey.pem -out security/CA/careq.pem

Enter pass phrase for security/CA/private/cakey.pem:

You are about to be asked to enter information that will be

incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:Jiangsu

Locality Name (eg, city) [Default City]:Nanjing

Organization Name (eg, company) [Default Company Ltd]:gs

Organizational Unit Name (eg, section) []:gs

Common Name (eg, your name or your server's hostname) []:shaohua

Email Address []:

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:Postgres@DB

An optional company name []:

[postgres@PGServer2 ~]$

4)生成自簽名根證書

使用openssl.cnf中的配置
輸入cakey.pem的口令,
檢查輸出的請求與簽名是否匹配

1

 

 

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[postgres@PGServer2 ~]$ openssl ca -config security/openssl.cnf -out 

security/CA/cacert.pem -keyfile security/CA/private/cakey.pem 

-selfsign -infiles security/CA/careq.pem

Using configuration from security/openssl.cnf

Enter pass phrase for security/CA/private/cakey.pem:

Check that the request matches the signature

Signature ok

Certificate Details:

        Serial Number: 1 (0x1)

        Validity

            Not Before: Mar 30 07:16:21 2020 GMT

            Not After : Mar 30 07:16:21 2021 GMT

        Subject:

            countryName               = CN

            stateOrProvinceName       = Jiangsu

            organizationName          = gs

            organizationalUnitName    = gs

            commonName                = shaohua

        X509v3 extensions:

            X509v3 Basic Constraints:

                CA:FALSE

            Netscape Comment:

                OpenSSL Generated Certificate

            X509v3 Subject Key Identifier:

                B2:5E:02:8B:7E:8C:19:56:D3:00:17:71:9C:BF:B5:DA:33:C3:21:4F

            X509v3 Authority Key Identifier:

                keyid:B2:5E:02:8B:7E:8C:19:56:D3:00:17:71:9C:BF:B5:DA:33:C3:21:4F

 

Certificate is to be certified until Mar 30 07:16:21 2021 GMT (365 days)

Sign the certificate? [y/n]:y

 

 

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

已下發名為cacert.pem的CA根證書

5)生成服務器證書私鑰

1

2

3

4

5

6

7

[postgres@PGServer2 security]$ openssl genrsa -aes256 -out server.key 2048

Generating RSA private key, 2048 bit long modulus

..................................................................................................................................+++

.......................................................+++

e is 65537 (0x10001)

Enter pass phrase for server.key:

Verifying - Enter pass phrase for server.key:

6)生成服務器證書請求檔案

輸入server.key的口令
輸入系統要求的一些資訊
其中一些欄位可以不填,確保和創建CA時的內容一致

1

 

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[postgres@PGServer2 security]$ openssl req -config openssl.cnf -new -key

 server.key -out server.req

Enter pass phrase for server.key:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:Jiangsu

Locality Name (eg, city) [Default City]:Nanjing

Organization Name (eg, company) [Default Company Ltd]:gs

Organizational Unit Name (eg, section) []:gs

Common Name (eg, your name or your server's hostname) []:shaohua

Email Address []:

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:Postgres@DB

An optional company name []:

7)生成服務器證書

修改CA/index.txt.attr中的屬性為no

1

2

3

[postgres@PGServer2 security]$ vi CA/index.txt.attr

[postgres@PGServer2 security]$ cat CA/index.txt.attr

unique_subject = no

下發生成的服務器證書請求檔案,下發成功后,會生成一個正式的服務器證書server.crt

使用openssl.cnf中的配置,輸入cakey.pem中的口令

檢查請求與簽名是否匹配

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[postgres@PGServer2 security]$ openssl ca -config openssl.cnf -in server.req -out server.crt -days 3650 -md sha256

Using configuration from openssl.cnf

Enter pass phrase for /home/postgres/security/CA/private/cakey.pem:

Check that the request matches the signature

Signature ok

Certificate Details:

        Serial Number: 2 (0x2)

        Validity

            Not Before: Mar 30 07:26:57 2020 GMT

            Not After : Mar 28 07:26:57 2030 GMT

        Subject:

            countryName               = CN

            stateOrProvinceName       = Jiangsu

            organizationName          = gs

            organizationalUnitName    = gs

            commonName                = shaohua

        X509v3 extensions:

            X509v3 Basic Constraints:

                CA:FALSE

            Netscape Comment:

                OpenSSL Generated Certificate

            X509v3 Subject Key Identifier:

                64:96:2B:B7:1E:CC:DD:22:D9:0D:07:79:A7:22:FC:23:FB:66:86:FC

            X509v3 Authority Key Identifier:

                keyid:B2:5E:02:8B:7E:8C:19:56:D3:00:17:71:9C:BF:B5:DA:33:C3:21:4F

 

Certificate is to be certified until Mar 28 07:26:57 2030 GMT (3650 days)

Sign the certificate? [y/n]:y

 

 

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 

1.4     PostgreSQL服務器使用ssl認證連接 

將ssl認證功能啟用

postgres=# show ssl;

          ssl

-----

          off

(1 row)

postgres=# alter system set ssl = on;

ALTER SYSTEM

2)配置server.keyserver.crt檔案的位置

1

 

2

3

[postgres@PGServer2 ~]$ cat $PGDATA/postgresql.conf|egrep -v "^#" 

|egrep "ssl_key_file|ssl_cert_file"

ssl_cert_file = '/home/postgres/security/server.crt'

ssl_key_file = '/home/postgres/security/server.key'

3)重新啟動PostgreSQL服務器

輸入之前ssl認證檔案配置的密碼后,資料庫即能啟動

1

2

3

4

[postgres@PGServer2 ~]$ pg_ctl  start -D $PGDATA -l /tmp/logfile

waiting for server to start....Enter PEM pass phrase:.

 done

server started

 

二、管理用戶及安全

2.1 默認權限機制

資料庫物件創建后,進行物件創建的用戶就是該物件的所有者,集群安裝后的默認情況下,未開啟三權分立,資料庫系統管理員具有與物件所有者相同的權限,也就是說物件創建后,默認只有物件所有者或者系統管理員可以查詢、修改和銷毀物件,以及通過GRANT將物件的權限授予其他用戶,

2.2 用戶

使用CREATE USER 和 ALTER USER 可以創建和管理資料庫用戶,用戶和角色一樣,

2.2.1 管理員用戶

管理員用戶可以管理資料庫中的物件,可以通過WITH SUPERUSER關鍵詞創建管理員用戶

示例:創建具有管理員角色的用戶admin1和admin2

postgres=#CREATE USER admin1 WITH SUPERUSER ENCRYPTED PASSWORD 'admin1';

CREATE ROLE

postgres=#CREATE USER admin2 WITH SUPERUSER ENCRYPTED PASSWORD 'admin2';

CREATE ROLE

2.2.2 業務用戶

對于有多個業務部門,各部門間使用不同的資料庫用戶進行業務操作,同時有一個同級的資料庫維護部門使用資料庫管理員進行維護操作的場景下,業務部門可能希望在未經授權的情況下,管理員用戶只能對各部門的資料進行控制操作(DROP、ALTER、TRUNCATE),但是不能進行訪問操作(INSERT、DELETE、UPDATE、SELECT、COPY),即針對管理員用戶,表物件的控制權和訪問權要能夠分離,提高普通用戶資料安全性,

示例:創建普通用戶user1和user2

postgres=# CREATE USER user1 WITH ENCRYPTED PASSWORD 'user1';

CREATE ROLE

postgres=# CREATE USER user2 WITH ENCRYPTED PASSWORD 'user2';

CREATE ROLE

2.3 模式

Schema又稱作模式,通過管理Schema,允許多個用戶使用同一資料庫而不相互干擾,可以將資料庫物件組織成易于管理的邏輯組,同時便于將第三方應用添加到相應的Schema下而不引起沖突,

每個資料庫包含一個或多個Schema,資料庫中的每個Schema包含表和其他型別的物件,資料庫創建初始,默認具有一個名為public的Schema,且所有用戶都擁有此Schema的權限,可以通過Schema分組資料庫物件,Schema類似于作業系統目錄,但Schema不能嵌套,

相同的資料庫物件名稱可以應用在同一資料庫的不同Schema中,而沒有沖突,例如,a_schema和b_schema都可以包含名為mytable的表,具有所需權限的用戶可以訪問資料庫的多個Schema中的物件,

在初始資料庫postgres中創建用戶時,系統會自動幫助用戶創建一個同名Schema,在其他資料庫中,若需要同名Schema,則需要用戶手動創建,

資料庫物件是創建在資料庫搜索路徑中的第一個Schema內的,

創建SCHEMA可以使用CREATE SCHEMA陳述句創建,

更改SCHEMA名稱或者所有者,可以使用ALTER SCHEMA陳述句進行修改,

要洗掉SCHEMA及其物件,使用DROP SCHEMA 語法可以進行洗掉,

要在SCHEMA內創建表,以schema.tablename格式創建表,不指定schemaname時,物件默認創建到search_path中的第一個schema名稱,

postgres=# CREATE SCHEMA s1;

CREATE SCHEMA

postgres=# CREATE SCHEMA s2;

CREATE SCHEMA

修改schema s1為schema1,s2為schema2

postgres=# ALTER SCHEMA  s1 RENAME TO schema1;

ALTER SCHEMA

postgres=# ALTER SCHEMA  s2 RENAME TO schema2;

ALTER SCHEMA

創建schema1下的表 st1 ,schema t2下的表為st2

postgres=# CREATE TABLE schema1.st1(id int,name varchar(20));

CREATE TABLE

postgres=# CREATE TABLE schema2.st2(id int,name varchar(20));

CREATE TABLE

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1176.html

標籤:PostgreSQL

上一篇:PostgreSQL在不同的表空間移動資料檔案

下一篇:PostgreSQL - 正則函式regexp_like

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more