先说来龙去脉哈:

安装完redis,没有设置开机启动,可以正常登录:

info:
Redis Login: redis-cli --no-auth-warning -h 127.0.0.1 -p 6379 -a 'password'
install Redis successfully

之后修改了两次密码,正确操作是在redis.conf里修改requirepass,但事后反思时发现此时开始诡异了

$ vi /etc/redis.conf
#文件打开为空
$ sudo vi /etc/redis.conf
#再次root权限打开,发现文件仍然为空,当时大意认为读取的配置文件路径有问题
#着急要修改redis密码,于是先登录redis,用config set requirepass修改了密码。

#登录redis
#登录redis
$ redis-cli --no-auth-warning -h 127.0.0.1 -p 6379 -a 'password'

#查看redis密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "password"
		
#修改redis密码
127.0.0.1:6379> config set requirepass NewPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "NewPassword"

接着一顿正常操作,设置服务开机启动,重启服务,接着杯具发生,Redis服务报错:

$ sudo systemctl start redis.service
[sudo] password for cl:
Job for redis.service failed because the control process exited with error code.
See "systemctl status redis.service" and "journalctl -xe" for details.
$ sudo systemctl status redis.service
	● redis.service - Redis persistent key-value database
	   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor p>
	  Drop-In: /etc/systemd/system/redis.service.d
			   └─limit.conf
	   Active: failed (Result: exit-code) since Sun 2022-02-06 11:27:45 CST; 2mi>
	  Process: 4782 ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised>
	 Main PID: 4782 (code=exited, status=1/FAILURE)

	Feb 06 11:27:45 vm12345.novalocal systemd[1]: Starting Redis persistent key->
	Feb 06 11:27:45 vm12345.novalocal systemd[1]: redis.service: Main process ex>
	Feb 06 11:27:45 vm12345.novalocal systemd[1]: redis.service: Failed with res>
	Feb 06 11:27:45 vm12345.novalocal systemd[1]: Failed to start Redis persiste>

事后分析,服务报错跟修改密码无关,但仍无法解释原因故记录为诡异事件。

接下来是解决问题的正确7姿势:

1. 找日志

#万变不离其宗,解决异常一定要先找日志
#查看日志
$ sudo vi /var/log/messages
Feb  6 11:27:45 systemd[1]: Starting Redis persistent key-value database 
Feb  6 11:27:45 redis-server[4782]:  FATAL CONFIG FILE ERROR 
Feb  6 11:27:45 redis-server[4782]: Reading the configuration file, at line 171
Feb  6 11:27:45 redis-server[4782]: >>> 'logfile /var/log/redis/redis.log'
Feb  6 11:27:45 redis-server[4782]: Can't open the log file: Permission denied
Feb  6 11:27:45 systemd[1]: redis.service: Main process exited, code=exited, status=1/FAILURE
Feb  6 11:27:45 systemd[1]: redis.service: Failed with result 'exit-code'.
Feb  6 11:27:45 systemd[1]: Failed to start Redis persistent key-value database.

2. 改配置

##根据日志找到/etc/redis.conf,此时打开文件就正常显示内容
$ sudo vi /etc/redis.conf
##找到配置文件的第171行,注释
#logfile /var/log/redis/redis.log

##重启redis服务正常

注释有问题的配置行,redis服务正常,故推测该文件权限不足,无法写入报错

再次验证:

##观察推测该文件权限不足,无法写入报错
$ sudo ls /var/log/redis/redis.log -al
-rw-r--r-- 1 root root 2897 Feb  6 11:22 /var/log/redis/redis.log

##修改写入权限
$ sudo chmod 666 /var/log/redis/redis.log

##检查文件写入权限
$ sudo ls /var/log/redis/redis.log -al
-rw-rw-rw- 1 root root 2897 Feb  6 11:22 /var/log/redis/redis.log

##再次开启刚注释的171行
$ sudo vi /etc/redis.conf
##重启服务正常

3. 登录redis正常

#登录redis正常
$ redis-cli --no-auth-warning -h 127.0.0.1 -p 6379 -a 'NewPassword'
127.0.0.1:6379>

回顾:

事情发生前后,没有做权限设置的误操作,为何第一次能正常写入日志,重启服务后又失败。

觉得诡异,暂记录于此。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