systemd redis.service将不允许unix套接字连接?

我在Ubuntu 16.04上安装了redis-server,我试图通过unix socket连接到它。 我已经注释掉了redis.conf中的bindport指令,并取消了unixsocket指令的注释,所以我有:

 # Accept connections on the specified port, default is 6379. # If port 0 is specified Redis will not listen on a TCP socket. # port 6379 # TCP listen() backlog. # # In high requests-per-second environments you need an high backlog in order # to avoid slow clients connections issues. Note that the Linux kernel # will silently truncate it to the value of /proc/sys/net/core/somaxconn so # make sure to raise both the value of somaxconn and tcp_max_syn_backlog # in order to get the desired effect. tcp-backlog 511 # By default Redis listens for connections from all the network interfaces # available on the server. It is possible to listen to just one or multiple # interfaces using the "bind" configuration directive, followed by one or # more IP addresses. # # Examples: # # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 # Specify the path for the Unix socket that will be used to listen for # incoming connections. There is no default, so Redis will not listen # on a unix socket when not specified. # unixsocket /var/run/redis/redis.sock unixsocketperm 770 

我已经将我的本地用户添加到redis组,然后使用sudo systemctl restart redis.serivce重新启动redis服务,以便/var/run/redis/文件夹如下所示:

 drwxrwsr-x 2 redis redis 80 Apr 27 17:39 . drwxr-xr-x 34 root root 1160 Apr 27 16:40 .. -rw-r--r-- 1 redis redis 6 Apr 27 17:38 redis-server.pid srwxrwx--- 1 redis redis 0 Apr 27 17:38 redis.sock 

我希望能够连接到现在使用的套接字

 $ redis-cli -s /var/run/redis/redis.sock 

但是我得到:

 Could not connect to Redis at /var/run/redis/redis.sock: Permission denied not connected> 

奇怪地运行$ redis-cli给了我默认的127.0.0.1:6379>这应该是解除绑定的?

如果我看一下redis进程:

 redis 18108 0.0 0.0 40136 6652 ? Ssl 17:45 0:00 /usr/bin/redis-server *:6379 

这看起来像它甚至没有使用正确的conf文件和绑定到*:6379。 /etc/systemd/system/redis.service文件有

 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf 

所以我很困惑,为什么这不是正在运行的进程,或者为什么权限不允许我连接。

将您的本地用户添加到redis组后,您是否已经注销并重新login? 您需要这样做才能应用更改 。