一, information_schema 數據庫內容說明
information_schema 數據庫:mysql 5.0以上版本所有
作用:放架構信息,是一個“字典”(存放各個用戶的權限,每個數據庫的內容)
- SQL注入時會經常對這個數據庫操作 —>通過SQL語句可以獲知後臺系統有那些表,庫,內容
【例如】如果網站有SQL注入的漏洞—>通過sql查詢一個管理員用戶 —>上傳php木馬---->反彈shell
- 一般後端會過濾不顯示SQL查詢結果
內容:
二. mysql.user表內容
該表存放了數據庫的用戶信息,如user host password等信息
【【【【mysql.usr 存放登錄mysql用戶的信息-->sql注入的目標】】】
1.user字段爲空的,刪了就好
2.host有
允許本機登錄:localhost
允許域登錄:localdomain
IP:127.0.0.1 | 允許的IP
該表還儲存了用戶的權限說明
三,數據庫安全問題
1. 修改mysql密碼
默認空密碼【即只允許本機登錄】 -->需要網絡連接 --> 修改管理員密碼
☞way1 在shell裏
mysqladmin -u root -p password “密碼”
設置完儲存在 mysql.user表中爲加密後的數據
☞way2 修改mysql.user表中的數據
update mysql.user set password=password(‘新密碼’) where user=‘指定用戶’ and host=‘指定主機類型’;
password=password(‘密碼’)
第一個password是修改密碼列
?第二個password是對修改的密碼進行加密處理的函數,若不帶,則以明文的形式儲存在user表中!!
修改完更新數據庫的權限表 FLUSH PRIVILEGES;
2. mysql管理員root賬號密碼遺忘
☞way1 殺死進程,繞過grant權限表,實現無口令登錄後修改密碼
- ①殺掉進程
在shenll中 killall -TERM mysqld
- ②增加一個後臺,繞過grant權限表
mysqld_safe --skip-grant-tables &
這條命令要在本機或者遠程登錄(ssh)才能執行
③可以無口令登錄
④修改user表密碼數據, 刷新數據 , 退出數據庫並重啓mysqld服務
☞way2 修改配置文件,添加skip-grant-tables ,實現無口令登錄後修改密碼
- ①修改配置文件
- ②重啓mysqld服務
- ②實現無口令登錄,修改user表password數據,刷新數據,退出數據庫
- ④刪掉跳過grant權限表那一行,重啓mysqld服務
3. 添加數據庫用戶
☞way1在mysql.user中添加數據
??這樣賦予權限,權限很大,對所有庫,表都可操作【沒有指定庫,表】
☞way2 用CREATE USER語句添加
CREATE USER ‘用戶名’@‘host內容’ IDENTIFIED BY ‘設置登錄密碼’;
3.用戶授權(增刪查改)、
①新用戶授權(不存在的用戶):
mysql> GRANT 權限列表 ON 庫或表 TO ‘用戶名’@‘登錄IP或域名’ IDENTIFIED BY ‘設置登錄密碼’;
權限列表:
all——所有權限
select,insert,update,drop,delete,create等
庫或表:
*.*——所有庫,所有表
登錄IP或域名:
%——表示沒有限制,在任何主機都可以登錄
192.168.120.%——表示在192.168.120.0網段可以登錄
②老用戶授權:
mysql> GRANT 權限列表 ON 庫或表 TO ‘用戶名’@‘登錄IP或域名’;
③查看用戶權限
SHOW GRANTS FOR ‘用戶名’@‘登錄IP或域名’;
④撤銷權限
REVOKE 權限列表 ON 庫.表 FROM ‘用戶’@‘登錄IP或域名’;
???這裏的用戶必須存在
4.網絡連接權限
作爲web部署框架的後端數據庫,在網絡連接方面尤爲重要。
遠程連接mysql命令
mysql -h 指定要連接的IP -P 指定的端口 -u 有遠端登錄的用戶名 -p登錄口令
默認端口爲3306