防止sql注入
漏洞為即使你隨便輸入一個(gè)賬戶,按照”xxx’ or 1=1 – “的格式,不輸入密碼也能登錄進(jìn)去,這種漏洞我們稱呼為”sql注入”;問題主要存在于sql語句的寫法。
解決:
為了避免sql注入,我們不要自己做拼接,用pymysql自帶的execute后面?zhèn)鲄?shù)的方式,有如下三種方法:
sql="select*fromuserinfowhereusername=%sandpassword=%s"cursor.execute(sql, (user, pwd))
或者:
sql="select*fromuserinfowhereusername=%sandpassword=%s"cursor.execute(sql,[user, pwd])
或者:
sql="select*fromuserinfowhereusername=%(u)sandpassword=%(p)s"cursor.execute(sql, {'u':user,'p': pwd})
索引
索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個(gè)組成部分),它們包含著對數(shù)據(jù)表里所有記錄的引用指針。
更通俗的說,數(shù)據(jù)庫索引好比是字典前面的目錄,能加快數(shù)據(jù)庫的查詢速度
索引的目的在于提高查詢效率
?索引的使用
查看索引
showindexfrom表名;
創(chuàng)建索引
如果指定字段是字符串,需要指定長度,建議長度與定義字段時(shí)的長度一致
字段類型如果不是字符串,可以不填寫長度部分
createindex索引名稱on表名(字段名稱(長度))
刪除索引:
dropindex索引名稱on表名;
索引demo
?創(chuàng)建測試表test_index
createtabletest_index(titlevarchar(10));
賬戶管理
在生產(chǎn)環(huán)境下操作數(shù)據(jù)庫時(shí),絕對不可以使用root賬戶連接,而是創(chuàng)建特定的賬戶,授予這個(gè)賬戶特定的操作權(quán)限,然后連接進(jìn)行操作,主要的操作就是數(shù)據(jù)的crud
MySQL賬戶體系:根據(jù)賬戶所具有的權(quán)限的不同,MySQL的賬戶可以分為以下幾種
服務(wù)實(shí)例級賬號:啟動(dòng)了一個(gè)mysqld,即為一個(gè)數(shù)據(jù)庫實(shí)例;如果某用戶如root,擁有服務(wù)實(shí)例級分配的權(quán)限,那么該賬號就可以刪除所有的數(shù)據(jù)庫、連同這些庫中的表
數(shù)據(jù)庫級別賬號:對特定數(shù)據(jù)庫執(zhí)行增刪改查的所有操作
數(shù)據(jù)表級別賬號:對特定表執(zhí)行增刪改查等所有操作
字段級別的權(quán)限:對某些表的特定字段進(jìn)行操作
存儲程序級別的賬號:對存儲程序進(jìn)行增刪改查的操作
賬戶的操作主要包括創(chuàng)建賬戶、刪除賬戶、修改密碼、授權(quán)權(quán)限等
注意:
進(jìn)行賬戶操作時(shí),需要使用root賬戶登錄,這個(gè)賬戶擁有最高的實(shí)例級權(quán)限
通常都使用數(shù)據(jù)庫級操作權(quán)限
主從同步的定義
主從同步使得數(shù)據(jù)可以從一個(gè)數(shù)據(jù)庫服務(wù)器復(fù)制到其他服務(wù)器上,在復(fù)制數(shù)據(jù)時(shí),一個(gè)服務(wù)器充當(dāng)主服務(wù)器(master),其余的服務(wù)器充當(dāng)從服務(wù)器(slave)。因?yàn)閺?fù)制是異步進(jìn)行的,所以從服務(wù)器不需要一直連接著主服務(wù)器,從服務(wù)器甚至可以通過撥號斷斷續(xù)續(xù)地連接主服務(wù)器。通過配置文件,可以指定復(fù)制所有的數(shù)據(jù)庫,某個(gè)數(shù)據(jù)庫,甚至是某個(gè)數(shù)據(jù)庫上的某個(gè)表。
使用主從同步的好處:
通過增加從服務(wù)器來提高數(shù)據(jù)庫的性能,在主服務(wù)器上執(zhí)行寫入和更新,在從服務(wù)器上向外提供讀功能,可以動(dòng)態(tài)地調(diào)整從服務(wù)器的數(shù)量,從而調(diào)整整個(gè)數(shù)據(jù)庫的性能。
提高數(shù)據(jù)安全,因?yàn)閿?shù)據(jù)已復(fù)制到從服務(wù)器,從服務(wù)器可以終止復(fù)制進(jìn)程,所以,可以在從服務(wù)器上備份而不破壞主服務(wù)器相應(yīng)數(shù)據(jù)
在主服務(wù)器上生成實(shí)時(shí)數(shù)據(jù),而在從服務(wù)器上分析這些數(shù)據(jù),從而提高主服務(wù)器的性能