溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

2 數(shù)據(jù)庫安全加固

發(fā)布時間:2020-07-25 10:31:06 來源:網(wǎng)絡(luò) 閱讀:2314 作者:Mr_sheng 欄目:MySQL數(shù)據(jù)庫

2 數(shù)據(jù)庫安全加固... 28

2.1 修改root用戶默認(rèn)口令,刪除空口令... 30

2.2 刪除默認(rèn)數(shù)據(jù)庫和非必要數(shù)據(jù)庫用戶... 31

2.3 使用獨(dú)立用戶運(yùn)行msyql32

2.4 關(guān)于非root數(shù)據(jù)庫用戶的管理... 33

2.5 關(guān)于默認(rèn)管理員用戶名的管理... 34

2.6 用戶目錄權(quán)限限制... 35

2.7 命令歷史記錄保護(hù)... 36

2.8 禁止用戶遠(yuǎn)程連接數(shù)據(jù)庫... 37

2.9 禁止MySQL對本地文件存取... 38

2.10 MySQL服務(wù)器權(quán)限控制... 39

2.11 開啟MySQL錯誤日志... 40

2.12 數(shù)據(jù)庫備份策略... 41

2.13 Mysqld安全相關(guān)啟動選項(xiàng)


MySQL版本為5.5;按照操作系統(tǒng)、安裝介質(zhì)以及安裝時設(shè)置的不同,安裝目錄會和本文示例有所區(qū)別。下表是MySQL手冊中的默認(rèn)安裝目錄及結(jié)構(gòu)。

Linux操作系統(tǒng)下采用RPM方式安裝,默認(rèn)安裝路徑見下表。

表2-1 Linux安裝后文件路徑

Directory

Contents of Directory

/usr/bin

Client programs and scripts

/usr/sbin

The mysqld  server

/var/lib/mysql

Log files, databases

/usr/share/info

Manual in Info format

/usr/share/man

Unix manual pages

/usr/include/mysql

Include (header) files

/usr/lib/mysql

Libraries

/usr/share/mysql

Miscellaneous support files, including  error messages, character set files, sample configuration files, SQL for  database installation

/usr/share/sql-bench

Benchmarks

 

本文中使用的MySQL全局配置文件也會根據(jù)操作系統(tǒng)以及安裝方式不同,位于不同的目錄下;下表分別是Linux下可能的位置。

表2-2 Linux下全局配置文件可能位置

File Name

Purpose

/etc/my.cnf

Global options

/etc/mysql/my.cnf

Global options

SYSCONFDIR/my.cnf

Global options

$MYSQL_HOME/my.cnf

Global options

defaults-extra-file

The file specified with --defaults-extra-file=path, if any

~/.my.cnf

User-specific options

本文示例Linux環(huán)境采用rpm方式安裝;安裝路徑為默認(rèn)值,全局配置文件為/etc/my.cnf

本文示例已將運(yùn)行所需的命令文件所需的加入到系統(tǒng)變量中。


 2.1 修改root用戶默認(rèn)口令,刪除空口令

實(shí)施目的

缺省安裝的MySQLroot用戶是空密碼的,為了安全起見,必須修改為強(qiáng)密碼,所謂的強(qiáng)密碼,至少8位,由字母、數(shù)字和符號組成的不規(guī)律密碼。

問題影響

為了保證用戶的安全登錄。

系統(tǒng)當(dāng)前狀態(tài)

查看系統(tǒng)當(dāng)前的密碼,查看mysqluser表。

實(shí)施步驟

使用MySQL自帶的命令mysqladmin修改root密碼,同時也可以登陸數(shù)據(jù)庫,修改數(shù)據(jù)庫mysql下的user表的字段內(nèi)容,修改方法如下所示:

方法1:使用mysqladmin命令或者進(jìn)入usr/bin目錄使用mysqladmin工具修改密碼。

