程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 解析MYSQL授權原則

解析MYSQL授權原則

編輯:MySQL綜合教程

  MySQL是一個跨平台的開源關系型數據庫管理系統,是我們常用的最經濟實惠的數據庫,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,更讓用戶得到最切實的實在,很多用戶在應用中對授權原則不是很了了解,下面我們就為大家來解析。

服務器重新啟動的情況

當mysqld啟動時,所有的授權表內容被讀進存儲器並且從那時開始生效。

被服務器立即應用的情況

用GRANT、REVOKE或SET PASSWORD對授權表施行的修改會立即被服務器注意到。

直接修改授權表的情況

如果你手工地修改授權表(使用INSERT、UPDATE等等),你應該執行一個FLUSH PRIVILEGES語句或運行mysqladmin flush-privileges告訴服務器再裝載授權表,否則你的改變將不生效,除非你重啟服務器。

對現有客戶連接的影響情況

當服務器注意到授權表被改變了時,現存的客戶連接有如下影響:

·表和列權限在客戶的下一次請求時生效。

·數據庫權限改變在下一個USE db_name命令生效。

·全局權限的改變和口令改變在下一次客戶連接時生效。

授權原則

無論怎麼小心都難免在給用戶授權時留有漏洞,希望下面的內容能給你一些幫助,你一般應該遵守這些規則。

只有root用戶擁有授權表的改寫權

不要把授權表的改寫權授予除root用戶之外的其它用戶(當然,如果你可以用另一個用戶代替root用戶進行管理,以增加安全性)。因為這樣,用戶可以通過改寫授權表而推翻現有的權限。產生安全漏洞。

一般情況下,你可能不會犯這個錯誤,但是在安裝新的分發, 初始授權表之後。這個漏洞是存在的,如果你不了解這時授權表的內容你可能會犯錯誤。

在Unix(Linux)上,在按照手冊的指令安裝好MySQL後,你必須運行mysql_install_db腳本建立包含授權表的mysql數據庫和初始權限。在Windows上,運行分發中的Setup程序初始化數據目錄和mysql數據庫。假定服務器也在運行。

當你第一次在機器上安裝MySQL時,mysql數據庫中的授權表是這樣初始化的:

·你可以從本地主機(localhost)上以root連接而不指定口令。root用戶擁有所有權限(包括管理權限)並可做任何事情。(順便說明,MySQL超級用戶與Unix超級用戶有相同的名字,他們彼此毫無關系。)

·匿名訪問被授予用戶可從本地連接名為test和任何名字以test_開始的數據庫。匿名用戶可對數據庫做任何事情,但無管理權限。

一般地,建議你刪除匿名用戶記錄:

mysql> DELETE FROM user WHERE User="";

更進一步,同時刪除其他授權表中的任何匿名用戶,有User列的表有db、tables_priv和columns_priv。

另外要給root用戶設置密碼。

關於用戶、口令及主機的設置

·對所有MySQL用戶使用口令。

記住,如果other_user沒有口令,任何人能簡單地用mysql -u other_user db_name作為任何其它的人登錄。對客戶機/服務器應用程序,客戶可以指定任何用戶名是常見的做法。在你運行它以前,你可以通過編輯 mysql_install_db腳本改變所有用戶的口令,或僅僅MySQL root的口令,象這樣:

shell> mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('new_password')

-> WHERE user='root';

mysql> FLUSH PRIVILEGES;
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved