技多不壓身 | 產(chǎn)品經(jīng)理需知的那些數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

10 評(píng)論 13142 瀏覽 197 收藏 26 分鐘

技多不壓身,無論是什么數(shù)據(jù)產(chǎn)品經(jīng)理還是其他品類的產(chǎn)品經(jīng)理,都需要懂點(diǎn)數(shù)據(jù)庫(kù)知識(shí)。懂技術(shù)能讓你在跟開發(fā)撕逼中多了一個(gè)資本。

隨著近幾年AI智能,大數(shù)據(jù)的發(fā)展,“產(chǎn)品經(jīng)理是是否需要懂技術(shù)?”“產(chǎn)品經(jīng)理應(yīng)該對(duì)技術(shù)理解到什么程度?”諸如此類的問題又再次出現(xiàn)在許多人的視野中,或者說它就未曾離開過。

筆者認(rèn)為,這要具體放到某個(gè)具體業(yè)務(wù)場(chǎng)景或者行業(yè)下去分析,例如:作為一名數(shù)據(jù)產(chǎn)品經(jīng)理,你可能需要懂一些數(shù)據(jù)庫(kù),大數(shù)據(jù)的相關(guān)知識(shí);作為一名AI語(yǔ)音產(chǎn)品經(jīng)理,你可能需要懂一些關(guān)于自然語(yǔ)言處理(NLP)的相關(guān)技術(shù)。

當(dāng)然,技多不壓身,懂技術(shù)能讓你在跟開發(fā)撕逼中多了一個(gè)資本。

在進(jìn)入正文之前,我們先來思考幾個(gè)小問題:

    1. 當(dāng)你在一個(gè)APP或者網(wǎng)站注冊(cè)賬戶時(shí),你填寫的信息保存在哪里?
    2. 當(dāng)你嘗試登陸和平精英準(zhǔn)備吃雞時(shí),APP怎么知道是你,并提供差異化服務(wù)?
    3. 當(dāng)你修改一個(gè)賬號(hào)的密碼時(shí),為什么可以用馬上新密碼登陸了?
  1. 當(dāng)你在一個(gè)APP或者網(wǎng)站注銷賬號(hào)時(shí),請(qǐng)問你的賬戶信息如何變化?

這四個(gè)問題看起來很簡(jiǎn)單,但深究起來,它對(duì)應(yīng)著數(shù)據(jù)庫(kù)的四個(gè)基本操作CRUD:即增加(Create)、讀取查詢(Retrieve)、更新(Update)和刪除(Delete)。

何為數(shù)據(jù)庫(kù)?

百度百科對(duì)數(shù)據(jù)庫(kù)給出以下定義:

所謂“數(shù)據(jù)庫(kù)”是以一定方式儲(chǔ)存在一起、能予多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。

數(shù)據(jù)庫(kù)可視為電子化的文件柜——存儲(chǔ)電子文件的處所,用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、查詢、更新、刪除等操作。

簡(jiǎn)單的理解:數(shù)據(jù)庫(kù)(DataBase,簡(jiǎn)稱DB)是用于保存有組織的數(shù)據(jù)的容器。

在DB中,數(shù)據(jù)通常以一種結(jié)構(gòu)化的文件——表,作為其展現(xiàn)形式。對(duì)DB的操作可以看做是對(duì)DB中表的操作,而對(duì)DB中表的操作可以類比為對(duì)Excel中表的操作。

數(shù)據(jù)庫(kù)中的表有行和列的概念,符合我們的常規(guī)認(rèn)知。

列是表中的一個(gè)字段,存儲(chǔ)著相同屬性的數(shù)據(jù),例如:一列專門來存儲(chǔ)用戶的賬號(hào)昵稱。

行是表中的一個(gè)記錄,可用于存儲(chǔ)某一個(gè)用戶的完整信息,例如:用戶A,男,22歲,身高170cm,體重120斤。

表中的某一列(或一組列)我們稱為主鍵,其值可以用來唯一區(qū)分表中每個(gè)行(或者說每條記錄)。說白了,主鍵就是用來唯一代表某條記錄(某行)的。

