本篇內(nèi)容介紹了“MySQL的安全使用方式”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)于2013年成立,先為玄武等服務(wù)建站,玄武等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為玄武企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
MySQL 基礎(chǔ)知識
MySQL是一個流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(Relational Database Management System,RDMS),在與PHP結(jié)合應(yīng)用方面,MySQL是最好的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。MySQL使用不當(dāng),常常會引起致命的安全問題。
1、運行安全
為了防止攻擊者通過MySQL漏洞越權(quán)獲取更高的權(quán)限,不要使用系統(tǒng)root用戶運行MySQLflush privileges; // 強制刷新內(nèi)存授權(quán)表,否則使用的還是在內(nèi)存緩沖的口令 需要正確地給用戶分配權(quán)限,不要將全部權(quán)限分配給普通用戶,有選擇性地分配讀寫權(quán)限,如只分配查詢權(quán)限給用戶。 不要將with grant option授權(quán)給普通用戶,防止普通用戶將權(quán)限授予他人,造成管理混亂。 表1是常用的權(quán)限及說明。 表1 常用權(quán)限及說明 4、數(shù)據(jù)庫安全 默認(rèn)MySQL安裝初始化后會自動生成空用戶和test庫,進行安裝測試,這會對數(shù)據(jù)庫的安全構(gòu)成威脅,有必要全部刪除,最后的狀態(tài)只保留單個root即可。當(dāng)然,以后可以根據(jù)需要增加用戶和數(shù)據(jù)庫。 5、限制非授權(quán)IP訪問 如果是單機運行MySQL,推薦開啟skip-networking,可以徹底關(guān)閉MySQL的TCP/IP連接方式。 如果是固定IP訪問MySQL,可以在配置文件中增加bind-address=IP,前提是關(guān)閉skip-networking。 6、文件讀取安全 在MySQL中,使用load data local infile命令提供對本地文件的讀取功能。在5.0版本中,該選項是默認(rèn)打開的,該操作會利用MySQL把本地文件讀到數(shù)據(jù)庫中,然后攻擊者就可以非法獲取敏感信息。假如不需要讀取本地文件,應(yīng)將其關(guān)閉。 網(wǎng)絡(luò)上流傳的一些攻擊方法中就有用到load data local infile的,同時它也是很多新發(fā)現(xiàn)的SQL Injection攻擊利用的手段。攻擊者還能通過使用load data local infile裝載“/etc/passwd”進一個數(shù)據(jù)庫表,然后用SELECT顯示它,這個操作對服務(wù)器的安全來說是致命的。 可以在my.cnf中添加local-infile=0參數(shù)。 或者在MySQL啟動時添加local-infile=0參數(shù)。 7、常用安全選項 下面是一些MySQL自己提供的安全選項,在使用MySQL服務(wù)時可以根據(jù)自己的需要進行靈活的配置。 該選項控制是否可以載入主函數(shù)只有xxx符號的用戶定義函數(shù),如xxx_init()、xxx_deinit()、xxx_reset()、xxx_clear()、xxx_add()等函數(shù)。默認(rèn)情況下,該選項關(guān)閉,并且只能載入至少有輔助符的UDF。這樣可以防止從未包含合法UDF的共享對象文件載入函數(shù)。 如果用--local-infile=0啟動服務(wù)器,則客戶端不能使用LOCAL IN LOAD DATA語句。 強制服務(wù)器為新密碼生成短(pre-4.1)散列密碼。當(dāng)服務(wù)器必須支持舊版本客戶端程序時,這對于保證兼容性很有作用。 在以前版本的MySQL中,該選項使SHOW DATABASES語句只顯示用戶具有部分權(quán)限的數(shù)據(jù)庫名。在MySQL 5.1中,該選項不再作為現(xiàn)在的默認(rèn)行為使用,有一個SHOW DATABASES權(quán)限可以用來控制每個賬戶對數(shù)據(jù)庫名的訪問。 如果啟用,用戶不能使用GRANT語句創(chuàng)建新用戶,除非用戶有mysql.user表的INSERT權(quán)限。如果要讓用戶具有授權(quán)權(quán)限來創(chuàng)建新用戶,應(yīng)給用戶授予下面的權(quán)限。 這樣確保用戶不能直接更改權(quán)限列,必須使用GRANT語句給其他用戶授予該權(quán)限。 不允許鑒定有舊(pre-4.1)密碼的賬戶。 這個選項導(dǎo)致服務(wù)器根本不使用權(quán)限系統(tǒng),從而使得每個人都有權(quán)完全訪問所有數(shù)據(jù)庫?。ㄍㄟ^執(zhí)行mysqladmin flush-privileges或mysqladmin eload命令,或執(zhí)行FLUSH PRIVILEGES語句,可以告訴一個正在運行的服務(wù)器再次開始使用授權(quán)表。) 主機名不被解析。所有在授權(quán)表的Host的列值必須是IP號或localhost。 在網(wǎng)絡(luò)上不允許TCP/IP連接。所有到mysqld的連接必須經(jīng)由Unix套接字進行。 使用該選項,只允許有SHOW DATABASES權(quán)限的用戶執(zhí)行SHOW DATABASES語句,該語句顯示所有數(shù)據(jù)庫名。不使用該選項,允許所有用戶執(zhí)行SHOW DATABASES,但只顯示用戶有SHOW DATABASES權(quán)限或部分?jǐn)?shù)據(jù)庫權(quán)限的數(shù)據(jù)庫名。請注意,全局權(quán)限指數(shù)據(jù)庫的權(quán)限。 8、數(shù)據(jù)安全 在生產(chǎn)環(huán)境中,數(shù)據(jù)庫可能會遭遇各種各樣的不測從而導(dǎo)致數(shù)據(jù)丟失,如硬件故障、軟件故障、自然災(zāi)害、惡意攻擊者攻擊、誤操作等都會對數(shù)據(jù)造成損壞或丟失。為了在數(shù)據(jù)丟失之后能夠及時恢復(fù)數(shù)據(jù),需要定期對數(shù)據(jù)進行備份。 備份數(shù)據(jù)的策略要根據(jù)不同的業(yè)務(wù)場景進行定制,大致有幾個參考數(shù)值,可以根據(jù)這些數(shù)值來定制符合特定環(huán)境中的數(shù)據(jù)備份策略。 (1)能夠容忍丟失多少數(shù)據(jù)。 (2)恢復(fù)數(shù)據(jù)需要多長時間。 (3)需要恢復(fù)哪些數(shù)據(jù)。 根據(jù)業(yè)務(wù)場景的需要來選擇備份方式是完整備份、增量備份還是差異備份。 “MySQL的安全使用方式”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!mysql>grant SELECT on db.table to username@'localhost'
mysql>show databases; mysql>drop database test; // 刪除數(shù)據(jù)庫test use mysql; delete from db; // 刪除存放數(shù)據(jù)庫的表信息,因為還沒有數(shù)據(jù)庫信息 mysql>delete from user where not (user='root'); // 刪除初始非root的用戶 mysql>delete from user where user='root' and password=; // 刪除空密碼的root Query OK, 2 rows affected(0.00 sec) mysql>flush privileges; // 強制刷新內(nèi)存授權(quán)表
# my.ini skip-networking
bind-address=10.10.1.1
vim /etc/my.cnf [mysqld] set-variable=local-infile = 0
/usr/local/mysql/bin/mysqld_safe --user=mysql --local-infile=0 &
--allow-suspicious-udfs
--local-infile[={0|1}]
--old-passwords
(OBSOLETE) --safe-show-database
--safe-user-create
mysql> GRANT INSERT(user) ON mysql.user TO'user_name'@'host_name';
--secure-auth
--skip-grant-tables
--skip-name-resolve
--skip-networking
--skip-show-database
分享題目:MySQL的安全使用方式
地址分享:http://weahome.cn/article/geciso.html