# /usr/bin/mysqladmin -u root -p password

回車后在系統(tǒng)提示下輸入舊密碼以及新密碼。

方法2:登陸數(shù)據(jù)庫修改密碼。

#mysql -u root -p
#mysql> use mysql;
#mysql> update user set password= password('newpassword') where user='root';
#mysql> flush privileges;

2 數(shù)據(jù)庫安全加固

“flush privileges”命令的作用是強(qiáng)制刷新內(nèi)存授權(quán)表,使得修改立即生效。

回退方案

恢復(fù)原始密碼到加固前的設(shè)置。

判斷依據(jù)

使用原始密碼連接數(shù)據(jù)庫,如果登陸失敗且提示鑒權(quán)問題,則修改成功。

實(shí)施風(fēng)險

重要等級

★★★


 2.2 刪除默認(rèn)數(shù)據(jù)庫和非必要數(shù)據(jù)庫用戶

實(shí)施目的

一般情況下,MySQL數(shù)據(jù)庫安裝后,只允許本地訪問且很多用戶不需要,尤其是默認(rèn)安裝的用戶。

問題影響

MySQL初始化后會自動生成空用戶和test庫,進(jìn)行安裝的測試,這會對數(shù)據(jù)庫的安全構(gòu)成威脅,有必要全部刪除,最后的狀態(tài)只保留rootultravr即可,當(dāng)然以后根據(jù)需要增加用戶和數(shù)據(jù)庫。

系統(tǒng)當(dāng)前狀態(tài)

存在test數(shù)據(jù)庫以及mysql數(shù)據(jù)庫中的user表中存在非必要的其他用戶信息。

實(shí)施步驟

# mysql -u root -p 
# mysql> show databases;
# mysql> drop database test; //刪除數(shù)據(jù)庫test
# mysql>use mysql;
# mysql>delete from db; //刪除存放數(shù)據(jù)庫的表信息,因?yàn)檫€沒有數(shù)據(jù)庫信息。
# mysql> delete from user where user  <> 'root' and user <> 'ultravr'; // 刪除初始非rootultravr的用戶
# mysql> delete from user where user='root' and password=''; //刪除空密碼的root

# mysql> delete from user where user='ultravr' and password=''; //刪除空密碼的ultravr
# mysql> flush privileges; //強(qiáng)制刷新內(nèi)存授權(quán)表。

 

回退方案

恢復(fù)原始用戶到加固前的設(shè)置。

判斷依據(jù)

查詢是否存在對應(yīng)的數(shù)據(jù)庫和用戶數(shù)據(jù)信息。

實(shí)施風(fēng)險

重要等級

★★★


 2.2 刪除默認(rèn)數(shù)據(jù)庫和非必要數(shù)據(jù)庫用戶

實(shí)施目的

一般情況下,MySQL數(shù)據(jù)庫安裝后,只允許本地訪問且很多用戶不需要,尤其是默認(rèn)安裝的用戶。

問題影響

MySQL初始化后會自動生成空用戶和test庫,進(jìn)行安裝的測試,這會對數(shù)據(jù)庫的安全構(gòu)成威脅,有必要全部刪除,最后的狀態(tài)只保留rootultravr即可,當(dāng)然以后根據(jù)需要增加用戶和數(shù)據(jù)庫。

系統(tǒng)當(dāng)前狀態(tài)

存在test數(shù)據(jù)庫以及mysql數(shù)據(jù)庫中的user表中存在非必要的其他用戶信息。

實(shí)施步驟

# mysql -u root -p 
# mysql> show databases;
# mysql> drop database test; //刪除數(shù)據(jù)庫test
# mysql>use mysql;
# mysql>delete from db; //刪除存放數(shù)據(jù)庫的表信息,因?yàn)檫€沒有數(shù)據(jù)庫信息。
# mysql> delete from user where user  <> 'root' and user <> 'ultravr'; // 刪除初始非rootultravr的用戶
# mysql> delete from user where user='root' and password=''; //刪除空密碼的root