主鍵需滿足以下條件:

  1. 任意兩行都不具有相同的主鍵值。
  2. 每個(gè)行都必須具有一個(gè)主鍵值,即主鍵不允許設(shè)置為Null的值。

舉個(gè)例子:在學(xué)生管理系統(tǒng)中,我們用學(xué)號(hào)來唯一代表每個(gè)學(xué)生,此時(shí)學(xué)號(hào)所在的那一列就是主鍵。

那么,如何理解某一組列作為主鍵呢?

當(dāng)我們無法用單獨(dú)的某一列來代表一條記錄時(shí),我們就要采用某兩列或者某幾列來共同代表一條記錄。

例如:一個(gè)表格記錄著一個(gè)班級(jí)的學(xué)生,不同課程的不同考試中的數(shù)據(jù)時(shí),你想從中找出學(xué)生A,每一次考試中的語(yǔ)文成績(jī)時(shí),就需要以學(xué)號(hào)和課程名稱這兩列來作為復(fù)合主鍵。

DBMS與SQL?

一般情況下,我們不會(huì)去直接操作數(shù)據(jù)庫(kù),往往是通過數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,簡(jiǎn)稱DBMS)去對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。

典型的DBMS包括例如:MySQL,Oracle,mongoDB,Redis等等。

這里注意一點(diǎn):在平時(shí)交流的時(shí)候,許多人會(huì)直接將MySQL,Oracle等稱作是數(shù)據(jù)庫(kù),很多網(wǎng)上的資料也是這么寫的。但從嚴(yán)格意義上來講,MySQL,Oracle應(yīng)該是數(shù)據(jù)庫(kù)管理系統(tǒng)。

為了方便大家跟網(wǎng)上的資料能夠共同理解,筆者在此暫時(shí)稱呼MySQL為數(shù)據(jù)庫(kù)。

目前主流數(shù)據(jù)庫(kù)基本分為兩類:關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)。

關(guān)系型數(shù)據(jù)庫(kù)是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫(kù)。其最典型的數(shù)據(jù)結(jié)構(gòu)是表,結(jié)構(gòu)相對(duì)固定,格式一致,易于維護(hù)。但是靈活性不強(qiáng),讀寫性能比較差,尤其是在海量數(shù)據(jù)的處理上,效率不高。

非關(guān)系型數(shù)據(jù)庫(kù)狹義上講并不是一種數(shù)據(jù)庫(kù),而是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合。因?yàn)榇蠖鄶?shù)經(jīng)典的關(guān)系型數(shù)據(jù)庫(kù)命名都為“***SQL”,為了做出區(qū)分,行業(yè)內(nèi)通常將非關(guān)系型數(shù)據(jù)庫(kù)統(tǒng)稱為NoSQL。NoSQL格式靈活,可以很好的滿足高并發(fā)讀寫需求,成本低,速度快。

在安裝完MySQL之后,他會(huì)幫我們順帶安裝數(shù)據(jù)庫(kù)。我們就可以直接通過MySQL的命令窗口啟動(dòng)服務(wù),并對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。

例如在下圖中,筆者在win10系統(tǒng)中,先以管理員權(quán)限打開PowerShell,然后啟動(dòng)MySQL命令窗口,再通過“create database test;”創(chuàng)建一個(gè)名稱為test的數(shù)據(jù)庫(kù)。(一般情況下,不建議用root登陸)

這種操作方式對(duì)于非技術(shù)人員來講,并不是十分友好。因此在日常使用中,我會(huì)采用MySQL+Navicat來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。

Navicat是一套多連接數(shù)據(jù)庫(kù)開發(fā)工具,工具中帶有靈活的數(shù)據(jù)庫(kù)圖形可視化界面,方便用戶直接進(jìn)行類如Excel的表格操作,由此來實(shí)現(xiàn)最終的數(shù)據(jù)庫(kù)操作。

SQL(Structured Query Language)是結(jié)構(gòu)化查詢語(yǔ)言,可以用來和數(shù)據(jù)庫(kù)通信,絕大部分DBMS都支持SQL,簡(jiǎn)單的說就是通過編寫SQL語(yǔ)句來操作數(shù)據(jù)庫(kù)。

在下面的操作中,筆者也將以MySQL+Navicat作為基礎(chǔ)開發(fā)環(huán)境,以SQL語(yǔ)法為說明。

實(shí)戰(zhàn)演練

對(duì)數(shù)據(jù)庫(kù)DB,數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS,結(jié)構(gòu)化查詢語(yǔ)言SQL有所了解后,讓我們繼續(xù)回到開篇講的四個(gè)問題。

  1. 當(dāng)你在一個(gè)APP或者網(wǎng)站注冊(cè)賬戶時(shí),你填寫的信息保存在哪里?
  2. 當(dāng)你嘗試登陸和平精英準(zhǔn)備吃雞時(shí),APP怎么知道是你,并提供差異化服務(wù)?
  3. 當(dāng)你修改一個(gè)賬號(hào)的密碼時(shí),為什么可以用馬上新密碼登陸了?
  4. 當(dāng)你在一個(gè)APP或者網(wǎng)站注銷賬號(hào)時(shí),請(qǐng)問你的賬戶信息如何變化?

將這四個(gè)步驟拼接在一起,可以得出一個(gè)最簡(jiǎn)單的用戶賬戶注冊(cè)、登錄、修改、注銷的流程。

這四部分對(duì)應(yīng)到數(shù)據(jù)庫(kù)的相關(guān)操作就是增加(Create)、讀取查詢(Retrieve)、更新(Update)和刪除(Delete)。

1. 事前準(zhǔn)備

我們先在Navicat中跟一個(gè)已存在的數(shù)據(jù)庫(kù)進(jìn)行連接,然后建立一張名為user_test的表,表中分別有字段:ID(作為主鍵)、account(賬戶名)、password(密碼)、source(注冊(cè)來源)、name(真實(shí)姓名)、age(年齡)、job(職業(yè))。

2. 注冊(cè)步驟及其SQL

在用戶注冊(cè)時(shí),會(huì)在注冊(cè)界面填寫相應(yīng)的信息,點(diǎn)擊頁(yè)面底部的注冊(cè)按鍵,系統(tǒng)將執(zhí)行數(shù)據(jù)庫(kù)記錄插入操作,其通用SQL語(yǔ)法為:

  • 其中INSERT INTO表示插入動(dòng)作,大小寫都可以,標(biāo)準(zhǔn)寫法為大寫。
  • 其中table_name為表名,指你所要操作的表,一般為小寫。
  • 其中field1, field2,…fieldN為對(duì)應(yīng)的字段名,一般字段命名為小寫或駝峰式。
  • 其中value1, value2,…valueN為每個(gè)字段對(duì)應(yīng)的值,寫入值需符合字段定義的數(shù)據(jù)類型。

最后,所有SQL語(yǔ)法中都以 “;”作為語(yǔ)句結(jié)尾,這個(gè)不要漏了。

在本例中,對(duì)應(yīng)的SQL為:

經(jīng)過插入操作后,數(shù)據(jù)庫(kù)中表的結(jié)果為

在這里,因?yàn)槲覀兊谋碇械腎D字段設(shè)置為主鍵,并且由數(shù)據(jù)庫(kù)進(jìn)行自增操作,所以我們不會(huì)對(duì)其進(jìn)行額外操作。

3. 登陸步驟及其SQL

假設(shè)當(dāng)前數(shù)據(jù)庫(kù)中user_test表的數(shù)據(jù)如下:

在用戶登錄時(shí),系統(tǒng)會(huì)根據(jù)用戶輸入的賬戶名去數(shù)據(jù)庫(kù)中檢索,如果沒有查詢到相應(yīng)的賬戶名,則提示賬戶不存在;如果查詢到賬戶名,則再根據(jù)數(shù)據(jù)庫(kù)中該賬戶名的密碼去跟用戶登錄時(shí)輸入的密碼進(jìn)行匹配,如果匹配失敗,則提示密碼輸入錯(cuò)誤,反之登陸成功。

所以在這個(gè)步驟中,執(zhí)行的是數(shù)據(jù)庫(kù)的查詢操作,其通用的SQL語(yǔ)句為:

  • 其中SELECT代表查詢操作,一般用大寫。
  • 其中column_name,column_name…表示你要查詢的列名,跟表中的列名要保持一致。
  • 其中table_name代表你所要查詢的表。
  • 其中[WHERE Clause]表示你要查詢這張表時(shí),所約束的條件。

在本例中,假設(shè)是RD李四登陸,則根據(jù)李四的賬戶名“用戶2”查詢其密碼,年齡,注冊(cè)來源,職業(yè),姓名這幾個(gè)字段信息的SQL為:

經(jīng)過查詢操作后,得出的查詢結(jié)果為:

4. 更新步驟及其SQL

假設(shè)當(dāng)前數(shù)據(jù)庫(kù)中user_test表的數(shù)據(jù)如下:

在用戶登錄成功后,可以對(duì)密碼進(jìn)行更改,系統(tǒng)根據(jù)當(dāng)前登陸賬戶,將舊密碼更改為新密碼。

所以在這個(gè)步驟中,執(zhí)行的是數(shù)據(jù)庫(kù)的更新操作,其通用的SQL語(yǔ)句為:

  • 其中UPDATE代表更新操作,一般用大寫。
  • 其中table_name代表你所要操作的表。
  • 其中field1,field2代表你要更新的字段,需要跟你表格中定義的字段名一致。
  • 其中new-value1,new-value2代表更新字段的值,寫入值需要與定義的數(shù)據(jù)類型一致。

其中[WHERE Clause]表示你要更新這張表時(shí),所約束的條件。在這里注意一點(diǎn),進(jìn)行UPDATE操作時(shí),一定要跟上[WHERE Clause],不然將會(huì)把整張表的數(shù)據(jù)更新。

在本例中,假設(shè)我們要對(duì)QA王五的密碼和職業(yè)進(jìn)行更新,則SQL為:

經(jīng)過更新操作后,數(shù)據(jù)庫(kù)中表的結(jié)果變?yōu)椋?/p>

5. 注銷步驟及其SQL

假設(shè)當(dāng)前數(shù)據(jù)庫(kù)中user_test表的數(shù)據(jù)如下:

當(dāng)用戶試圖注銷自己的賬號(hào)時(shí),系統(tǒng)會(huì)根據(jù)相應(yīng)的賬戶名對(duì)用戶的信息進(jìn)行刪除。至于刪除哪些信息,取決于業(yè)務(wù)要求。有些應(yīng)用會(huì)將用戶信息全部刪除,有些則會(huì)保留一些基礎(chǔ)信息,方便用戶二次注冊(cè)的時(shí)候,可以快速完成。

所以,在這個(gè)步驟執(zhí)行的是數(shù)據(jù)庫(kù)的刪除操作,其通用的SQL為:

  • 其中DELETE表示刪除操作。
  • 其中table_name表示你要操作的表格。
  • 其中[WHERE Clause]表示你要?jiǎng)h除某條記錄時(shí),所約束的條件。在這里注意一點(diǎn),進(jìn)行DELETE操作時(shí),一定要跟上[WHERE Clause],不然將會(huì)把整張表的數(shù)據(jù)刪除,數(shù)據(jù)庫(kù)數(shù)據(jù)一旦刪除,是不可恢復(fù)的,切記!

在本例中,假設(shè)我們要將RD李四的賬戶注銷,并且刪除其所有數(shù)據(jù),則SQL為:

創(chuàng)新型數(shù)據(jù)庫(kù)

1. 時(shí)序數(shù)據(jù)庫(kù)

時(shí)序數(shù)據(jù)庫(kù)(Time Series Database,簡(jiǎn)稱TSDB)是非關(guān)系型數(shù)據(jù)庫(kù)中的一種,也是很重要的一種。

隨著目前AI智能的發(fā)展,在很多場(chǎng)景下,特別是將來的工業(yè)互聯(lián)網(wǎng)中,我們需要收集海量的過去式數(shù)據(jù),借此來分析和預(yù)測(cè)將來可能發(fā)生的事情。例如:金融交易股票走勢(shì),物聯(lián)網(wǎng)傳感器設(shè)備的測(cè)量數(shù)據(jù),氣溫或日濕度預(yù)測(cè)等等。

以股票走勢(shì)預(yù)測(cè)為例,單靠目前股票的位點(diǎn)是無法分析的,只有結(jié)合股票在前十分鐘,前一個(gè)小時(shí),甚至前幾天的走勢(shì),才能更加精準(zhǔn)的預(yù)測(cè)出未來某一時(shí)刻的具體情況。

時(shí)序數(shù)據(jù)庫(kù)就是專門用來存儲(chǔ)海量時(shí)序數(shù)據(jù)的。而時(shí)序數(shù)據(jù)就是基于時(shí)間的一系列數(shù)據(jù)。

簡(jiǎn)單地可以理解成,它以時(shí)間為主坐標(biāo)軸,以需要被記錄的數(shù)據(jù)作為縱軸,通過規(guī)則的時(shí)間間隔或者是不規(guī)則的時(shí)間間隔去表征一系列數(shù)據(jù)的規(guī)律性或異常性變化。

時(shí)序數(shù)據(jù)庫(kù)包含以下幾個(gè)基礎(chǔ)部分:

  1. Metric: 度量,相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)中的table。
  2. Data point: 數(shù)據(jù)點(diǎn),相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)中的row。
  3. Timestamp:時(shí)間戳,代表數(shù)據(jù)點(diǎn)產(chǎn)生的時(shí)間。
  4. Field:度量下的不同字段。比如位置這個(gè)度量具有經(jīng)度和緯度兩個(gè)field。一般情況下存放的是會(huì)隨著時(shí)間戳的變化而變化的數(shù)據(jù)。
  5. Tag:標(biāo)簽,或者附加信息。一般存放的是并不隨著時(shí)間戳變化的屬性信息。timestamp加上所有的tags可以認(rèn)為是table的主鍵。

有的小伙伴可能會(huì)說,直接在一般的數(shù)據(jù)庫(kù)中,加入一個(gè)代表時(shí)間的列,不就可以完成嗎。在數(shù)據(jù)比較少,數(shù)據(jù)庫(kù)操作不頻繁的時(shí)候,這種方法還是可以的。

隨著數(shù)據(jù)存儲(chǔ)量的增多,如果想要達(dá)到跟時(shí)序數(shù)據(jù)庫(kù)一樣的效果,那就會(huì)頻繁的操作數(shù)據(jù)庫(kù),這會(huì)造成極大的開銷,從而極大的降低讀寫速度。

總的來說,時(shí)序數(shù)據(jù)庫(kù)具有大規(guī)模數(shù)據(jù)支持,多精度數(shù)據(jù)存儲(chǔ),多標(biāo)簽數(shù)據(jù)查詢等特點(diǎn)。

2. 圖數(shù)據(jù)庫(kù)

非關(guān)系型數(shù)據(jù)庫(kù)NoSQL大致可以分為四類:

  1. 鍵值(key-value)數(shù)據(jù)庫(kù)
  2. 圖數(shù)據(jù)庫(kù)
  3. 列存儲(chǔ)數(shù)據(jù)庫(kù)
  4. 文檔型數(shù)據(jù)庫(kù)

圖數(shù)據(jù)庫(kù)就是NoSQL其中的一種,它以圖這種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)和查詢數(shù)據(jù)。圖由兩個(gè)主要元素組成:節(jié)點(diǎn)和關(guān)系。

節(jié)點(diǎn)代表一個(gè)實(shí)體(時(shí)間,地點(diǎn),人或其他數(shù)據(jù)),關(guān)系則代表兩個(gè)節(jié)點(diǎn)之間的關(guān)聯(lián)方式。

相比于NoSQL中的其他類型數(shù)據(jù)庫(kù)而言,圖數(shù)據(jù)庫(kù)具有更加豐富的模型表現(xiàn)能力和更加高效的索引。

在實(shí)際應(yīng)用中,業(yè)務(wù)邏輯往往十分復(fù)雜,如果用關(guān)系型數(shù)據(jù)庫(kù)來表示各個(gè)實(shí)體之間的潛在關(guān)系,則需要建立十分多的關(guān)聯(lián)表。數(shù)據(jù)庫(kù)需要通過關(guān)聯(lián)表間接地維護(hù)實(shí)體間的關(guān)系,導(dǎo)致數(shù)據(jù)庫(kù)的執(zhí)行效能低下,同時(shí)也會(huì)引起關(guān)聯(lián)表的數(shù)量急劇上升。

例如:在一個(gè)訂單系統(tǒng)中,要清楚表現(xiàn)出用戶、訂單、商品之間的邏輯關(guān)系,需要建立四張關(guān)聯(lián)表,這顯得十分復(fù)雜,開發(fā)效率也很低。

而在圖數(shù)據(jù)庫(kù)中,我們只需要建立四個(gè)節(jié)點(diǎn),并用關(guān)系來表示節(jié)點(diǎn)之間的邏輯,最后用任意兩個(gè)節(jié)點(diǎn)之間的關(guān)系去索引,即可提升效率。隨著業(yè)務(wù)邏輯性愈發(fā)的復(fù)雜,數(shù)據(jù)量的增多,關(guān)聯(lián)表數(shù)量會(huì)急劇上升,這時(shí)圖數(shù)據(jù)庫(kù)的優(yōu)勢(shì)愈發(fā)明顯。

小結(jié)

隨著大數(shù)據(jù),AI智能的發(fā)展,為解決不同業(yè)務(wù)需求,越來越多的創(chuàng)新數(shù)據(jù)庫(kù)隨之出現(xiàn),時(shí)序數(shù)據(jù)庫(kù)和圖數(shù)據(jù)庫(kù)就是其中之一。時(shí)序數(shù)據(jù)庫(kù)解決了時(shí)間序列數(shù)據(jù)存儲(chǔ),索引的問題;圖數(shù)據(jù)庫(kù)則解決了復(fù)雜邏輯下,各個(gè)實(shí)體之間相互表征,索引的問題。

數(shù)據(jù)庫(kù)攻擊及防護(hù)

對(duì)于每個(gè)應(yīng)用而言,數(shù)據(jù)庫(kù)為其提供了前后臺(tái)數(shù)據(jù)交互的作用。對(duì)于企業(yè)而言,數(shù)據(jù)庫(kù)存儲(chǔ)了海量的用戶數(shù)據(jù),一旦數(shù)據(jù)庫(kù)被攻擊或被破壞,將會(huì)導(dǎo)致用戶信息泄露,進(jìn)而導(dǎo)致一系列無法彌補(bǔ)的損失。因而,數(shù)據(jù)庫(kù)的保護(hù)工作極其重要,特別是一些涉及金融,政府層面的數(shù)據(jù)。

在云計(jì)算領(lǐng)域中,數(shù)據(jù)庫(kù)還被作為一種資源進(jìn)行出售。例如:亞馬遜的AWS數(shù)據(jù)庫(kù)、騰訊云數(shù)據(jù)庫(kù)、阿里云數(shù)據(jù)庫(kù)、百度云數(shù)據(jù)庫(kù)等等。通過租用有實(shí)力公司的云數(shù)據(jù)庫(kù),不僅能免除小企業(yè)自身架設(shè)機(jī)房,采購(gòu)物理硬件,招聘專業(yè)運(yùn)維人員的成本,還能享受高性能云數(shù)據(jù)庫(kù)服務(wù)以及高質(zhì)量的防護(hù)措施。

常見的數(shù)據(jù)庫(kù)攻擊方式及其防護(hù)措施如下:

1. 對(duì)弱口令或默認(rèn)用戶名/口令的破解

在早期的數(shù)據(jù)庫(kù)中,有些數(shù)據(jù)庫(kù)在安裝時(shí)會(huì)有一個(gè)默認(rèn)的口令,有些管理人員偷懶,干脆就延用了默認(rèn)口令,那么黑客就可能從這個(gè)口令出發(fā)去獲取攻擊數(shù)據(jù)庫(kù)。

措施:采用安全程度高的口令,避免使用默認(rèn)口令。

2. SQL注入

SQL注入指通過任意SQL代碼插入數(shù)據(jù)庫(kù)查詢,使攻擊者能夠繞過應(yīng)用程序安全措施,完全控制Web應(yīng)用程序后面的數(shù)據(jù)庫(kù)服務(wù)器,對(duì)數(shù)據(jù)進(jìn)行CRUD操作。

措施:盡量避免直接將用戶的輸入放到SQL語(yǔ)句中,使用準(zhǔn)備好的語(yǔ)句和參數(shù)化查詢,并且定期測(cè)試與數(shù)據(jù)庫(kù)交互的Web應(yīng)用程序,查看后臺(tái)日志信息。

3. 特權(quán)提升

數(shù)據(jù)庫(kù)會(huì)被許多人共同使用,有測(cè)試人員、開發(fā)人員、產(chǎn)品經(jīng)理等等,每個(gè)人員分配的權(quán)限是不一樣的。

最高級(jí)的root權(quán)限一般只開放給高級(jí)別的Leader。如果在權(quán)限配置中,一個(gè)用戶被誤授予超過其實(shí)際需要的訪問權(quán)限。那么攻擊者只需要得到少許特權(quán)用戶的口令,就可以毫無阻礙的進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)。

措施:定期審查每個(gè)用戶的權(quán)限,通過后臺(tái)日志分析及時(shí)更改誤授人員的權(quán)限。

總結(jié)

至此為止,相信大家對(duì)數(shù)據(jù)庫(kù)以及相關(guān)知識(shí)已經(jīng)有了一個(gè)感性的認(rèn)知。

數(shù)據(jù)庫(kù)的知識(shí)比較多,不是一兩篇文章就能講清楚的。筆者整體寫的也比較粗糙,希望能給各位同行帶來一些幫助。承蒙大家不嫌棄的話,筆者愿意在后續(xù)再寫幾篇相關(guān)的,與大家一同學(xué)習(xí)和進(jìn)步。

文中部分內(nèi)容參考網(wǎng)上資料。

 

本文由 @pm_SWolf 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 通俗易懂

    來自上海 回復(fù)
  2. 寫的真好,簡(jiǎn)單易懂,謝謝你

    來自上海 回復(fù)
  3. 非常感謝,你好我有幾個(gè)問題可否私聊v:17839130192

    來自浙江 回復(fù)
  4. 一下子懂了不少

    回復(fù)
    1. 歡迎交流!

      來自浙江 回復(fù)
  5. 謝謝!如果大家真的要在工作中使用的話,建議自己動(dòng)手嘗試一下,這樣可以發(fā)現(xiàn)很多潛在問題。如有不懂,也可以私聊我一起交流探討。

    回復(fù)
  6. ?? 清晰明了

    來自北京 回復(fù)
    1. 謝謝!如果真的要在工作中使用的話,建議自己動(dòng)手嘗試一下,這樣可以發(fā)現(xiàn)很多潛在問題。如有不懂,也可以私聊我交流。

      回復(fù)
  7. 好文,對(duì)于一些基本概念的講解應(yīng)該會(huì)有助于產(chǎn)品工作和思考,贊,期待后續(xù)文章

    回復(fù)
    1. 謝謝,后面寫幾篇更深入的,供大家一起交流學(xué)習(xí)。

      回復(fù)