亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL安全性指南(3)(轉(zhuǎn))

 更新時(shí)間:2007年03月06日 00:00:00   作者:  
正在看的ORACLE教程是:MySQL安全性指南(3)(轉(zhuǎn))。 MySQL安全性指南(3)    

作 者: 晏子



2.4 不用GRANT設(shè)置用戶
如果你有一個(gè)早于3.22.11的MySQL版本,你不能使用GRANT(或REVOKE)語(yǔ)句設(shè)置用戶及其訪問(wèn)權(quán)限,但你可以直接修改授權(quán)表的內(nèi)容。如果你理解GRANT語(yǔ)句如何修改授權(quán)表,這很容易。那么你通過(guò)手工發(fā)出INSERT語(yǔ)句就能自己做同樣的事情。

當(dāng)你發(fā)出一條GRANT語(yǔ)句時(shí),你指定一個(gè)用戶名和主機(jī)名,可能還有口令。對(duì)該用戶生成一個(gè)user表記錄,并且這些值記錄在User、Host和Password列中。如果你在GRANT語(yǔ)句中指定全局權(quán)限,這些權(quán)限記錄在記錄的權(quán)限列中。其中要留神的是GRANT語(yǔ)句為你加密口令,而INSERT不是,你需要在INSERT中使用PASSWORD()函數(shù)加密口令。

如果你指定數(shù)據(jù)庫(kù)級(jí)權(quán)限,用戶名和主機(jī)名被記錄在db表的User和Host列。你為其授權(quán)的數(shù)據(jù)庫(kù)記錄在Db列中,你授予的權(quán)限記錄在權(quán)限列中。

對(duì)于表級(jí)和列級(jí)權(quán)限,效果是類似的。在tables_priv和columns_priv表中創(chuàng)建記錄以記錄用戶名、主機(jī)名和數(shù)據(jù)庫(kù),還有相關(guān)的表和列。授予的權(quán)限記錄在權(quán)限列中。

如果你還記得前面的介紹,你應(yīng)該能即使不用GRANT語(yǔ)句也能做GRANT做的事情。記住在你直接修改授權(quán)表時(shí),你將通知服務(wù)器重載授權(quán)表,否則他不知道你的改變。你可以執(zhí)行一個(gè)mysqladmin flush-privileges或mysqladmin reload命令強(qiáng)迫一個(gè)重載。如果你忘記做這個(gè),你會(huì)疑惑為什么服務(wù)器不做你想做的事情。

下列GRANT語(yǔ)句創(chuàng)建一個(gè)擁有所有權(quán)的超級(jí)用戶。包括授權(quán)給別人的能力:

GRANT ALL ON *.* TO anyname@localhost IDENTIFIED BY "passwd"
    WITH GRANT OPTION
該語(yǔ)句將在user表中為anyname@localhost創(chuàng)建一個(gè)記錄,打開所有權(quán)限,因?yàn)檫@里是超級(jí)用戶(全局)權(quán)限存儲(chǔ)的地方,要用INSERT語(yǔ)句做同樣的事情,語(yǔ)句是:

INSERT INTO user  VALUES("localhost","anyname",PASSWORD("passwd"),
    "Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y")
你可能發(fā)現(xiàn)它不工作,這要看你的MySQL版本。授權(quán)表的結(jié)構(gòu)已經(jīng)改變而且你在你的user表可能沒(méi)有14個(gè)權(quán)限列。用SHOW COLUMNS找出你的授權(quán)表包含的每個(gè)權(quán)限列,相應(yīng)地調(diào)整你的INSERT語(yǔ)句。 下列GRANT語(yǔ)句也創(chuàng)建一個(gè)擁有超級(jí)用戶身份的用戶,但是只有一個(gè)單個(gè)的權(quán)限:

GRANT RELOAD ON *.* TO flush@localhost IDENTIFIED BY "flushpass"
本例的INSERT語(yǔ)句比前一個(gè)簡(jiǎn)單,它很容易列出列名并只指定一個(gè)權(quán)限列。所有其它列將設(shè)置為缺省的"N":

INSERT INTO user (Host,Password,Reload) VALUES("localhost","flush",PASSWORD("flushpass"),"Y")
數(shù)據(jù)庫(kù)級(jí)權(quán)限用一個(gè)ON db_name.*子句而不是ON *.*進(jìn)行授權(quán):

GRANT ALL ON sample.* TO boris@localhost IDENTIFIED BY "ruby"
這些權(quán)限不是全局的,所以它們不存儲(chǔ)在user表中,我們?nèi)匀恍枰趗ser表中創(chuàng)建一條記錄(使得用戶能連接),但我們也需要?jiǎng)?chuàng)建一個(gè)db表記錄記錄數(shù)據(jù)庫(kù)集權(quán)限:

INSERT INTO user (Host,User,Password) VALUES("localhost","boris",PASSWORD("ruby"))

INSERT INTO db VALUES("localhost","sample_db","boris","Y","Y","Y","Y","Y","Y","N","Y","Y","Y")

"N"列是為GRANT權(quán)限;對(duì)末尾的一個(gè)數(shù)據(jù)庫(kù)級(jí)具有WITH GRANT OPTION的GRANT語(yǔ)句,你要設(shè)置該列為"Y"。

要設(shè)置表級(jí)或列級(jí)權(quán)限,你對(duì)tables_priv或columns_priv使用INSERT語(yǔ)句。當(dāng)然,如果你沒(méi)有GRANT語(yǔ)句,你將沒(méi)有這些表,因?yàn)樗鼈冊(cè)贛ySQL中同時(shí)出現(xiàn)。如果你確實(shí)有這些表并且為了某些原因想要手工操作它們,要知道你不能用單獨(dú)的列啟用權(quán)限。

你設(shè)置tables_priv.Table_priv或columns_priv.Column_priv列來(lái)設(shè)置包含你想啟用的權(quán)限值。例如,要對(duì)一個(gè)表啟用SELECT和INSERT權(quán)限,你要在相關(guān)的tables_priv的記錄中設(shè)置Table_priv為"Select,Insert"。

如果你想對(duì)一個(gè)擁有MySQL賬號(hào)的用戶修改權(quán)限,使用UPDATE而不是INSERT,不管你增加或撤銷權(quán)限都是這樣。要完全刪除一個(gè)用戶,從用戶使用的每個(gè)表中刪除記錄。

如果你愿意避免發(fā)一個(gè)查詢來(lái)直接修改全權(quán)表,你可以看一下MySQL自帶的mysqlaccess和mysql_setpermissions腳本。



附錄1 小測(cè)驗(yàn)
在你剛剛新安裝了一個(gè)MySQL服務(wù)器,在你增加了一個(gè)允許連接MySQL的用戶,用下列語(yǔ)句:

GRANT ALL ON samp_db.* TO fred@*.snake.net IDENTIFIED "cocoa"

而fred碰巧在服務(wù)器主機(jī)上有個(gè)賬號(hào),所以他試圖連接服務(wù)器:

%mysql -u fred -pcocoa samp_db
ERROR 1045: Access denied for user: fred@localhost (Using password: YES)

為什么?

原因是:

先考慮一下mysql_install_db如何建立初始權(quán)限表和服務(wù)器如何使用user表記錄匹配客戶連接。在你用mysql_install_db初始化你的數(shù)據(jù)庫(kù)時(shí),它創(chuàng)建類似這樣的user表:

Host User
localhost
pit.snake.net
localhost
pit.snake.net root
root



頭兩個(gè)記錄允許root指定localhost或主機(jī)名連接本地服務(wù)器,后兩個(gè)允許匿名用戶從本地連接。當(dāng)增加fred用戶后,

Host User
localhost
pit.snake.net
localhost
pit.snake.net
%.snake.net root
root


fred

在服務(wù)器啟動(dòng)時(shí),它讀取記錄并排序它們(首先按主機(jī),然后按主機(jī)上的用戶),越具體越排在前面:

Host User
localhost
localhost
pit.snake.net
pit.snake.net
%.snake.net root

root

fred

有l(wèi)ocalhost的兩個(gè)記錄排在一起,而對(duì)root的記錄排在第一,因?yàn)樗瓤罩蹈唧w。pit.snake.net的記錄也類似。所有這些均是沒(méi)有任何通配符的字面上的Host值,所以它們排在對(duì)fred記錄的前面,特別是匿名用戶排在fred之前。

結(jié)果是在fred試圖從localhost連接時(shí),Host列中的一個(gè)空用戶名的記錄在包含%.snake.net的記錄前匹配。該記錄的口令是空的,因?yàn)槿笔〉哪涿脩魶](méi)有口令。因?yàn)樵趂red連接時(shí)指定了一個(gè)口令,由一個(gè)錯(cuò)配且連接失敗。

這里要記住的是,雖然用通配符指定用戶可以從其連接的主機(jī)是很方便。但你從本地主機(jī)連接時(shí)會(huì)有問(wèn)題,只要你在table表中保留匿名用戶記錄。

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

mysql> DELETE FROM user WHERE User="";

更進(jìn)一步,同時(shí)刪除其他授權(quán)表中的任何匿名用戶,有User列的表有db、tables_priv和columns_priv。

附錄2 使一個(gè)新的MySQL安裝更安全
在你自己安裝了一個(gè)新的MySQL服務(wù)器后,你需要為MySQL的root用戶指定一個(gè)目錄(缺省無(wú)口令),否則如果你忘記這點(diǎn),你將你

[1] [2] 下一頁(yè)

正在看的ORACLE教程是:MySQL安全性指南(3)(轉(zhuǎn))。的MySQL處于極不安全的狀態(tài)(至少在一段時(shí)間內(nèi))。

在Unix(Linux)上,在按照手冊(cè)的指令安裝好MySQL后,你必須運(yùn)行mysql_install_db腳本建立包含授權(quán)表的mysql數(shù)據(jù)庫(kù)和初始權(quán)限。在Windows上,運(yùn)行分發(fā)中的Setup程序初始化數(shù)據(jù)目錄和mysql數(shù)據(jù)庫(kù)。假定服務(wù)器也在運(yùn)行。

當(dāng)你第一次在機(jī)器上安裝MySQL時(shí),mysql數(shù)據(jù)庫(kù)中的授權(quán)表是這樣初始化的:

你可以從本地主機(jī)(localhost)上以root連接而不指定口令。root用戶擁有所有權(quán)限(包括管理權(quán)限)并可做任何事情。(順便說(shuō)明,MySQL超級(jí)用戶與Unix超級(jí)用戶有相同的名字,他們彼此毫無(wú)關(guān)系。)
匿名訪問(wèn)被授予用戶可從本地連接名為test和任何名字以test_開始的數(shù)據(jù)庫(kù)。匿名用戶可對(duì)數(shù)據(jù)庫(kù)做任何事情,但無(wú)管理權(quán)限。
從本地主機(jī)多服務(wù)器的連接是允許的,不管連接的用戶使用一個(gè)localhost主機(jī)名或真實(shí)主機(jī)名。如:

% mysql -h localhost test

% mysql -h pit.snake.net test

你以root連接MySQL甚至不指定口令的事實(shí)只是意味著初始安裝不安全,所以作為管理員的你首先要做的應(yīng)該是設(shè)置root口令,然后根據(jù)你設(shè)置口令使用的方法,你也可以告訴服務(wù)器重載授權(quán)表是它知道這個(gè)改變。(在服務(wù)器啟動(dòng)時(shí),它重載表到內(nèi)存中而可能不知道你已經(jīng)修改了它們。)

對(duì)MySQL 3.22和以上版本,你可以用mysqladmin設(shè)置口令:

% mysqladmin -u root password yourpassword

對(duì)于MySQL的任何版本,你可以用mysql程序并直接修改mysql數(shù)據(jù)庫(kù)中的user授權(quán)表:

% mysql -u root mysql
mysql>UPDATE user SET password=PASSWORD("yourpassword") WHERE User="root";

如果你有MySQL的老版本,使用mysql和UPDATE。

在你設(shè)置完口令后,通過(guò)運(yùn)行下列命令檢查你是否需要告訴服務(wù)器重載授權(quán)表:

% mysqladmin -u root status

如果服務(wù)器仍然讓你以root而不指定口令而連接服務(wù)器,重載授權(quán)表:

% mysqladmin -u root reload

