CentOS服務(wù)器下mysql安全設(shè)置
mysql安全設(shè)置及性能優(yōu)化配置全攻略,注意在不熟悉的情況下更改設(shè)置前最好進(jìn)行備份,以免出錯(cuò)。
1、修改root用戶的的口令
缺省情況下MySQL沒有設(shè)置密碼,我們可以用三種方法設(shè)置密碼頭:
* 用mysqladmin命令來改root用戶口令
# mysqladmin -uroot password ecan5com //設(shè)置MySQL管理操作用戶root的密碼為52netseek
* 用set password修改口令:
mysql> set password for root@localhost=password(‘ecan5com’);
* 直接修改user表的root用戶口令
mysql> use mysql;
mysql> update user set password=password(‘ecan5com’) where user=’root’;
mysql> flush privileges;
2、刪除默認(rèn)的數(shù)據(jù)庫和用戶
我們的數(shù)據(jù)庫是在本地,并且也只需要本地的php腳本對(duì)mysql進(jìn)行讀取,所以很多用戶不需要。m
ysql初始化后會(huì)自動(dòng)生成空用戶和test庫,這會(huì)對(duì)數(shù)據(jù)庫構(gòu)成威脅,我們?nèi)縿h除。
我們使用mysql客戶端程序連接到本地的mysql服務(wù)器后出現(xiàn)如下提示:
mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where not(host=”localhost” and user=”root”);
mysql> flush privileges;
3、 改變默認(rèn)mysql管理員的名稱 //僅為建議
根據(jù)個(gè)人習(xí)慣,因?yàn)槟J(rèn)的mysql的管理員名稱是root,所以如果能夠修改的話,
能夠防止一些腳本小子對(duì)系統(tǒng)的窮舉。我們可以直接修改數(shù)據(jù)庫,把root用戶改為”admin”
mysql> use mysql;
mysql> update user set user=”admin” where user=”root”;
mysql> flush privileges;
4、提高本地安全性
提高本地安全性,主要是防止mysql對(duì)本地文件的存取,比如黑客通過mysql把/etc/passwd獲取了,會(huì)對(duì)系統(tǒng)構(gòu)成威脅。
mysql對(duì)本地文件的存取是通過SQL語句來實(shí)現(xiàn),主要是通過Load DATA LOCAL INFILE來實(shí)現(xiàn),我們能夠通過禁用該功能來
防止黑客通過SQL注射等獲取系統(tǒng)核心文件。 禁用該功能必須在 my.cnf 的[mysqld]部分加上一個(gè)參數(shù):
set-variable=local-infile=0
5、禁止遠(yuǎn)程連接mysql
因?yàn)槲覀兊膍ysql只需要本地的php腳本進(jìn)行連接,所以我們無需開socket進(jìn)行監(jiān)聽,那么我們完全可以關(guān)閉監(jiān)聽的功能。
有兩個(gè)方法實(shí)現(xiàn):
* 配置my.cnf文件,在[mysqld]部分添加 skip-networking 參數(shù)
* mysqld服務(wù)器中參數(shù)中添加 –skip-networking 啟動(dòng)參數(shù)來使mysql不監(jiān)聽任何TCP/IP連接,增加安全性。如果要進(jìn)行mysql的管理的話,可以在服務(wù)器本地安裝一個(gè)phpMyadmin來進(jìn)行管理。
6、控制數(shù)據(jù)庫訪問權(quán)限
對(duì)于使用php腳本來進(jìn)行交互,最好建立一個(gè)用戶只針對(duì)某個(gè)庫有 update、select、delete、insert、drop table、create table等權(quán)限,這樣就很好避免了數(shù)據(jù)庫用戶名和密碼被黑客查看后最小損失。
比如下面我們創(chuàng)建一個(gè)數(shù)據(jù)庫為db1,同時(shí)建立一個(gè)用戶test1能夠訪問該數(shù)據(jù)庫。
mysql> create database db1;
mysql> grant select,insert,update,delete,create,drop privileges on db1.* to test1@localhost identified by ‘a(chǎn)dmindb’;
以上SQL是創(chuàng)建一個(gè)數(shù)據(jù)庫db1,同時(shí)增加了一個(gè)test1用戶,口令是admindb,但是它只能從本地連接mysql,對(duì)db1庫有select,insert,update,delete,create,drop操作權(quán)限。
7、限制一般用戶瀏覽其他用戶數(shù)據(jù)庫
如果有多個(gè)數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫有一個(gè)用戶,那么必須限制用戶瀏覽其他數(shù)據(jù)庫內(nèi)容,可以在啟動(dòng)MySQL服務(wù)器時(shí)加–skip-show-database 啟動(dòng)參數(shù)就能夠達(dá)到目的。
忘記mysql密碼的解決辦法
如果不慎忘記了MySQL的root密碼,我們可以在啟動(dòng)MySQL服務(wù)器時(shí)加上參數(shù) –skip-grant-tables來跳過授權(quán)表的驗(yàn)證 (./safe_mysqld –skip-grant-tables &),這樣我們就可以直接登陸MySQL服務(wù)器,然后再修改root用戶的口令,重啟MySQL就可以用新口令登陸了。
8、數(shù)據(jù)庫文件的安全
我們默認(rèn)的mysql是安裝在/usr/local/mysql目錄下的,那么對(duì)應(yīng)的數(shù)據(jù)庫文件就是在/usr/local/mysql/var目錄下,那么我們要保證該目錄不能讓未經(jīng)授權(quán)的用戶訪問后把數(shù)據(jù)庫打包拷貝走了,所以要限制對(duì)該目錄的訪問。
我們修改該目錄的所屬用戶和組是mysql,同時(shí)改變?cè)L問權(quán)限:
# chown -R mysql.mysql /usr/local/mysql/var
# chmod -R go-rwx /usr/local/mysql/var
9、刪除歷史記錄
執(zhí)行以上的命令會(huì)被shell記錄在歷史文件里,比如bash會(huì)寫入用戶目錄的.bash_history文件,如果這些文件不慎被讀,
那么數(shù)據(jù)庫的密碼就會(huì)泄漏。用戶登陸數(shù)據(jù)庫后執(zhí)行的SQL命令也會(huì)被MySQL記錄在用戶目錄的.mysql_history文件里。
如果數(shù)據(jù)庫用戶用SQL語句修改了數(shù)據(jù)庫密碼,也會(huì)因.mysql_history文件而泄漏。所以我們?cè)趕hell登陸及備份的時(shí)候
不要在-p后直接加密碼,而是在提示后再輸入數(shù)據(jù)庫密碼。 另外這兩個(gè)文件我們也應(yīng)該不讓它記錄我們的操作,以防萬一。
# rm .bash_history .mysql_history
# ln -s /dev/null .bash_history
# ln -s /dev/null .mysql_history
10、其他
另外還可以考慮使用chroot等方式來控制mysql的運(yùn)行目錄,更好的控制權(quán)限,具體可以參考相關(guān)文章。
my.cnf的調(diào)試參數(shù)
11、快速修復(fù)MySQL數(shù)據(jù)庫
修復(fù)數(shù)據(jù)庫
# mysqlcheck -A -o -r -p
修復(fù)指定的數(shù)據(jù)庫
# mysqlcheck -o -r Database_NAME -p
12、跟據(jù)內(nèi)存的大小選擇MySQL的負(fù)載,選擇相應(yīng)的文件名復(fù)制到/etc/my.cnf
如果是RPM包安裝:/usr/share/doc/mysql-XXX/目錄下有
如果是源代碼編譯安裝:support-files/目錄下有.
cp /usr/local/share/mysql-***/my-large.cnf /etc/my.cnf
my-small.cnf # > my-medium.cnf # 32M – 64M
my-large.cnf # memory = 512M
my-huge.cnf # 1G-2G
my-innodb-heavy-4G.cnf # 4GB
閱讀了本文,你是否對(duì)mysql安全設(shè)置及性能優(yōu)化配置有了更好的認(rèn)識(shí),如果你覺的本文不錯(cuò)!請(qǐng)分享到您的空間與微博,讓更多好友分享及下次需要查看的時(shí)候能快速找到本文!
關(guān)鍵字:CentOS、服務(wù)器、mysql
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(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啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解