redis设置用户名密码
今天学习redis的相关配置知识,起因来自于华为云服务器未设置用户名密码导致遭受到攻击,所以我要设置一个用户名密码,但是设置命令后出现这样的报错:
Job for redis.service failed because the control process exited with error code.
See "systemctl status redis.service" and "journalctl -xe" for details. 怎么解决
日志:
Job for redis.service failed because the control process exited with error code. See "systemctl status redis.service" and "journalctl -xe" for details. [root@hcss-ecs-6e82 ~]# journalctl -xe Aug 28 11:58:08 hcss-ecs-6e82 redis-shutdown[2307]: ERR Errors trying to SHUTDOWN. Check logs. Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: redis.service: State 'stop-sigterm' timed out. Killing. Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: redis.service: Killing process 831 (redis-server) with signal SIGKILL. Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: redis.service: Main process exited, code=killed, status=9/KILL Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: redis.service: Failed with result 'timeout'. -- Subject: Unit failed -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- The unit redis.service has entered the 'failed' state with result 'timeout'. Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: Stopped Redis persistent key-value database. -- Subject: Unit redis.service has finished shutting down -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- Unit redis.service has finished shutting down. Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: Starting Redis persistent key-value database... -- Subject: Unit redis.service has begun start-up -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- Unit redis.service has begun starting up. Aug 28 11:59:38 hcss-ecs-6e82 redis-server[2338]: *** FATAL CONFIG FILE ERROR *** Aug 28 11:59:38 hcss-ecs-6e82 redis-server[2338]: Reading the configuration file, at line 509 Aug 28 11:59:38 hcss-ecs-6e82 redis-server[2338]: >>> 'user admin on >qcjz@9253 ~* +@all' Aug 28 11:59:38 hcss-ecs-6e82 redis-server[2338]: Bad directive or wrong number of arguments Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: redis.service: Main process exited, code=exited, status=1/FAILURE Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: redis.service: Failed with result 'exit-code'. -- Subject: Unit failed -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- The unit redis.service has entered the 'failed' state with result 'exit-code'. Aug 28 11:59:38 hcss-ecs-6e82 systemd[1]: Failed to start Redis persistent key-value database. -- Subject: Unit redis.service has failed -- Defined-By: systemd -- Support: https://access.redhat.com/support -- -- Unit redis.service has failed. -- -- The result is failed.
根据日志查询到:
FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 509
>>> 'user admin on >qcjz@9253 ~* +@all'
Bad directive or wrong number of arguments
发现是redis6.0以后才支持用户名密码。我的是5.0.3,只能支持设置一个密码,并且ACL这样的命令也是不可用的,所以只需要在redis.donf文件中,找到 # requirepass foobared 这一行,取消注释并设置密码。foobared 就是改成自己定义的密码,最后重启redis,问题解决
此时C#的字符串修改如下:
IP:6379,password=yourpassword,ssl=false,abortConnect=false
参数解释:
1.ssl=false:
这个选项指定了是否使用SSL(安全套接字层)加密来与Redis服务器通信。
当设置为false时,表示连接不是通过SSL加密的,即数据在客户端和服务器之间传输时不会加密,这可能会使数据面临被截获的风险。
如果你的Redis服务器配置了SSL,或者你希望增强数据传输的安全性,应该将ssl设置为true,并确保客户端和服务器之间的SSL配置正确无误。
2.abortConnect=false:
这个选项控制当StackExchange.Redis尝试连接到Redis服务器但失败时的行为。
当设置为true(默认值,但请注意,在某些上下文中,如Azure上,默认值可能是false)时,如果StackExchange.Redis无法连接到任何Redis服务器,它将不会创建连接,并可能抛出异常12。
当设置为false时,StackExchange.Redis会在初始连接失败时继续尝试连接,而不是立即中止。这对于处理临时的网络问题或Redis服务器重启等场景很有用。然而,请注意,如果Redis服务器长时间不可用,这可能会导致客户端持续尝试连接,从而消耗系统资源。
在使用这些选项时,请根据你的具体需求和环境配置来设置它们。如果你不确定是否应该使用SSL加密,建议咨询你的网络管理员或安全专家。对于abortConnect选项,如果你希望你的应用程序能够更健壮地处理网络问题,可以考虑将其设置为false。但是,请注意监控你的应用程序,以确保它不会因持续尝试连接到不可用的Redis服务器而耗尽资源。
3.其他一些指令:
redis-cli中,auth 你的密码是授权
redis-cli中,auth 你的密码是授权
client list是查看有哪些客户端链接了redis
client kill 可以根据client list查出的ip端口号进行杀死指定客户端连接的操作
积累小的知识,才能成就大的智慧,希望网上少一些复制多一些原创有用的答案