在你設(shè)置了root的口令后(并且如果需要重載了授權(quán)表),你將需要在任何時(shí)候以root連接服務(wù)器時(shí)指定口令。

上一頁(yè)  [1] [2] 

相關(guān)文章

  • 基于Oracle閃回詳解(必看篇)

    基于Oracle閃回詳解(必看篇)

    下面小編就為大家分享一篇基于Oracle閃回詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • ORACLE 數(shù)據(jù)庫(kù)RMAN備份恢復(fù)

    ORACLE 數(shù)據(jù)庫(kù)RMAN備份恢復(fù)

    還原不同位置的數(shù)據(jù)庫(kù)
    2009-04-04
  • LINUX下Oracle數(shù)據(jù)庫(kù)用戶創(chuàng)建方法詳解

    LINUX下Oracle數(shù)據(jù)庫(kù)用戶創(chuàng)建方法詳解

    這篇文章主要介紹了LINUX下Oracle數(shù)據(jù)庫(kù)用戶創(chuàng)建方法,結(jié)合實(shí)例形式較為詳細(xì)的分析總結(jié)了Oracle數(shù)據(jù)庫(kù)用戶創(chuàng)建的具體步驟與相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • Oracle用戶密碼過(guò)期報(bào)錯(cuò)的解決辦法

    Oracle用戶密碼過(guò)期報(bào)錯(cuò)的解決辦法

    Oracle數(shù)據(jù)庫(kù) 11g默認(rèn)密碼過(guò)期時(shí)間為180天過(guò)期,針對(duì)密碼過(guò)期企業(yè)一般是采用修改密碼的方式,個(gè)人電腦上則可以將密碼過(guò)期時(shí)間修改為永久,本文給大家介紹了Oracle用戶密碼過(guò)期報(bào)錯(cuò)的解決辦法,需要的朋友可以參考下
    2024-03-03
  • Oracle刪除數(shù)據(jù)非常慢的問(wèn)題及解決

    Oracle刪除數(shù)據(jù)非常慢的問(wèn)題及解決

    這篇文章主要介紹了Oracle刪除數(shù)據(jù)非常慢的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Oracle中SQL*plus常用命令詳解

    Oracle中SQL*plus常用命令詳解

    在 Oracle 11g 數(shù)據(jù)庫(kù)系統(tǒng)中,用戶對(duì)數(shù)據(jù)庫(kù)的操作主要是通過(guò) SQL*Plus 來(lái)完成的,下面將介紹如何啟動(dòng) SQL*Plus 和如何使用 SQL*Plus 連接到數(shù)據(jù)庫(kù),感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • oracle 更改數(shù)據(jù)庫(kù)名的方法

    oracle 更改數(shù)據(jù)庫(kù)名的方法

    這兩天一朋友問(wèn)如何更改數(shù)據(jù)庫(kù)名,于是做個(gè)測(cè)試,簡(jiǎn)單記錄下,以便說(shuō)明問(wèn)題。
    2009-10-10
  • Oracle遞歸樹形結(jié)構(gòu)查詢功能

    Oracle遞歸樹形結(jié)構(gòu)查詢功能

    oracle樹狀結(jié)構(gòu)查詢即層次遞歸查詢,是sql語(yǔ)句經(jīng)常用到的,在實(shí)際開發(fā)中組織結(jié)構(gòu)實(shí)現(xiàn)及其層次化實(shí)現(xiàn)功能也是經(jīng)常遇到的。這篇文章給大家介紹了Oracle遞歸樹形結(jié)構(gòu)查詢功能,需要的朋友參考下
    2019-09-09
  • Win7 64位下PowerDesigner連接64位Oracle11g數(shù)據(jù)庫(kù)

    Win7 64位下PowerDesigner連接64位Oracle11g數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了Win7 64位下PowerDesigner連接64位Oracle11g數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Oracle數(shù)據(jù)加密方法分析

    Oracle數(shù)據(jù)加密方法分析

    這篇文章主要介紹了Oracle數(shù)據(jù)加密方法,實(shí)例分析了Oracle基于md5算法的數(shù)據(jù)加密技巧,需要的朋友可以參考下
    2016-09-09

最新評(píng)論