MySQL数据库安全配置规范操作
1.賬號
以普通帳戶安全運行mysqld,禁止mysql以root帳號權限運行,攻擊者可能通過mysql獲得系統(tǒng)root超級用戶權限,完全控制系統(tǒng)。
配置/etc/my.cnf
[mysql.server] user=mysql補充操作說明
直接通過本地網(wǎng)絡之外的計算機改變生產(chǎn)環(huán)境中的數(shù)據(jù)庫是異常危險的。有時,管理員會打開主機對數(shù)據(jù)庫的訪問:
> GRANT ALL ON *.* TO 'root'@'%'; 這其實是完全放開了對root的訪問。所以,把重要的操作限制給特定主機非常重要: > GRANT ALL ON *.* TO 'root'@'localhost'; > GRANT ALL ON *.* TO 'root'@'myip.athome' ; > FLUSH PRIVILEGES;判定條件
禁止以root賬號運行mysqld;
檢測操作
檢查進程屬主和運行參數(shù)是否包含--user=mysql類似語句:
# ps –ef | grep mysqld #grep -i user /etc/my.cnf用戶權限
應按照用戶分配賬號,避免不同用戶間共享賬號
創(chuàng)建用戶 設定指定ip地址登陸數(shù)據(jù)庫
create user vvera@'指定ip地址' identified by 'vv@122';這樣就創(chuàng)建了一個名為:vvera 密碼為:vv@122 的用戶。
然后登錄一下。
檢測方法
判定條件
不用名稱的用戶可以連接數(shù)據(jù)庫;使用不同用戶連接數(shù)據(jù)庫
應刪除或鎖定與數(shù)據(jù)庫運行、維護等工作無關的賬號
移除匿名賬戶和廢棄的賬戶
DROP USER語句用于刪除一個或多個MySQL賬戶。要使用DROP USER,必須擁有mysql數(shù)據(jù)庫的全局CREATE USER權限或DELETE權限。賬戶名稱的用戶和主機部分與用戶表記錄的User和Host列值相對應。
使用DROP USER,您可以取消一個賬戶和其權限,操作如下:
該語句可以刪除來自所有授權表的帳戶權限記錄。紅色標識的無用賬戶都可以刪除。
使用操作命令之后的結果
drop user ''@'mysql',''@'localhost','root'@'::1','root'@'mysql';補充操作說明
要點:
DROP USER不能自動關閉任何打開的用戶對話。而且,如果用戶有打開的對話,此時取消用戶,則命令不會生效,直到用戶對話被關閉后才生效。一旦對話被關閉,用戶也被取消,此用戶再次試圖登錄時將會失敗。
檢側操作:
mysql 查看所有用戶的語句
輸入指令
依次檢查所列出的賬戶是否為必要賬戶,刪除無用戶或過期賬戶。
2.口令
檢查帳戶默認密碼和弱密碼
修改帳戶弱密碼
如要修改密碼,執(zhí)行如下命令:
檢查本地密碼:(注意,管理帳號root默認是空密碼)
3.權限設置
在數(shù)據(jù)庫權限配置能力內,根據(jù)用戶的業(yè)務需要,配置其所需的最小權限。
合理設置用戶權限
補充操作說明
有些應用程序是通過一個特定數(shù)據(jù)庫表的用戶名和口令連接到MySQL的,安全人員不應當給予這個用戶完全的訪問權。
如果攻擊者獲得了這個擁有完全訪問權的用戶,他也就擁有了所有的數(shù)據(jù)庫。查看一個用戶許可的方法是在MySQL控制臺中使用命令SHOW GRANT
| grant all | ON . | to vvera | 授權vvera全庫權限 |
| grant select | ON tanggula.* | to vvera | 授權vvera唐古拉數(shù)據(jù)庫查看權限 |
| grant create | ON tanggula.* | to vvera | 授權vvera唐古拉數(shù)據(jù)庫添加權限 |
授權并創(chuàng)建用戶,并指定密碼
grant 權限 on 權限范圍 to 用戶 identified by '密碼'回收權限
revoke 權限 on 范圍 from 用戶
4.日志審計
數(shù)據(jù)庫應配置日志功能,
show variables like 'log_%';查看所有的log命令 show variables like 'log_bin';查看具體的log命令5.禁用或限制遠程訪問
禁止網(wǎng)絡連接,防止猜解密碼攻擊,溢出攻擊和嗅探攻擊。(僅限于應用和數(shù)據(jù)庫在同一臺主機)
參考配置操作
如果數(shù)據(jù)庫不需遠程訪問,可以禁止遠程tcp/ip連接, 通過在mysqld服務器中參數(shù)中添加 --skip-networking 啟動參數(shù)來使mysql不監(jiān)聽任何TCP/IP連接,增加安全性。強迫MySQL僅監(jiān)聽本機,方法是在my.cnf的[mysqld]部分增加下面一行:bind-address=127.0.0.1
6.移除測試(test)數(shù)據(jù)庫和禁用LOCAL INFILE
刪除可以匿名訪問的test數(shù)據(jù)庫和防止非授權用戶訪問本地文件
移除測試(test)數(shù)據(jù)庫
在默認安裝的MySQL中,匿名用戶可以訪問test數(shù)據(jù)庫。我們可以移除任何無用的數(shù)據(jù)庫,以避免在不可預料的情況下訪問了數(shù)據(jù)庫。因而,在MySQL控制臺中,執(zhí)行:
禁用LOCAL INFILE
另一項改變是禁用”LOAD DATA LOCAL INFILE”命令,這有助于防止非授權用戶訪問本地文件。在PHP應用程序中發(fā)現(xiàn)有新的SQL注入漏洞時,這樣做尤其重要。此外,在某些情況下,LOCAL INFILE命令可被用于訪問操作系統(tǒng)上的其它文件(如/etc/passwd),應使用下現(xiàn)的命令:
mysql> SELECT load_file("/etc/passwd")為禁用LOCAL INFILE命令,應當在MySQL配置文件的[mysqld]部分增加下面的參數(shù):
set-variable=local-infile=0檢查操作
Mysql>show databases;轉載于:https://www.cnblogs.com/qiming0322/p/10136719.html
總結
以上是生活随笔為你收集整理的MySQL数据库安全配置规范操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: amoeba mysql_从零开始:My
- 下一篇: RuntimeError: NCCL e