下面讓我們來看看MySQL中的最要的5個授權表。
user
用戶表保存了用戶的權限和被加密的密碼。這個表負責確定哪些用戶和客戶機可以連接到服務器上。
host
這個表為每一個客戶機分配權限,它并不考慮用戶的權限。MySQL在確定是否接收還是拒絕一個連接時,首先考慮的是user表。而使用GRANT或REVOKE命令并不影響host表,我們可以通過手工方式修改這個表中的內容。
db
db表保存了數據庫層的權限信息。
tables_priv
這個表存儲了表的權限信息。
columns_priv
這個表保存了單獨列的權限信息。通過這個表,可以將操作某一列的權限授予一個用戶。
哈希加密
如果數據庫保存了敏感的數據,如銀行卡密碼,客戶信息等,你可能想將這些數據以加密的形式保存在數據庫中。這樣即使有人進入了你的數據庫,并看到了這些數據,也很難獲得其中的真實信息。
在應用程序的大量信息中,也許你只想交很小的一部分進行加密,如用戶的密碼等。這些密碼不應該以明文的形式保存,它們應該以加密的形式保存在數據庫中。一般情況下,大多數系統,這其中包括MySQL本身都是使用哈希算法對敏感數據進行加密的。
哈希加密是單向加密,也就是說,被加密的字符串是無法得到原字符串的。這種方法使用很有限,一般只使用在密碼驗證或其它需要驗證的地方。在比較時并不是將加密字符串進行解密,而是將輸入的字符串也使用同樣的方法進行加密,再和數據庫中的加密字符串進行比較。這樣即使知道了算法并得到了加密字符串,也無法還原最初的字符串。銀行卡密碼就是采用的這種方式進行加密。
MySQL提供了4個函數用于哈希加密:PASSWORD, ENCRYPT, SHA1和MD5。下面讓我們試一試這4個函數,看看會得到什么結果。我們以加密字符串"pa55word"為例進行說明:
讓我們先來看看MD5函數
SELECT MD5('pa55word');
+----------------------------------+
| MD5('pa55word') |
+----------------------------------+
| a17a41337551d6542fd005e18b43afd4 |
+----------------------------------+
1 row in set (0.13 sec)
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com