Hướng dẫn reset password n8n

Để reset mật khẩu admin cho n8n khi bạn tự host trên VPS và đã quên mật khẩu, bạn có thể làm theo các bước sau. Quy trình này phụ thuộc vào cơ sở dữ liệu mà n8n đang sử dụng (mặc định là SQLite, nhưng cũng có thể là PostgreSQL hoặc MySQL). Dưới đây là hướng dẫn chi tiết:
1. Xác định cơ sở dữ liệu n8n đang sử dụng
- Mặc định, n8n sử dụng SQLite, với dữ liệu được lưu trong tệp .n8n tại thư mục home của người dùng (thường là ~/.n8n).
- Nếu bạn đã cấu hình n8n để sử dụng PostgreSQL hoặc MySQL, bạn cần biết thông tin kết nối (tên cơ sở dữ liệu, người dùng, mật khẩu).
2. Reset mật khẩu với SQLite
Nếu n8n sử dụng SQLite, bạn có thể reset mật khẩu bằng cách cập nhật trực tiếp cơ sở dữ liệu:
Bước 1: Tìm tệp cơ sở dữ liệu SQLite
- Đăng nhập vào VPS qua SSH.
- Tệp cơ sở dữ liệu thường nằm tại ~/.n8n/database.sqlite. Để kiểm tra:
ls -la ~/.n8n
Nếu bạn cài n8n qua Docker, tệp này có thể nằm trong volume được ánh xạ. Kiểm tra cấu hình Docker Compose hoặc lệnh chạy container để tìm volume.
Bước 2: Cài đặt công cụ để chỉnh sửa SQLite
- Nếu chưa có SQLite, cài đặt nó:
sudo apt update
sudo apt install sqlite3
Bước 3: Truy cập cơ sở dữ liệu
- Mở cơ sở dữ liệu SQLite:
sqlite3 ~/.n8n/database.sqlite
Bước 4: Tìm tài khoản admin
- Kiểm tra bảng người dùng (thường là user) để tìm tài khoản admin:
SELECT * FROM user;
- Xác định dòng tương ứng với tài khoản admin (thường có email hoặc role là admin).
Bước 5: Reset mật khẩu
- Mật khẩu trong n8n được lưu dưới dạng mã hóa bcrypt. Bạn cần tạo một mật khẩu mới đã mã hóa bcrypt để thay thế. Ví dụ, để tạo mật khẩu mới (giả sử là newpassword):
- Sử dụng công cụ như htpasswd hoặc một trang web tạo bcrypt hash (như https://www.browserling.com/tools/bcrypt).
- Hoặc, dùng Node.js để tạo hash:
node -e "const bcrypt = require('bcrypt'); bcrypt.hash('newpassword', 10, (err, hash) => console.log(hash));"
- (Cần cài Node.js và bcrypt: npm install bcrypt).
Sau khi có hash, cập nhật mật khẩu trong cơ sở dữ liệu:
UPDATE user SET password = 'your_bcrypt_hash' WHERE email = 'admin_email';
- Thay your_bcrypt_hash bằng hash vừa tạo và admin_email bằng email của tài khoản admin.
Bước 6: Khởi động lại n8n
- Thoát khỏi SQLite (Ctrl + D) và khởi động lại n8n:
pm2 restart n8n
Hoặc nếu dùng Docker:
docker-compose restart
- Đăng nhập vào giao diện n8n với email admin và mật khẩu mới.
3. Reset mật khẩu với PostgreSQL/MySQL
Nếu n8n sử dụng PostgreSQL hoặc MySQL, quy trình tương tự nhưng bạn cần truy cập cơ sở dữ liệu tương ứng:
Bước 1: Kết nối với cơ sở dữ liệu
- Với PostgreSQL:
psql -U n8n_user -d n8n_database
Với MySQL:
mysql -u n8n_user -p n8n_database
- (Thay n8n_user và n8n_database bằng thông tin cấu hình của bạn).
Bước 2: Tìm và cập nhật mật khẩu
- Thực hiện các lệnh SQL tương tự như với SQLite:
SELECT * FROM user;
UPDATE user SET password = 'your_bcrypt_hash' WHERE email = 'admin_email';
Bước 3: Khởi động lại n8n
- Khởi động lại n8n như ở trên để áp dụng thay đổi.
4. Nếu sử dụng Docker
Nếu bạn chạy n8n qua Docker, bạn cần truy cập container và volume chứa dữ liệu:
- Kiểm tra volume trong docker-compose.yml hoặc lệnh docker run.
- Truy cập container:
docker exec -it n8n_container_name bash
- (Thay n8n_container_name bằng tên container, dùng docker ps để xem).
- Tìm tệp database.sqlite trong container (thường tại /home/node/.n8n) và thực hiện các bước như với SQLite.
5. Lưu ý quan trọng
- Sao lưu dữ liệu: Trước khi chỉnh sửa cơ sở dữ liệu, sao lưu tệp database.sqlite hoặc cơ sở dữ liệu PostgreSQL/MySQL để tránh mất dữ liệu.
- Bảo mật mật khẩu mới: Đặt mật khẩu mới mạnh và lưu trữ an toàn.
- Kiểm tra cấu hình: Nếu bạn không chắc n8n dùng cơ sở dữ liệu nào, kiểm tra tệp cấu hình (thường là ~/.n8n/config) hoặc biến môi trường trong docker-compose.yml.
6. Nếu gặp khó khăn
- Nếu bạn không thể truy cập cơ sở dữ liệu hoặc gặp lỗi, hãy kiểm tra log n8n:
pm2 logs n8n
Hoặc với Docker:
docker logs n8n_container_name
Chúc bạn thành công