问下为什么我laravel连接redis连不上?

当我执行:php7.3 artisan key:generate
结果提示:

 Predis\Connection\ConnectionException  : `AUTH` failed: WRONGPASS invalid username-password pair [tcp://127.0.0.1:6379]

php7.3 -m

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

问下是我少装了redis插件还是哪里写错了?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

应该是缓存问题,需要删除 bootstrap 里面 app/config.php 删除配置文件

1年前 评论
讨论数量: 15

这和这个命令没关系吧 是框架加载的时候 检查了redis连接吧, 你要看一下redis的配置

1年前 评论
donggan (楼主) 1年前
Smilephp (作者) 1年前

这不是提示无效的用户名密码吗,检查密码吧

1年前 评论
donggan (楼主) 1年前

env里面的话检查下是否有特殊字符,用双引号包括起来,或转义下

1年前 评论

这个错误信息是 Redis 客户端库 Predis 抛出的异常,表示连接 Redis 数据库时使用的认证密码错误。错误信息 "AUTH failed: WRONGPASS invalid username-password pair" 意味着认证失败,因为提供的用户名和密码对不匹配。

这个错误可能有以下几种可能原因:

提供的 Redis 数据库密码不正确:请检查在连接 Redis 数据库时传递的密码是否与实际 Redis 数据库配置中设置的密码匹配。确认密码是否正确,并使用正确的密码进行连接。

Redis 数据库没有设置密码:如果 Redis 数据库没有设置密码,但在连接时尝试进行认证,会导致认证失败。请确保连接 Redis 数据库时不传递密码或传递空字符串。

Redis 数据库使用了用户名和密码认证:如果 Redis 数据库启用了用户名和密码认证,需要在连接时传递正确的用户名和密码。请确认连接时传递的用户名和密码是否与实际 Redis 数据库配置中设置的用户名和密码匹配。

解决这个错误的方法是确认连接 Redis 数据库时使用的密码和认证方式是否正确,并进行相应的修正。如果仍然无法解决问题,可以检查 Redis 数据库的配置文件和连接代码,确保密码和认证方式设置正确。如果问题仍然存在,请检查 Redis 数据库的状态和网络连接情况,确保 Redis 服务器正常运行并且可以通过网络连接访问。

1年前 评论
Imuyu 1年前
lddtime 1年前

应该是缓存问题,需要删除 bootstrap 里面 app/config.php 删除配置文件

1年前 评论

redis有设置密码吗?密码特殊吗?密码有空格吗?有空格这些php设置用双引号包裹

1年前 评论

应该是因为redis版本 6+版本需要设置用户名了

1年前 评论

运行配置缓存清理命令:php artisan config:clear
再次缓存配置:php artisan config:cache
不清理配置缓存,直接运行缓存配置命令也是可以的,会刷新。

1年前 评论
laravel_peng

我也碰到了,类似于你的报错:

file

报错相关文件路径如下,报错行数为 96 行:

# 路径
vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php

相关代码如下:

# 相关代码如下:
if (! empty($config['password'])) {
    if (isset($config['username']) && $config['username'] !== '' && is_string($config['password'])) {
        $client->auth([$config['username'], $config['password']]);
    } else {
        $client->auth($config['password']);
    }
}

百度了一下:参考链接

file

看一下 config/database.php 关于 redis 的相关配置:

file

我使用的 Redis 7 的版本。Laravel 框架的具体解决办法 .env 配置:

# 增加一个这个配置,但是等号后,不填写任何内容,会被识别为空字符串
# 但是如果不填写这个配置,会被识别成 null
REDIS_USERNAME=

居然好了,其实也很奇怪,识别成 null 和 “” 一样不会去验证 Redis 的 username , 但是就不知道为啥这个空字符串的可以。

限于我不能登录服务器查看,这个暂时排查到这里,估计有其它的原因。

1年前 评论
donggan (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!