MySQL數(shù)據(jù)庫安全配置介紹第2/2頁
3、外部網(wǎng)絡(luò)安全
MySQL數(shù)據(jù)庫安裝好以后,Unix平臺的user表是這樣的:
mysql> use mysql;
Database changed
mysql> select Host,User,Password,Select_priv,Grant_priv from user;
4 rows in set (0.00 sec)
Windows平臺的user表是這樣的:
mysql> use mysql;
Database changed
mysql> select Host,User,Password,Select_priv,Grant_priv from user;
4 rows in set (0.00 sec)
我們先來看Unix平臺的user表。其中redhat只是我試驗(yàn)機(jī)的機(jī)器名,所以實(shí)際上Unix平臺的MySQL默認(rèn)只允許本機(jī)才能連接數(shù)據(jù)庫。但是缺省root用戶口令是空,所以當(dāng)務(wù)之急是給root用戶加上口令。給數(shù)據(jù)庫用戶加口令有三種方法:
1)在shell提示符下用mysqladmin命令來改root用戶口令:
shell>mysqladmin -uroot password test
這樣,MySQL數(shù)據(jù)庫root用戶的口令就被改成test了。(test只是舉例,我們實(shí)際使用的口令一定不能使用這種易猜的弱口令)
2)用set password修改口令:
mysql> set password for root@localhost=password('test');
這時(shí)root用戶的口令就被改成test了。
3)直接修改user表的root用戶口令:
mysql> use mysql;
mysql> update user set password=password('test') where user='root';
mysql> flush privileges;
這樣,MySQL數(shù)據(jù)庫root用戶的口令也被改成test了。其中最后一句命令flush privileges的意思是強(qiáng)制刷新內(nèi)存授權(quán)表,否則用的還是緩沖中的口令,這時(shí)非法用戶還可以用root用戶及空口令登陸,直到重啟MySQL服務(wù)器。
我們還看到user為空的匿名用戶,雖然它在Unix平臺下沒什么權(quán)限,但為了安全起見我們應(yīng)該刪除它:
mysql> delete from user where user='';
Windows版本MySQL的user表有很大不同,我們看到Host字段除了localhost還有是%。這里%的意思是允許任意的主機(jī)連接MySQL服務(wù)器,這是非常不安全的,給攻擊者造成可乘之機(jī),我們必須刪除Host字段為%的記錄:
4、一些小竅門
1)如果不慎忘記了MySQL的root密碼,我們可以在啟動MySQL服務(wù)器時(shí)加上參數(shù)--skip-grant-tables來跳過授權(quán)表的驗(yàn)證 (./safe_mysqld --skip-grant-tables &),這樣我們就可以直接登陸MySQL服務(wù)器,然后再修改root用戶的口令,重啟MySQL就可以用新口令登陸了。
2)啟動MySQL服務(wù)器時(shí)加--skip-show-database使一般數(shù)據(jù)庫用戶不能瀏覽其它數(shù)據(jù)庫。
3)啟動MySQL服務(wù)器時(shí)加上--chroot=path參數(shù),讓mysqld守護(hù)進(jìn)程運(yùn)行在chroot環(huán)境中。這樣SQL語句LOAD DATA INFILE和SELECT ... INTO OUTFILE就限定在chroot_path下讀寫文件了。這里有一點(diǎn)要注意,MySQL啟動后會建立一個(gè)mysql.sock文件,默認(rèn)是在/tmp目錄下。使用了chroot后,MySQL會在chroot_path/tmp去建立mysql.sock文件,如果沒有chroot_path/tmp目錄或啟動MySQL的用戶沒有這個(gè)目錄寫權(quán)限就不能建立mysql.sock文件,MySQL會啟動失敗。比如我們加了--chroot=/usr/local/mysql/啟動參數(shù),那么最好建立一個(gè)啟動MySQL的用戶能寫的/usr/local/mysql/tmp目錄,當(dāng)然我們也可以用--socket=path來指定mysql.sock文件的路徑,但這個(gè)path一定要在chroot_path里面。
4)啟動MySQL服務(wù)器時(shí)加上--log-slow-queries=file參數(shù),這樣mysqld會把SQL命令執(zhí)行時(shí)間超過long_query_time的寫入file文件。如果沒有指定=file,mysqld默認(rèn)會寫到數(shù)據(jù)目錄下的hostname-slow.log。如果只指定了filename,沒有指定路徑,那么mysqld也會把filename寫到數(shù)據(jù)目錄下。我們通過這個(gè)日志文件可以找出執(zhí)行時(shí)間超長的查詢語句,然后盡可能的優(yōu)化它減輕MySQL服務(wù)器的負(fù)擔(dān)。
5)如果我們只需本機(jī)使用MySQL服務(wù),那么我們還可以加上--skip-networking啟動參數(shù)使MySQL不監(jiān)聽任何TCP/IP連接,增加安全性。(非常推薦)
6)MySQL的更多mysqld啟動選項(xiàng)請見MySQL手冊4.16.4 mysqld Command-line Options
References
MySQL Manual(http://www.mysql.com/documentation/index.html)
晏子的MySQL管理員指南(http://clyan.hongnet.com/index.html)
Access Granted(http://www.devshed.com/Server_Side/MySQL/Access)
- 新安裝的MySQL數(shù)據(jù)庫需要注意的安全知識
- MySQL安全設(shè)置圖文教程
- Win2003服務(wù)器安裝及設(shè)置教程 MySQL安全設(shè)置圖文教程
- MySQL的安全問題從安裝開始說起
- MySQL數(shù)據(jù)庫安全設(shè)置與注意事項(xiàng)小結(jié)
- MySQL數(shù)據(jù)庫安全之防止撰改的方法
- MySQL數(shù)據(jù)庫中的安全設(shè)置方案
- 淺析MySQL的注入安全問題
- Ubuntu上安裝MySQL+問題處理+安全優(yōu)化
- 關(guān)于加強(qiáng)MYSQL安全的幾點(diǎn)建議
- MySQL安全策略(MySQL安全注意事項(xiàng))
相關(guān)文章
MySQL設(shè)置白名單限制的實(shí)現(xiàn)
白名單是一種機(jī)制,用于限制哪些主機(jī)可以連接到服務(wù)器,而阻止其他主機(jī)的訪問,本文主要介紹了MySQL設(shè)置白名單限制的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
MySQL提示The InnoDB feature is disabled需要開啟InnoDB的解決方法
這篇文章主要介紹了MySQL提示The InnoDB feature is disabled需要開啟InnoDB的解決方法,簡單分析了MySQL數(shù)據(jù)庫開啟InnoDB引擎的實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-01-01
阿里云配置MySQL-server?8.0遠(yuǎn)程登錄的實(shí)現(xiàn)
我們經(jīng)常會碰到需要遠(yuǎn)程訪問數(shù)據(jù)庫的場景,本文主要介紹了阿里云配置MySQL-server?8.0遠(yuǎn)程登錄的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
Mysql Error Code : 1436 Thread stack overrun
I meet with the error while calling stored procedures from the MySql in my Mac system server. It similar as the description below2011-07-07

