I've installed redis-server on ubuntu 16.04 and I'm trying to connect to it via unix socket. I have commented out the bind
and port
directives in redis.conf and uncommented the unixsocket
directives so I have:
# 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
I've added my local user to the redis group, and restarted the redis service with sudo systemctl restart redis.serivce
so the /var/run/redis/
folder looks like this:
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
I would expect to be able to connect to the socket now using
$ redis-cli -s /var/run/redis/redis.sock
however I get:
Could not connect to Redis at /var/run/redis/redis.sock: Permission denied
not connected>
weirdly running $ redis-cli
gives me the default 127.0.0.1:6379>
which ought to be unbound?
If I look at the redis process:
redis 18108 0.0 0.0 40136 6652 ? Ssl 17:45 0:00 /usr/bin/redis-server *:6379
which looks to me like it's not even using the correct conf file and binding to *:6379. The /etc/systemd/system/redis.service
file has
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
So I'm confused as to why that's not the process being run, or why the permissions aren't allowing me to connect.
Best Answer
Have you logged out and back in again after adding your local user to the redis group? You need to do so to apply the changes.