Cách khắc phục lỗi Redis "WRONGPASS invalid username-password pair or user is disabled"

beginner🔴 Redis2026-06-13| Redis 6.0+, Linux (Ubuntu/CentOS), Docker, các dịch vụ Managed Redis.

Error Message

WRONGPASS invalid username-password pair or user is disabled.
#redis#auth#acl#redis6#xác thực#wrongpass

Vấp phải rào cản xác thực

Kết nối ứng dụng của bạn tới máy chủ Redis thường sẽ trả về phản hồi PONG đơn giản. Thay vào đó, bạn có thể gặp phải một trở ngại khó chịu: lỗi WRONGPASS. Nó trông như thế này:

WRONGPASS invalid username-password pair or user is disabled.

Thông báo lỗi cụ thể này xuất hiện từ phiên bản Redis 6.0. Nếu bạn đã quen với các phiên bản cũ hơn, nơi mà một chỉ thị requirepass duy nhất xử lý mọi thứ, thì hành vi đa người dùng này có thể gây nhầm lẫn. Điều đó có nghĩa là thông tin đăng nhập được cung cấp không khớp với bất kỳ mục nào trong Danh sách Kiểm soát Truy cập (ACL), hoặc tài khoản cụ thể mà bạn đang nhắm tới hiện đang bị vô hiệu hóa.

Tại sao điều này xảy ra trong Redis 6+

Trước phiên bản 6.0, việc xác thực Redis là một kiểm tra nhị phân đơn giản: hoặc là bạn có mật khẩu toàn cầu, hoặc là không. Redis 6 đã giới thiệu ACLs (Access Control Lists), mang lại các quyền hạn chi tiết và hỗ trợ nhiều người dùng cho cơ sở dữ liệu. Ngay cả khi bạn nghĩ rằng mình không sử dụng ACL, Redis 6+ vẫn quản lý hệ thống requirepass cũ bằng cách ánh xạ nó vào một người dùng default.

Khi WRONGPASS kích hoạt, một trong ba kịch bản sau thường là nguyên nhân:

  • Thiếu Tên người dùng: Client của bạn chỉ gửi mật khẩu, nhưng máy chủ yêu cầu tên người dùng (thường là default) để xác thực yêu cầu.
  • Sai lệch thông tin đăng nhập: Bạn đã gõ sai tên người dùng hoặc mật khẩu cho một tài khoản ACL cụ thể.
  • Tài khoản bị vô hiệu hóa: Người dùng tồn tại trong bảng ACL nhưng được thiết lập rõ ràng thành off.

Bước 1: Debug bằng redis-cli

Bỏ qua mã nguồn ứng dụng của bạn và đi thẳng vào gốc rễ. Sử dụng giao diện dòng lệnh (CLI) trực tiếp trên máy chủ giúp xác định xem vấn đề nằm ở cấu hình của bạn hay chuỗi kết nối của ứng dụng.

Thử xác thực thủ công với tư cách là người dùng default trên cổng 6379:

redis-cli
> AUTH default your_password_here

Đăng nhập thành công sẽ trả về OK. Nếu bạn vẫn thấy WRONGPASS, vấn đề chắc chắn nằm ở cấu hình phía máy chủ.

Bước 2: Kiểm tra danh sách ACL

Nếu bạn có thể đăng nhập qua kết nối cục bộ (thường bỏ qua AUTH tùy thuộc vào cài đặt protected-mode của bạn), hãy kiểm tra trạng thái của người dùng. Chạy lệnh sau:

redis-cli
> ACL LIST

Quan sát kỹ mục nhập của người dùng default. Nó thường trông như thế này:

user default on nopass ~* &* + @all

Nếu bạn thấy off, người dùng đã bị vô hiệu hóa. Nếu bạn thấy một chuỗi như >9f86d..., mật khẩu là bắt buộc. Nếu cấu hình không khớp với những gì bạn mong đợi, hãy kiểm tra tệp redis.conf hoặc tệp users.acl bên ngoài.

Bước 3: Sửa cấu hình người dùng 'Default'

Trong môi trường Redis hiện đại, requirepass đóng vai trò như một phím tắt cho mật khẩu của người dùng default. Nhiều nhà phát triển gặp lỗi khi việc nâng cấp gây ra xung đột giữa các cài đặt này. Hãy tìm tệp redis.conf của bạn (thường nằm trong /etc/redis/) và kiểm tra dòng này:

requirepass your_strong_password

Để sửa lỗi người dùng mặc định bị khóa ngay lập tức thông qua CLI (giả sử bạn có quyền quản trị), hãy sử dụng lệnh này:

ACL SETUSER default on >your_strong_password + @website/content/errors/ja/vscode/fix-vs-code-error-xhr-failed-when-installing-or-searching-extensions.md ~*

Bước 4: Sử dụng người dùng chuyên dụng (Khuyến nghị)

Dựa vào người dùng default cho mọi dịch vụ là một rủi ro bảo mật. Cách làm tốt nhất là tạo các tài khoản cụ thể cho các ứng dụng khác nhau để hạn chế thiệt hại tiềm tàng từ việc rò rỉ thông tin đăng nhập.

Tạo một app_user chuyên dụng với quyền truy cập vào tất cả các key và lệnh như sau:

ACL SETUSER app_user on >another_secure_password + @website/content/errors/ja/vscode/fix-vs-code-error-xhr-failed-when-installing-or-searching-extensions.md ~*

Cập nhật ứng dụng của bạn để sử dụng cả tên người dùng và mật khẩu. Trong khi các thư viện Redis cũ hơn chỉ chấp nhận một chuỗi mật khẩu, các driver hiện đại yêu cầu cả hai để tương thích với ACL.

Ví dụ: Định dạng chuỗi kết nối

Các chuỗi kết nối hiện đại cho các thư viện như redis-py hoặc ioredis nên tuân theo định dạng URI sau:

redis://app_user:another_secure_password @localhost:6379

Mẹo Bảo mật và Duy trì Cấu hình

Mật khẩu yếu thường được các quản trị viên "sửa" nhưng lại quên cập nhật ứng dụng, dẫn đến lỗi WRONGPASS. Cấu hình an toàn bắt đầu với các chuỗi có độ hỗn loạn (entropy) cao. Để tạo các chuỗi này, các công cụ như Trình tạo mật khẩu trên ToolCraft rất tuyệt vời vì chúng chạy cục bộ trong trình duyệt của bạn, đảm bảo bí mật của bạn không bị ghi lại trên máy chủ từ xa.

Cuối cùng, hãy đảm bảo các thay đổi của bạn vẫn tồn tại sau khi khởi động lại. Nếu bạn sửa đổi người dùng qua redis-cli, chúng sẽ biến mất khi dịch vụ khởi động lại trừ khi bạn lưu chúng lại. Nếu bạn sử dụng tệp ACL bên ngoài, hãy chạy:

ACL SAVE

Lưu ý: Lệnh này chỉ hoạt động nếu đường dẫn aclfile được định nghĩa trong redis.conf. Nếu bạn sử dụng cấu hình nội dòng (inline), bạn phải cập nhật tệp redis.conf một cách thủ công để các thay đổi có hiệu lực vĩnh viễn.

Xác minh cuối cùng

Xác nhận việc sửa lỗi bằng cách đăng nhập với thông tin mới và kiểm tra một lệnh cơ bản:

redis-cli
> AUTH app_user another_secure_password
OK
> PING
PONG

Thấy PONG có nghĩa là bạn đã điều hướng thành công hệ thống ACL và giải quyết được lỗi WRONGPASS.

Related Error Notes