Linux.Redis.Server(redis-server)和Client(redis-cli)關系


設計的redis命令

redis-server
redis-cli

要從設置密碼說起...

本來啟動redis的server命令

#啟動redis-server,並且指定配置文件
[zf@VM_0_13_centos redis]$ ./bin/redis-server ./redis.conf

這個時候,密碼的配置項(requirepass)是配置在redis.conf中的,
所以這個密碼我當時覺得是redis-cli客戶端連接redis-server的時候需要提供的.
但是redis-cli啟動的時候

#啟動客戶端可以添加的一些配置信息↓
[zf@VM_0_13_centos redis]$ ./bin/redis-cli -h 127.0.0.1 -p 6379

並不需要密碼...
但是有時候會提示需要密碼...

#啟動客戶端可以添加的一些配置信息↓
[zf@VM_0_13_centos redis]$ ./bin/redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> INFO
NOAUTH Authentication required.
127.0.0.1:6379> AUTH 你的密碼

到這一步我的腦中還是這樣的邏輯↓

redis-server中設置密碼,
redis-cli中提交密碼

但是下面的一個操作,讓我有點暈了...

redis-cli還可以修改密碼?

2、不重啟Redis設置密碼:
在配置文件中配置requirepass的密碼(當redis重啟時密碼依然有效)。
redis 127.0.0.1:6379> config set requirepass test123

查詢密碼:
redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted

密碼驗證:
redis 127.0.0.1:6379> auth test123
OK

再次查詢:
redis 127.0.0.1:6379> config get requirepass

  1. "requirepass"
  2. "test123"

PS:如果配置文件中沒添加密碼 那么redis重啟后,密碼失效;

當時這一波操作給我的感覺就是,
在客戶端中設置密碼,那服務端配置的密碼還有啥用呢...
並且仔細回想一下,我使用redis-cli的時候從來沒有提供密碼,
但是啟動redis-server使用的那個配置文件確實配置了密碼的.
你看看,這些細節都是沒有注意到的,細思極恐啊...

然后我搜索了一下,執行redis-cli密碼配置,

[zf@VM_0_12_centos redis]# redis-cli -h 127.0.0.1 -a 1234!!!
redis-cli -h 127.0.0.1 -a 1234redis-cli -a 1234redis-cli -a 1234redis-cli -a 1234redis-cli !!!!
(error) ERR unknown command `!!!!`, with args beginning with:
You have mail in /var/spool/mail/root

還報錯了...密碼還不能添加特殊符號了???

結語

仔細想了下,密碼還是配置在服務器(redis-server)上,但是客戶端(redis-cli)可以修改密碼.
就像數據庫連接工具SSMS(SQL Server Management Studio)一樣,
只要在SSMS中登錄的賬戶權限足夠大,
還是可以修改一些Sql Server服務器配置的,

那個密碼中含有"!"不能執行"redis-cli -a 1234!!!"的問題,
后來只能這么處理了

[root@VM_0_12_centos redis]# redis-cli -h 127.0.0.1
127.0.0.1:6379> info
NOAUTH Authentication required.
127.0.0.1:6379> auth "1234!!!"
OK

摘抄文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM