設計的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
- "requirepass"
- "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