Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis 由于权限问题,systemctl无法重新启动_Redis_Systemctl - Fatal编程技术网

Redis 由于权限问题,systemctl无法重新启动

Redis 由于权限问题,systemctl无法重新启动,redis,systemctl,Redis,Systemctl,我安装了redis并将redis服务器放在/usr/local/bin: -rwxr-xr-x 1 redis redis 11044232 Sep 24 00:30 redis-server -rwxr-xr-x 1 redis redis 120 Oct 6 21:30 redis.conf 我在同一文件夹/usr/local/bin中有redis.conf: -rwxr-xr-x 1 redis

我安装了redis并将redis服务器放在/usr/local/bin:

-rwxr-xr-x 1 redis         redis         11044232 Sep 24 00:30 redis-server
-rwxr-xr-x 1 redis         redis              120 Oct  6 21:30 redis.conf
我在同一文件夹/usr/local/bin中有redis.conf:

-rwxr-xr-x 1 redis         redis         11044232 Sep 24 00:30 redis-server
-rwxr-xr-x 1 redis         redis              120 Oct  6 21:30 redis.conf
我在/etc/systemd/system创建了redis.service:

-rw-r--r-- 1 root root  192 Oct  6 21:46  redis.service
cat redis.conf:

Description=Redis
After=network.target
[Service]
User=redis
Group=redis
Type=Simple
ExecStart=/usr/local/bin/redis-server /usr/local/bin/redis.conf
[Install]
WantedBy=multi-user.target
但是当我跑的时候

sudo systemctl restart redis
sudo systemctl status redis
显示:无法打开仅附加的文件:权限被拒绝

如果我在redis.service中将服务单元中的用户和组更改为“root”,并再次重新启动,则redis服务器将成功启动

我确实添加了用户redis:

sudo useradd --no-create-home --shell /bin/false redis
原因是什么?我想使用专用用户redis启动服务器。

原因

用户
redis
没有访问
/usr/local/bin/appendonly.aof
的用户权限,因为它位于
/usr/local/bin

默认情况下,Redis工作目录相对于
Redis.conf
,由以下行设置:

dir ./
解决方案

  • redis.conf
    中的
    dir./
    更改为可由
    redis
    用户写入的目录
  • 或者将
    redis.conf
    放在可由
    redis
    用户写入的目录中(无论如何,只有可执行文件应该位于
    /usr/local/bin
    中)

  • 谢谢你回答我。事实上,redis.conf最初位于另一个目录/home/myname/cluster\u test/中,其用户/组都是redis。它不起作用,这就是为什么我将它移动到/usr/local/bin,但它仍然不起作用。dir./是什么意思?@user389955
    dir./
    指的是可以配置工作目录的redis.conf行,例如,
    dir/var/redis/
    会将redis配置为将
    appendonly.aof
    redis.rdb
    放在
    /var/redis/
    目录中-您必须确保
    redis
    用户可以通过执行
    chmod 700 redis
    来列出、读取和写入该目录(为用户redis提供所有权限,其他任何权限)。