redis沒(méi)有實(shí)現(xiàn)訪(fǎng)問(wèn)控制這個(gè)功能,但是它提供了一個(gè)輕量級(jí)的認(rèn)證方式,可以編輯redis.conf配置來(lái)啟用認(rèn)證。
1、初始化Redis密碼:
在配置文件中有個(gè)參數(shù): requirepass 這個(gè)就是配置redis訪(fǎng)問(wèn)密碼的參數(shù);
比如 requirepass test123;
(Ps:需重啟Redis才能生效)
redis的查詢(xún)速度是非常快的,外部用戶(hù)一秒內(nèi)可以嘗試多大150K個(gè)密碼;所以密碼要盡量長(zhǎng)(對(duì)于DBA 沒(méi)有必要必須記住密碼);
2、不重啟Redis設(shè)置密碼:
在配置文件中配置requirepass的密碼(當(dāng)redis重啟時(shí)密碼依然有效)。
redis 127.0.0.1:6379> config set requirepass test123
查詢(xún)密碼:
redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted
密碼驗(yàn)證:
redis 127.0.0.1:6379> auth test123
OK
再次查詢(xún):
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
PS:如果配置文件中沒(méi)添加密碼 那么redis重啟后,密碼失效;
3、登陸有密碼的Redis:
在登錄的時(shí)候的時(shí)候輸入密碼:
redis-cli -p 6379 -a test123
先登陸后驗(yàn)證:
redis-cli -p 6379
redis 127.0.0.1:6379> auth test123
OK
AUTH命令跟其他redis命令一樣,是沒(méi)有加密的;阻止不了攻擊者在網(wǎng)絡(luò)上竊取你的密碼;
認(rèn)證層的目標(biāo)是提供多一層的保護(hù)。如果防火墻或者用來(lái)保護(hù)redis的系統(tǒng)防御外部攻擊失敗的話(huà),外部用戶(hù)如果沒(méi)有通過(guò)密碼認(rèn)證還是無(wú)法訪(fǎng)問(wèn)redis的。
修改redis.conf
關(guān)注標(biāo)記的那一行,#requirepass foobared。設(shè)置密碼的方法就是去掉注釋的#,把foobared替換成自己的密碼即可,例如將密碼設(shè)置為123456
修改完成后重啟redis,再次通過(guò)redis客戶(hù)端redis-cli登錄并操作可以發(fā)現(xiàn)會(huì)報(bào)一個(gè)身份認(rèn)證錯(cuò)誤:
這就說(shuō)明我們已經(jīng)成功的設(shè)置了密碼,所以通過(guò)客戶(hù)端連接的話(huà)必須加上密碼參數(shù)才能正常連接:
如上圖所示,加了-a參數(shù)之后即可正常連接并操作redis。