# mysql> delete from user where user='ultravr' and password=''; //刪除空密碼的ultravr
# mysql> flush privileges; //強(qiáng)制刷新內(nèi)存授權(quán)表。

 

回退方案

恢復(fù)原始用戶到加固前的設(shè)置。

判斷依據(jù)

查詢是否存在對應(yīng)的數(shù)據(jù)庫和用戶數(shù)據(jù)信息。

實(shí)施風(fēng)險

重要等級

★★★

 2.3 使用獨(dú)立用戶運(yùn)行msyql

實(shí)施目的

mysqld拒絕使用root運(yùn)行,除非使用-user=root選項(xiàng)明顯指定。應(yīng)該用普通非特權(quán)用戶運(yùn)行mysqld。正如前面的安裝過程一樣,為數(shù)據(jù)庫建立獨(dú)立的linux中的mysql賬戶,該賬戶用來只用于管理和運(yùn)行MySQL。

問題影響

絕對不要作為使用root用戶運(yùn)行MySQL服務(wù)器。這樣做非常危險,因?yàn)槿魏尉哂?/span>FILE權(quán)限的用戶能夠用root創(chuàng)建文件(例如,~root/.bashrc)。

系統(tǒng)當(dāng)前狀態(tài)

當(dāng)前運(yùn)行mysql用戶為root。

實(shí)施步驟

要想用其它Linux用戶啟動mysqld,增加user選項(xiàng)指定/etc/my.cnf選項(xiàng)文件或服務(wù)器數(shù)據(jù)目錄的my.cnf選項(xiàng)文件中的[mysqld]組的用戶名。

方法1:修改/etc/my.cnf文檔,配置mysqld的啟動用戶

#cp /etc/my.cnf /etc/my.cnf.bak //請?jiān)谛薷那皞浞?/span>/etc/my.cnf 
#vi /etc/my.cnf
[mysqld]
user=mysql

該命令使服務(wù)器用指定的用戶來啟動,無論你手動啟動或通過mysqld_safemysql.server啟動,都能確保使用mysql的身份,

方法2:在啟動數(shù)據(jù)庫時,加上user參數(shù)。

 # mysqld_safe –user=mysql &

mysqld運(yùn)行時,只使用對數(shù)據(jù)庫目錄具有讀或?qū)憴?quán)限的linux用戶來運(yùn)行。

回退方案

恢復(fù)/etc/my.cnf到加固前的狀態(tài)。

判斷依據(jù)

使用ps命令查詢MySQL進(jìn)程的執(zhí)行用戶。

實(shí)施風(fēng)險

重要等級

★★★★★

 2.4 關(guān)于非root數(shù)據(jù)庫用戶的管理

實(shí)施目的

使用一個低權(quán)限的用戶訪問授權(quán)的數(shù)據(jù)庫,防止管理員密碼外泄或者業(yè)務(wù)系統(tǒng)使用的賬戶具有高權(quán)限。

問題影響

因?yàn)?/span>root用戶具有最高數(shù)據(jù)庫權(quán)限,因此日常使用中對于業(yè)務(wù)系統(tǒng)直接使用root用戶會造成安全上的很多威脅。

系統(tǒng)當(dāng)前狀態(tài)

系統(tǒng)中除了root用戶外不存在其他用戶。

實(shí)施步驟

我們需要創(chuàng)建一個單獨(dú)的用戶僅在本地訪問FusionCloud UltraVR的業(yè)務(wù)數(shù)據(jù)庫。

# mysql -u root -p 
# mysql> CREATE USER ultravr@'localhost' IDENTIFIED BY 'mypassword';
# mysql> GRANT ALL ON lego.* TO 'ultravr'@'localhost';//授權(quán)對lego數(shù)據(jù)庫有全部權(quán)限。
# mysql> flush privileges; //強(qiáng)制刷新內(nèi)存授權(quán)表。

對于ISOVHD方式安裝的系統(tǒng)ultravr已經(jīng)創(chuàng)建,需要執(zhí)行下面的命令來加固:

# mysql -u root -p 
# mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'ultravr'@'localhost';// 收回對所有數(shù)據(jù)庫的全部權(quán)限。
# mysql> GRANT ALL ON lego.* TO 'ultravr'@'localhost';//授權(quán)對lego數(shù)據(jù)庫有全部權(quán)限。
# mysql> flush privileges; //強(qiáng)制刷新內(nèi)存授權(quán)表。

 

2 數(shù)據(jù)庫安全加固

請不要將mysql數(shù)據(jù)庫的權(quán)限賦給普通用戶,特別是mysql.user表保存了很多用戶敏感信息,建議只有管理員才有這張表的訪問等權(quán)限。

 

2 數(shù)據(jù)庫安全加固

如果還需要設(shè)置其他權(quán)限,請參考Mysql手冊關(guān)于GRANT的描述。需要注意的是FusionCloud UltraVR的正常運(yùn)行至少需要賬戶對lego數(shù)據(jù)庫添加表、刪除表、修改表、對表記錄的插入、刪除、修改以及執(zhí)行存儲過程權(quán)限。

回退方案

刪除新建用戶。

判斷依據(jù)

# mysql> show GRANTS FOR 'ultravr'@'localhost';
+----------------------------------------------------------------------------------------------------------------+
| Grants for ultravr@localhost                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'ultravr'@'localhost' IDENTIFIED BY PASSWORD '*63DAA25989C7E01EB96570FA4DBE154711BEB361' |
| GRANT ALL PRIVILEGES ON `lego`.* TO 'ultravr'@'localhost'                                                      |
+----------------------------------------------------------------------------------------------------------------+

實(shí)施風(fēng)險

重要等級

★★★★

 2.5 關(guān)于默認(rèn)管理員用戶名的管理

實(shí)施目的

修改mysql的管理員默認(rèn)的管理員名稱,減少窮舉系統(tǒng)用戶的惡意行為成功性。

問題影響

mysql的管理員名稱是root,這一定程度上對系統(tǒng)用戶窮舉的惡意行為提供了便利,此時修改為復(fù)雜的用戶名,請不要在設(shè)定為admin或者administraror的形式,因?yàn)樗鼈円苍谝撞碌挠脩糇值渲小?/span>

系統(tǒng)當(dāng)前狀態(tài)

當(dāng)前管理員用戶為root。

實(shí)施步驟

# mysql -u root -p 
# mysql> use mysql;
# mysql> update user set user="newroot" where user="root"; //改成不易被猜測的用戶名 
# mysql> flush privileges;

回退方案

實(shí)施上述步驟,將管理員名稱更新成root。

判斷依據(jù)

使用root重新登錄Mysql,提示失??;使用修改后的用戶民登錄提示成功。

實(shí)施風(fēng)險

重要等級

★★

 2.6 用戶目錄權(quán)限限制

實(shí)施目的

默認(rèn)的mysql的數(shù)據(jù)庫文件在/var/lib/mysql目錄下,因此,必須保證該目錄不能讓未經(jīng)授權(quán)的用戶訪問后把數(shù)據(jù)庫打包拷貝走了,確保mysqld運(yùn)行時,只使用對數(shù)據(jù)庫目錄具有讀或?qū)憴?quán)限的linux用戶來運(yùn)行。

問題影響

限制/var/lib/mysql目錄的訪問,保證數(shù)據(jù)安全性。

系統(tǒng)當(dāng)前狀態(tài)

記錄/var/lib/mysql當(dāng)前的權(quán)限。

實(shí)施步驟

Linux操作系統(tǒng):

