


如何實(shí)現(xiàn)MySQL中的用戶的管理問題
添加時(shí)間:2014-2-20 17:10:50
添加:
思海網(wǎng)絡(luò)
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
1、授權(quán)機(jī)制的主要作用是什么?
授權(quán)機(jī)制的基本作用是給某個(gè)主機(jī)上的用戶對某個(gè)數(shù)據(jù)庫以select,insert,update和detete的權(quán)限。而其額外的功能還包括是否允許匿名使用數(shù)據(jù)庫,使用MysQL的一些特定函數(shù),如:LOAD DATA INFILE之類。在這里請注意,MySQL中的用戶名和Unix系統(tǒng)中的用戶名并沒有什么關(guān)系。雖然許多客戶端程序允許你可以用當(dāng)前的用戶名進(jìn)行登錄,但是最標(biāo)準(zhǔn)的做法還是通過--user的選項(xiàng)。
2、授權(quán)機(jī)制是如何進(jìn)行運(yùn)作的?
在MySQL中主機(jī)和用戶的聯(lián)合視為唯一標(biāo)志。比如說,在主機(jī)1和主機(jī)2上的用戶lee實(shí)際上是不同的,他們對MySQL的使用權(quán)限也可以是有差別的。而整個(gè)授權(quán)機(jī)制的核心問題就是要解決授予從某個(gè)主機(jī)上登錄的某個(gè)用戶對某個(gè)數(shù)據(jù)庫的使用權(quán)限。你可以通過腳本mysqlaccess測試一個(gè)主機(jī)上用戶的對數(shù)據(jù)庫操作的權(quán)限。而所有的授權(quán)信息都被存儲在數(shù)據(jù)庫mysql的user、host和db表中。我們可以通過mysql mysql的指令連接到這個(gè)數(shù)據(jù)庫中,并且通過select * from user(或者db,host)顯示每個(gè)數(shù)據(jù)表中的內(nèi)容。user表中所授予的權(quán)限是整個(gè)授權(quán)機(jī)制的基本授權(quán),也就是說,user中的定義對于任何一個(gè)用戶+主機(jī)來說都是適用的,除非在db表中另外有所定義,因此,對于用戶來說最好是就某個(gè)數(shù)據(jù)庫為基礎(chǔ)進(jìn)行授權(quán)。而host表的主要目的是維護(hù)一個(gè)“安全”服務(wù)器的列表。而在具體考慮某個(gè)用戶/主機(jī)對某個(gè)數(shù)據(jù)庫的權(quán)限的的時(shí)候,我們還需要研究一下授權(quán)機(jī)制的的匹配搜索機(jī)制:
其次,在授權(quán)機(jī)制中可以對一個(gè)用戶的口令進(jìn)行加密,而且是必須加密,加密的方法是password('口令'),如果直接填寫口令的話,會導(dǎo)致數(shù)據(jù)庫無法訪問。user表中所授予的權(quán)限是整個(gè)授權(quán)機(jī)制的基本授權(quán),也就是說,user中的定義對于任何一個(gè)用戶+主機(jī)來說都是適用的,除非在db表中另外有所定義,因此,對于用戶來說最好是就某個(gè)數(shù)據(jù)庫為基礎(chǔ)進(jìn)行授權(quán)。而host表的主要目的是維護(hù)一個(gè)“安全”服務(wù)器的列表。而在具體考慮某個(gè)用戶/主機(jī)對某個(gè)數(shù)據(jù)庫的權(quán)限的的時(shí)候,我們還需要研究一下授權(quán)機(jī)制的的匹配搜索機(jī)制:
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
首先,我們需要介紹一下統(tǒng)配符的概念,統(tǒng)配符包括“%”,其意思為任意(的主機(jī)、用戶或者數(shù)據(jù)庫),而如果一條記錄為空的話,也表示任意的意思。其次,在授權(quán)機(jī)制中可以對一個(gè)用戶的口令進(jìn)行加密,而且是必須加密,加密的方法是password('口令'),如果直接填寫口令的話,會導(dǎo)致數(shù)據(jù)庫無法訪問。
從我們對這三個(gè)表的顯示我們可以看到,這三個(gè)表中的每一條記錄包含了對于某個(gè)用戶的授權(quán)情況的描述,MySQL數(shù)據(jù)庫中幾個(gè)相關(guān)的授權(quán)機(jī)制的數(shù)據(jù)表被搜索的順序?yàn)?user,db,host。也就是說,我們將首先首先檢索user數(shù)據(jù)表,找到第一個(gè)匹配的記錄,我們把在user數(shù)據(jù)表中首先匹配的記錄稱之為Priv;然后搜索db表,獲得相應(yīng)的授權(quán)。如果在db數(shù)據(jù)表相應(yīng)記錄中host字段的為空,并且Priv記錄中主機(jī)也被包含在host表的host字段之中,這樣的話,對于某個(gè)user來說,則可以在user表中加入在host表中的一些為“Y”的權(quán)限設(shè)定。如果在db表中的host字段不為空的話,那么也就不會對該用戶/主機(jī)的授權(quán)產(chǎn)生什么影響了。
了解了這一點(diǎn)之后,我們需要討論在各個(gè)數(shù)據(jù)表中的記錄的搜索的優(yōu)先權(quán)的問題,也就是說,怎樣確定第一匹配的記錄,這并不是按照數(shù)據(jù)表中的記錄的自然先后順序來確定的。在各個(gè)數(shù)據(jù)表內(nèi)的各條記錄的優(yōu)先權(quán)排列如下:
(1)user表:根據(jù)先host后user的順序確定。搜索規(guī)則如下:不包含統(tǒng)配符的記錄,包含統(tǒng)配符的記錄,空記錄。而在同樣一個(gè)host里面,繼續(xù)按照user來排列,規(guī)則和上述的一樣。
(2)db表:檢索的順序根據(jù)host字段確定:不包含統(tǒng)配符的記錄,包含統(tǒng)配符的記錄,空記錄。
(3)host表:檢索的順序根據(jù)host字段確定:不包含統(tǒng)配符的記錄,包含統(tǒng)配符的記錄,空記錄。我們用下面的例子來說明進(jìn)行匹配搜索的規(guī)則:請記住如果你更改了這些數(shù)據(jù)表,你必須使用mysqladmin reload使其生效。
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
下面是演示系統(tǒng)是如何進(jìn)行搜索的:
+-----------+---------+-
| Host | User | ...
+-----------+---------+-
| % | root | ...
| % | jeffrey | ...
| localhost | root | ...
| localhost | | ...
+-----------+---------+-
搜索的順序應(yīng)當(dāng)是:
localhost/root
localhost/any
any/jeffrey
any/root
這樣,如果在localhost的用戶jeffrey要連接數(shù)據(jù)庫的話,那么其授權(quán)應(yīng)當(dāng)根據(jù)localhost/“任意” 行所規(guī)定的權(quán)限而非“任意”/jeffrey行所規(guī)定的權(quán)限,請大家注意這一點(diǎn),因?yàn)槿绻缓线m的配置完全可能會使得你無法正常地使用這個(gè)數(shù)據(jù)庫系統(tǒng)。
我們現(xiàn)在來看一個(gè)添加一個(gè)用戶的例子:需要添加一名叫做“custom”用戶,他分別從主機(jī)'localhost', 'server.domain' 和 'whitehouse.gov'連接到數(shù)據(jù)庫中,他的口令為“stupid”,對于數(shù)據(jù)庫'bankaccount'他只想從“l(fā)ocalhost”進(jìn)行訪問,而“customer”數(shù)據(jù)庫則應(yīng)當(dāng)被上述3個(gè)主機(jī)所訪問。我們通過以下的sql語句來完成其操作。
shell> mysql mysql.
mysql> insert into user (host,user,password)
values('localhost','custom',password('stupid'));
mysql> insert into user (host,user,password)
values('server.domain','custom',password('stupid'));
mysql> insert into user (host,user,password)
values('whitehouse.gov','custom',password('stupid'));
mysql> insert into db
(host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
values
('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> insert into db
(host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
values
('%','customers','custom','Y','Y','Y','Y','Y','Y');
3、授權(quán)數(shù)據(jù)表
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
授權(quán)數(shù)據(jù)表對表的行操作包括select,insert,update和delete,對表和數(shù)據(jù)庫的操作包括create和drop。其它的授權(quán)還包括如LOAD DATA INFILE和SELECT INTO OUTFILE和管理命令:shutdown, reload, refresh 和process.三個(gè)授權(quán)數(shù)據(jù)表的結(jié)構(gòu)如下所示:
user表
字段 類型 健 默認(rèn)值
Host char(60) PRI ""
User char(16) PRI ""
Password char(16) - ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
Reload_priv enum('N','Y') - N
Shutdown_priv enum('N','Y') - N
Process_priv enum('N','Y') - N
File_priv enum('N','Y') - N
db表
字段 類型 健 默認(rèn)值
Host char(60) PRI ""
Db char(64) PRI ""
User char(16) PRI ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
host 表只有在db的數(shù)據(jù)項(xiàng)中出現(xiàn)host為空的情況下使用。
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
字段 類型 健 默認(rèn)值
Host char(60) PRI ""
Db char(64) PRI ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
在數(shù)據(jù)表中可以使用統(tǒng)配符號。
4、最常見的Access denied出現(xiàn)錯(cuò)誤的原因
(1)你是否通過mysql_install_db腳本建立mySQL的授權(quán)表,你可以通過mysql -u root進(jìn)行測試,正確的情況下應(yīng)該不會發(fā)生錯(cuò)誤。或者,你是否有一個(gè)文件為:user.ISD,通常其位置在install_dir/var/mysql/user.ISD。
(2)最初使用的時(shí)候你應(yīng)該使用mysql -u root mysql以存取數(shù)據(jù)庫,或者以root身份進(jìn)行操作。
(3)更改了授權(quán)之后是否使用了mysqladmin reload進(jìn)行了更新?
(4)在以測試為目的的時(shí)候,你應(yīng)當(dāng)選用--without-grant-tables選項(xiàng)啟動mysqld服務(wù),你可以在這時(shí)更改授權(quán)表的相關(guān)內(nèi)容,也可以用mysqlaccess檢查你的授權(quán)是否到位。
(5)沒有使用password("口令")設(shè)定了口令,結(jié)果也會出現(xiàn)錯(cuò)誤,在使用-p的選項(xiàng)的時(shí)候,注意-ppassword之間沒有空格。
5、如何使得MySQL更加安全?
(1)為每個(gè)MySQL用戶使用口令。記住,如果你不加設(shè)口令的話,其他人可以通過mysql --user other_user database的方式訪問你的數(shù)據(jù)庫,在使用MySQL進(jìn)行檢測的時(shí)候系統(tǒng)也會給你相應(yīng)的警告信息。
(2)不要用root方式啟動MySQL服務(wù)。MySQL可以以任何用戶啟動。你可以通過添加一個(gè)新用戶的方式來啟動數(shù)據(jù)庫服務(wù)。這也不會對系統(tǒng)造成任何影響,因?yàn)镸ySQL的用戶和Unix的用戶根本來說就使不同的。
(3)不要把'Process_priv','File_priv'等權(quán)限授予任何人。
(4)如果你不信任你的DNS,你應(yīng)當(dāng)使用IP來取代主機(jī)名。在任何情況下都要小心帶匹佩符的主機(jī)名。以下的一些選項(xiàng)可以影響到你的系統(tǒng)的安全:
--secure
顧名思義,可以使系統(tǒng)根加安全,因?yàn)樗梢詸z查IP地址的一致性。(實(shí)際連接IP地址和通過解析的IP地址),不過這使得mySQL在防火墻工作的時(shí)候很難被防火墻外的人所訪問。
--skip-grant-tables
一般情況下不要使用這個(gè)選項(xiàng),這可以試的任何人不受限制地訪問你的系統(tǒng)。
--skip-name-resolve
不進(jìn)行主機(jī)名的解析。在授權(quán)數(shù)據(jù)表中的所有主機(jī)名必須為ip地址或者'localhost'.
--skip-networking
1、授權(quán)機(jī)制的主要作用是什么?
授權(quán)機(jī)制的基本作用是給某個(gè)主機(jī)上的用戶對某個(gè)數(shù)據(jù)庫以select,insert,update和detete的權(quán)限。而其額外的功能還包括是否允許匿名使用數(shù)據(jù)庫,使用MysQL的一些特定函數(shù),如:LOAD DATA INFILE之類。在這里請注意,MySQL中的用戶名和Unix系統(tǒng)中的用戶名并沒有什么關(guān)系。雖然許多客戶端程序允許你可以用當(dāng)前的用戶名進(jìn)行登錄,但是最標(biāo)準(zhǔn)的做法還是通過--user的選項(xiàng)。
2、授權(quán)機(jī)制是如何進(jìn)行運(yùn)作的?
在MySQL中主機(jī)和用戶的聯(lián)合視為唯一標(biāo)志。比如說,在主機(jī)1和主機(jī)2上的用戶lee實(shí)際上是不同的,他們對MySQL的使用權(quán)限也可以是有差別的。而整個(gè)授權(quán)機(jī)制的核心問題就是要解決授予從某個(gè)主機(jī)上登錄的某個(gè)用戶對某個(gè)數(shù)據(jù)庫的使用權(quán)限。你可以通過腳本mysqlaccess測試一個(gè)主機(jī)上用戶的對數(shù)據(jù)庫操作的權(quán)限。而所有的授權(quán)信息都被存儲在數(shù)據(jù)庫mysql的user、host和db表中。我們可以通過mysql mysql的指令連接到這個(gè)數(shù)據(jù)庫中,并且通過select * from user(或者db,host)顯示每個(gè)數(shù)據(jù)表中的內(nèi)容。user表中所授予的權(quán)限是整個(gè)授權(quán)機(jī)制的基本授權(quán),也就是說,user中的定義對于任何一個(gè)用戶+主機(jī)來說都是適用的,除非在db表中另外有所定義,因此,對于用戶來說最好是就某個(gè)數(shù)據(jù)庫為基礎(chǔ)進(jìn)行授權(quán)。而host表的主要目的是維護(hù)一個(gè)“安全”服務(wù)器的列表。而在具體考慮某個(gè)用戶/主機(jī)對某個(gè)數(shù)據(jù)庫的權(quán)限的的時(shí)候,我們還需要研究一下授權(quán)機(jī)制的的匹配搜索機(jī)制:
其次,在授權(quán)機(jī)制中可以對一個(gè)用戶的口令進(jìn)行加密,而且是必須加密,加密的方法是password('口令'),如果直接填寫口令的話,會導(dǎo)致數(shù)據(jù)庫無法訪問。user表中所授予的權(quán)限是整個(gè)授權(quán)機(jī)制的基本授權(quán),也就是說,user中的定義對于任何一個(gè)用戶+主機(jī)來說都是適用的,除非在db表中另外有所定義,因此,對于用戶來說最好是就某個(gè)數(shù)據(jù)庫為基礎(chǔ)進(jìn)行授權(quán)。而host表的主要目的是維護(hù)一個(gè)“安全”服務(wù)器的列表。而在具體考慮某個(gè)用戶/主機(jī)對某個(gè)數(shù)據(jù)庫的權(quán)限的的時(shí)候,我們還需要研究一下授權(quán)機(jī)制的的匹配搜索機(jī)制:
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
首先,我們需要介紹一下統(tǒng)配符的概念,統(tǒng)配符包括“%”,其意思為任意(的主機(jī)、用戶或者數(shù)據(jù)庫),而如果一條記錄為空的話,也表示任意的意思。其次,在授權(quán)機(jī)制中可以對一個(gè)用戶的口令進(jìn)行加密,而且是必須加密,加密的方法是password('口令'),如果直接填寫口令的話,會導(dǎo)致數(shù)據(jù)庫無法訪問。
從我們對這三個(gè)表的顯示我們可以看到,這三個(gè)表中的每一條記錄包含了對于某個(gè)用戶的授權(quán)情況的描述,MySQL數(shù)據(jù)庫中幾個(gè)相關(guān)的授權(quán)機(jī)制的數(shù)據(jù)表被搜索的順序?yàn)?user,db,host。也就是說,我們將首先首先檢索user數(shù)據(jù)表,找到第一個(gè)匹配的記錄,我們把在user數(shù)據(jù)表中首先匹配的記錄稱之為Priv;然后搜索db表,獲得相應(yīng)的授權(quán)。如果在db數(shù)據(jù)表相應(yīng)記錄中host字段的為空,并且Priv記錄中主機(jī)也被包含在host表的host字段之中,這樣的話,對于某個(gè)user來說,則可以在user表中加入在host表中的一些為“Y”的權(quán)限設(shè)定。如果在db表中的host字段不為空的話,那么也就不會對該用戶/主機(jī)的授權(quán)產(chǎn)生什么影響了。
了解了這一點(diǎn)之后,我們需要討論在各個(gè)數(shù)據(jù)表中的記錄的搜索的優(yōu)先權(quán)的問題,也就是說,怎樣確定第一匹配的記錄,這并不是按照數(shù)據(jù)表中的記錄的自然先后順序來確定的。在各個(gè)數(shù)據(jù)表內(nèi)的各條記錄的優(yōu)先權(quán)排列如下:
(1)user表:根據(jù)先host后user的順序確定。搜索規(guī)則如下:不包含統(tǒng)配符的記錄,包含統(tǒng)配符的記錄,空記錄。而在同樣一個(gè)host里面,繼續(xù)按照user來排列,規(guī)則和上述的一樣。
(2)db表:檢索的順序根據(jù)host字段確定:不包含統(tǒng)配符的記錄,包含統(tǒng)配符的記錄,空記錄。
(3)host表:檢索的順序根據(jù)host字段確定:不包含統(tǒng)配符的記錄,包含統(tǒng)配符的記錄,空記錄。我們用下面的例子來說明進(jìn)行匹配搜索的規(guī)則:請記住如果你更改了這些數(shù)據(jù)表,你必須使用mysqladmin reload使其生效。
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
下面是演示系統(tǒng)是如何進(jìn)行搜索的:
+-----------+---------+-
| Host | User | ...
+-----------+---------+-
| % | root | ...
| % | jeffrey | ...
| localhost | root | ...
| localhost | | ...
+-----------+---------+-
搜索的順序應(yīng)當(dāng)是:
localhost/root
localhost/any
any/jeffrey
any/root
這樣,如果在localhost的用戶jeffrey要連接數(shù)據(jù)庫的話,那么其授權(quán)應(yīng)當(dāng)根據(jù)localhost/“任意” 行所規(guī)定的權(quán)限而非“任意”/jeffrey行所規(guī)定的權(quán)限,請大家注意這一點(diǎn),因?yàn)槿绻缓线m的配置完全可能會使得你無法正常地使用這個(gè)數(shù)據(jù)庫系統(tǒng)。
我們現(xiàn)在來看一個(gè)添加一個(gè)用戶的例子:需要添加一名叫做“custom”用戶,他分別從主機(jī)'localhost', 'server.domain' 和 'whitehouse.gov'連接到數(shù)據(jù)庫中,他的口令為“stupid”,對于數(shù)據(jù)庫'bankaccount'他只想從“l(fā)ocalhost”進(jìn)行訪問,而“customer”數(shù)據(jù)庫則應(yīng)當(dāng)被上述3個(gè)主機(jī)所訪問。我們通過以下的sql語句來完成其操作。
shell> mysql mysql.
mysql> insert into user (host,user,password)
values('localhost','custom',password('stupid'));
mysql> insert into user (host,user,password)
values('server.domain','custom',password('stupid'));
mysql> insert into user (host,user,password)
values('whitehouse.gov','custom',password('stupid'));
mysql> insert into db
(host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
values
('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> insert into db
(host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
values
('%','customers','custom','Y','Y','Y','Y','Y','Y');
3、授權(quán)數(shù)據(jù)表
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
授權(quán)數(shù)據(jù)表對表的行操作包括select,insert,update和delete,對表和數(shù)據(jù)庫的操作包括create和drop。其它的授權(quán)還包括如LOAD DATA INFILE和SELECT INTO OUTFILE和管理命令:shutdown, reload, refresh 和process.三個(gè)授權(quán)數(shù)據(jù)表的結(jié)構(gòu)如下所示:
user表
字段 類型 健 默認(rèn)值
Host char(60) PRI ""
User char(16) PRI ""
Password char(16) - ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
Reload_priv enum('N','Y') - N
Shutdown_priv enum('N','Y') - N
Process_priv enum('N','Y') - N
File_priv enum('N','Y') - N
db表
字段 類型 健 默認(rèn)值
Host char(60) PRI ""
Db char(64) PRI ""
User char(16) PRI ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
host 表只有在db的數(shù)據(jù)項(xiàng)中出現(xiàn)host為空的情況下使用。
關(guān)鍵字: MySQL內(nèi)核 數(shù)據(jù)庫安全配置 用戶認(rèn)證模塊 密碼恢復(fù) 存儲過程編寫 數(shù)據(jù)庫索引
內(nèi)容摘要:MySQL有一套先進(jìn)的但非標(biāo)準(zhǔn)的安全/授權(quán)系統(tǒng),掌握其授權(quán)機(jī)制是開始操作MySQL數(shù)據(jù)庫必須要走的第一步,對于一個(gè)熟悉SQL基本操作的人來說,也是MySQL所有的知識中比較難以理解的一個(gè)部分。本文通過揭開其授權(quán)系統(tǒng)的運(yùn)作機(jī)制,希望大家能夠可以更好地操作和使用這個(gè)優(yōu)秀的數(shù)據(jù)庫系統(tǒng)。
字段 類型 健 默認(rèn)值
Host char(60) PRI ""
Db char(64) PRI ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
在數(shù)據(jù)表中可以使用統(tǒng)配符號。
4、最常見的Access denied出現(xiàn)錯(cuò)誤的原因
(1)你是否通過mysql_install_db腳本建立mySQL的授權(quán)表,你可以通過mysql -u root進(jìn)行測試,正確的情況下應(yīng)該不會發(fā)生錯(cuò)誤。或者,你是否有一個(gè)文件為:user.ISD,通常其位置在install_dir/var/mysql/user.ISD。
(2)最初使用的時(shí)候你應(yīng)該使用mysql -u root mysql以存取數(shù)據(jù)庫,或者以root身份進(jìn)行操作。
(3)更改了授權(quán)之后是否使用了mysqladmin reload進(jìn)行了更新?
(4)在以測試為目的的時(shí)候,你應(yīng)當(dāng)選用--without-grant-tables選項(xiàng)啟動mysqld服務(wù),你可以在這時(shí)更改授權(quán)表的相關(guān)內(nèi)容,也可以用mysqlaccess檢查你的授權(quán)是否到位。
(5)沒有使用password("口令")設(shè)定了口令,結(jié)果也會出現(xiàn)錯(cuò)誤,在使用-p的選項(xiàng)的時(shí)候,注意-ppassword之間沒有空格。
5、如何使得MySQL更加安全?
(1)為每個(gè)MySQL用戶使用口令。記住,如果你不加設(shè)口令的話,其他人可以通過mysql --user other_user database的方式訪問你的數(shù)據(jù)庫,在使用MySQL進(jìn)行檢測的時(shí)候系統(tǒng)也會給你相應(yīng)的警告信息。
(2)不要用root方式啟動MySQL服務(wù)。MySQL可以以任何用戶啟動。你可以通過添加一個(gè)新用戶的方式來啟動數(shù)據(jù)庫服務(wù)。這也不會對系統(tǒng)造成任何影響,因?yàn)镸ySQL的用戶和Unix的用戶根本來說就使不同的。
(3)不要把'Process_priv','File_priv'等權(quán)限授予任何人。
(4)如果你不信任你的DNS,你應(yīng)當(dāng)使用IP來取代主機(jī)名。在任何情況下都要小心帶匹佩符的主機(jī)名。以下的一些選項(xiàng)可以影響到你的系統(tǒng)的安全:
--secure
顧名思義,可以使系統(tǒng)根加安全,因?yàn)樗梢詸z查IP地址的一致性。(實(shí)際連接IP地址和通過解析的IP地址),不過這使得mySQL在防火墻工作的時(shí)候很難被防火墻外的人所訪問。
--skip-grant-tables
一般情況下不要使用這個(gè)選項(xiàng),這可以試的任何人不受限制地訪問你的系統(tǒng)。
--skip-name-resolve
不進(jìn)行主機(jī)名的解析。在授權(quán)數(shù)據(jù)表中的所有主機(jī)名必須為ip地址或者'localhost'.
--skip-networking
不允許通過網(wǎng)絡(luò)進(jìn)行連接。所有的連接必須通過Unix Socket。
關(guān)鍵字:MySQL、網(wǎng)絡(luò)、數(shù)據(jù)庫
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解