# chown -R mysql.mysql /var/lib/mysql //確保數(shù)據(jù)庫目錄權(quán)限所屬mysql用戶
# chmod -R 700 /var/lib/mysql   //mysql主目錄給mysql用戶已讀、寫和執(zhí)行權(quán)限

回退方案

還原上述目錄權(quán)限到加固前。

判斷依據(jù)

Linux 下利用ls -l /var/lib | grep mysql查看權(quán)限。

實(shí)施風(fēng)險

重要等級

★★★★

 2.7 命令歷史記錄保護(hù)

實(shí)施目的

數(shù)據(jù)庫相關(guān)的shell操作命令都會分別記錄在.bash_history,如果這些文件不慎被讀取,會導(dǎo)致數(shù)據(jù)庫密碼和數(shù)據(jù)庫結(jié)構(gòu)等信息泄露,而登陸數(shù)據(jù)庫后的操作將記錄在.mysql_history文件中,如果使用update表信息來修改數(shù)據(jù)庫用戶密碼的話,也會被讀取密碼,因此需要刪除這兩個文件,同時在進(jìn)行登陸或備份數(shù)據(jù)庫等與密碼相關(guān)操作時,應(yīng)該使用-p參數(shù)加入提示輸入密碼后,隱式輸入密碼,建議將以上文件置空。

問題影響

.bash_history.mysql_history文件的不慎使用導(dǎo)致信息泄露。

系統(tǒng)當(dāng)前狀態(tài)

兩個文件記錄shell里面操作的命令信息。

實(shí)施步驟

找到.mysql_history.bash_history文件所在位置。

#find / -name .bash_history
/root/.bash_history
 
#find / -name .mysql_history
/root/.mysql_history

如果有需要可以備份這兩個文件。

#cp /root/.bash_history /root/.bash_history.bak
#cp /root/.mysql_history /root/.mysql_history.bak

清空.bash_history.mysql_history

# rm .bash_history .mysql_history  //刪除歷史記錄
# ln -s /dev/null .bash_history   //shell記錄文件置空
# ln -s /dev/null .mysql_history  //mysql記錄文件置空

回退方案

還原.bash_history.mysql_history文件。

判斷依據(jù)

查看對應(yīng)的文件內(nèi)容。

實(shí)施風(fēng)險

重要等級

★★★

 2.8 禁止用戶遠(yuǎn)程連接數(shù)據(jù)庫

實(shí)施目的

不允許高權(quán)限的用戶從遠(yuǎn)程訪問數(shù)據(jù)庫,如果必要,可以將所有用戶置為僅本地訪問。

問題影響

允許高權(quán)限的用戶(如root)遠(yuǎn)程訪問數(shù)據(jù)庫會導(dǎo)致數(shù)據(jù)庫遭到網(wǎng)絡(luò)***的可能,而只允許本地訪問則可以通過操作系統(tǒng)的安全措施建立第一道攔截,減少數(shù)據(jù)庫被網(wǎng)絡(luò)***的風(fēng)險。

系統(tǒng)當(dāng)前狀態(tài)

默認(rèn)root可以遠(yuǎn)程連接數(shù)據(jù)庫。

實(shí)施步驟

禁止root賬戶遠(yuǎn)程訪問數(shù)據(jù)庫。

# mysql -u root -p 
# mysql> use mysql;
# mysql> delete from user where user='root' and host<>'localhost';
# mysql> delete from user where user='ultravr' and host<>'localhost';
# mysql> flush privileges;

回退方案

user表還原到加固前的狀態(tài)。

判斷依據(jù)

遠(yuǎn)程使用root連接時,無法訪問,提示訪問被拒絕。

實(shí)施風(fēng)險

重要等級

★★★

 2.9 禁止MySQL對本地文件存取

實(shí)施目的

mysql中,提供對本地文件的讀取,使用的是load data local infile命令,默認(rèn)在5.0版本中,該選項(xiàng)是默認(rèn)打開的,網(wǎng)絡(luò)上流傳的一些***方法中就有用它LOAD DATA LOCAL INFILE的,同時它也是很多新發(fā)現(xiàn)的SQL Injection***利用的手段。

問題影響

本地文件的讀取默認(rèn)打開,使用load data local infile命令會把本地文件讀到數(shù)據(jù)庫中,然后用戶就可以非法獲取敏感信息。不需要讀取本地文件,請務(wù)必關(guān)閉。應(yīng)該禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。

系統(tǒng)當(dāng)前狀態(tài)

默認(rèn)開啟對本地文件的讀取。

實(shí)施步驟

方法1:在my.cnf中為[mysqld]添加local-infile=0。

方法2:在啟動MySQL時加入?yún)?shù)local-infile=0。

#mysqld_safe -user=mysql -local-infile=0 &

2 數(shù)據(jù)庫安全加固

-local-infile=0選項(xiàng)啟動mysqld從服務(wù)器端禁用所有LOAD DATA LOCAL命令,假如需要獲取本地文件,需要打開,但是建議關(guān)閉。

回退方案

還原my.cnf到加固前的狀態(tài)。

判斷依據(jù)

#mysql> use mysql;

#mysql> load data local infile 'sqlfile.txt' into table users fields terminated by ',';
#ERROR 1148 (42000): The used command is not allowed with this MySQL version

實(shí)施風(fēng)險

重要等級

★★★

 2.10 MySQL服務(wù)器權(quán)限控制

實(shí)施目的

MySQL權(quán)限系統(tǒng)的主要功能是證實(shí)連接到一臺給定主機(jī)的用戶,并且賦予該用戶在數(shù)據(jù)庫上的SELECT、INSERT、UPDATEDELETE等權(quán)限(詳見user超級用戶表)。還可對MySQL特定的功能例如LOAD DATA INFILE進(jìn)行授權(quán)及管理操作的能力。

問題影響

管理員可以對user,db,host等表進(jìn)行配置,來控制用戶的訪問權(quán)限,而user表權(quán)限是超級用戶權(quán)限。只把user表的權(quán)限授予超級用戶如服務(wù)器或數(shù)據(jù)庫主管是明智的。對其他用戶,你應(yīng)該把在user表中的權(quán)限設(shè)成’N'并且僅在特定數(shù)據(jù)庫的基礎(chǔ)上授權(quán)。你可以為特定的數(shù)據(jù)庫、表或列授權(quán),FILE權(quán)限給予你用LOAD DATA INFILESELECT … INTO OUTFILE語句讀和寫服務(wù)器上的文件,任何被授予FILE權(quán)限的用戶都能讀或?qū)?/span>MySQL服務(wù)器能讀或?qū)懙娜魏挝募?/span>(說明用戶可以讀任何數(shù)據(jù)庫目錄下的文件,因?yàn)榉?wù)器可以訪問這些文件)。

系統(tǒng)當(dāng)前狀態(tài)

記錄sqlfile.txt、user信息。

實(shí)施步驟

FILE權(quán)限允許用戶在MySQL服務(wù)器具有寫權(quán)限的目錄下創(chuàng)建新文件,但不能覆蓋已有文件在user表的File_priv設(shè)置YN。所以當(dāng)你不需要對服務(wù)器文件讀取時,請關(guān)閉該權(quán)限。

# mysql -u root -p 
# mysql> use mysql;
# mysql> update user set File_priv='N'  where user='root'; //禁止讀取權(quán)限
# mysql> update user set File_priv='N'  where user='ultravr'; //禁止讀取權(quán)限
# mysql> flush privileges;

回退方案

還原到加固前的狀態(tài)。

判斷依據(jù)

# mysql -u root -p 
# mysql> use mysql;

#mysql> load data infile 'sqlfile.txt' into table user fields terminated by ','; //重登陸讀取文件
#ERROR 1045 (28000): Access denied for user 'notroot'@'localhost' (using password: YES) //失敗
# mysql> select * from user into outfile 'test.txt' fields terminated by ',';
ERROR 1045 (28000): Access denied for user ‘notroot’@'localhost’ (using password: YES)

實(shí)施風(fēng)險

重要等級

★★★

 2.11 開啟MySQL錯誤日志

實(shí)施目的

開啟Mysql錯誤日志可以提高檢測出惡意訪問的能力。

實(shí)施步驟

登陸Mysql

# mysql>show variables like 'log_%'; 
+---------------------------------+---------------------------------------+
| Variable_name                   | Value                                 |
+---------------------------------+---------------------------------------+
| log_bin                         | ON                                    |
| log_bin_trust_function_creators | OFF                                   |
| log_error                       | /var/lib/mysql/linux-vrserver-02.err |
| log_output                      | FILE                                  |
| log_queries_not_using_indexes   | OFF                                   |
| log_slave_updates               | OFF                                   |
| log_slow_queries                | OFF                                   |
| log_warnings                    | 1                                     |

查看log_error是否有記錄,Value即為日志位置。

如果ValueOFF,則請?jiān)?/span>my.cnf[mysqld]下增加一行:

log-error=log_path/error.log

然后重啟數(shù)據(jù)庫。

回退方案

還原my.cnf到加固前的狀態(tài)。

實(shí)施風(fēng)險

重要等級

★★★

 2.12 數(shù)據(jù)庫備份策略

實(shí)施目的

建議使用FusionCloud UltraVR提供的備份配置數(shù)據(jù)功能對數(shù)據(jù)庫進(jìn)行備份。

實(shí)施步驟

登錄FusionCloud UltraVR系統(tǒng),進(jìn)入管理 -> 備份配置數(shù)據(jù) 頁面進(jìn)行配置。詳細(xì)操作參考幫助系統(tǒng)。

實(shí)施風(fēng)險

重要等級

★★★

 2.13 Mysqld安全相關(guān)啟動選項(xiàng)

實(shí)施目的

MySQL啟動時可以指定一些安全相關(guān)的參數(shù),這些參數(shù)會對系統(tǒng)的安全產(chǎn)生重要的影響。本章節(jié)就這些安全相關(guān)的參數(shù)進(jìn)行說明。用戶啟動MySQL時可以根據(jù)自身需要進(jìn)行選擇。

實(shí)施步驟

my.cnf中添加相應(yīng)的啟動選項(xiàng):

--local-infile[={0|1}]

如果用local-infile=0啟動服務(wù)器,則客戶端不能使用LOCAL IN LOAD DATA語句。

 

2 數(shù)據(jù)庫安全加固

LOCAL IN LOAD DATA的安全隱患請參考本文2.9節(jié)。建議使用local-infile=0啟動服務(wù)器。

--old-passwords

強(qiáng)制服務(wù)器為新密碼生成短(pre-4.1)密碼哈希。當(dāng)服務(wù)器必須支持舊版本客戶端程序時,為了保證兼容性這很有用。但是如果不考慮持舊版本客戶端程序時請不要啟用該選項(xiàng)。

--safe-user-create

如果啟用,用戶不能用GRANT語句創(chuàng)建新用戶,除非用戶有mysql.user表的INSERT權(quán)限。如果你想讓用戶具有授權(quán)權(quán)限來創(chuàng)建新用戶,你應(yīng)給用戶授予下面的權(quán)限:

mysql> GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';

這樣確保用戶不能直接更改權(quán)限列,必須使用GRANT語句給其它用戶授予該權(quán)限。

--secure-auth

不允許鑒定有舊(pre-4.1)密碼的賬戶。

--skip-symbolic-links

建議開啟此選項(xiàng)禁用have_symlink(符號鏈接)屬性。

 

實(shí)施風(fēng)險

重要等級

★★★





向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI