Khởi động và truy cập ArangoAUI (ArangoDB Administration UI)
Bước đầu tiên là đảm bảo dịch vụ ArangoDB đã chạy trên Ubuntu 24.04 trước khi truy cập giao diện quản lý.
Truy cập giao diện web (AUI) qua trình duyệt để quản lý trực quan các tài nguyên như Database, Collection và User. Port mặc định của ArangoDB là 8529.
sudo systemctl status arangodb3
Kết quả mong đợi: Trạng thái dịch vụ hiển thị active (running) và không có lỗi.
Mở trình duyệt (Chrome/Firefox) trên máy khách hoặc trên server (nếu có X11), nhập địa chỉ sau vào thanh địa chỉ:
http://localhost:8529
Kết quả mong đợi: Giao diện ArangoDB Login xuất hiện. Nếu chưa có user, nhập username root và để trống mật khẩu (mặc định khi mới cài đặt).
Để bảo mật ngay lập tức, bạn cần đặt mật khẩu cho user root ngay sau khi đăng nhập thành công, hoặc thực hiện qua terminal như bước tiếp theo.
Tạo User, Database và Collection mới qua giao diện web
Sử dụng giao diện AUI để tạo tài nguyên mới giúp trực quan hóa cấu trúc dữ liệu mà không cần viết command line phức tạp.
Tạo User mới với vai trò cụ thể
Vào menu Configuration (biểu tượng bánh răng) -> Users. Nhấn nút Add User để tạo tài khoản mới.
Nhập thông tin sau:
- Username: developer01
- Password: Pass123!
- Role: select database-admin (cho phép quản lý DB cụ thể, không toàn hệ thống)
Click "Create"
Kết quả mong đợi: User developer01 xuất hiện trong danh sách với vai trò database-admin.
Tạo Database mới
Vào menu Databases. Nhấn nút New Database.
Cấu hình thông số:
- Name: sales_db
- Replication Factor: 1 (Single instance)
- Shard Count: 1 (Single shard)
- Is System: Uncheck
Click "Create"
Kết quả mong đợi: Database sales_db xuất hiện trong danh sách bên trái. Mặc định, bạn sẽ được chuyển sang giao diện của DB này.
Tạo Collection mới
Vào mục Collections bên trong database sales_db vừa tạo. Nhấn New Collection.
Cấu hình Collection:
- Name: customers
- Type: Document (Mặc định)
- Shard Keys: (Để trống hoặc chọn _key nếu cần phân vùng)
- Is Smart: Uncheck
Click "Create"
Kết quả mong đợi: Collection customers xuất hiện trong danh sách Collections của sales_db.
Verify kết quả: Nhấn vào collection customers, chuyển sang tab Documents, nhấn Add Document, nhập JSON mẫu: {"name": "Nguyen Van A", "email": "a@abc.com"} và lưu. Sau đó kiểm tra xem document có hiển thị trong bảng dữ liệu không.
Sử dụng ArangoShell để thao tác trực tiếp bằng JavaScript
ArangoShell là công cụ dòng lệnh (CLI) tích hợp sẵn, cho phép viết code JavaScript tương tác trực tiếp với ArangoDB, tương tự như Node.js nhưng chạy standalone.
Khởi động ArangoShell và kết nối đến database sales_db vừa tạo qua giao diện web.
arangosh --server.database sales_db
Kết quả mong đợi: Dòng prompt chuyển từ root@server:~$ sang arangosh> và hiển thị thông báo Connected to database 'sales_db'.
Tạo Collection bằng JavaScript
Sử dụng đối tượng db (Database) để gọi hàm createCollection. Đây là cách tạo Collection nhanh hơn qua API hoặc Shell.
var orders = db.createCollection("orders");
Kết quả mong đợi: Trả về object Collection orders với các thuộc tính như _key, _id, shardKeys v.v.
Lưu và lấy dữ liệu (Upsert & Fetch)
Sử dụng phương thức save để chèn document vào collection orders và findOne để lấy lại.
var doc = { "order_id": "ORD-2024-001", "amount": 1500000, "status": "pending" }; orders.save(doc);
Kết quả mong đợi: Trả về object document đã được lưu với _key tự động tạo (ví dụ: 9876543210).
var retrieved = orders.findOne({ order_id: "ORD-2024-001" }); print(retrieved);
Kết quả mong đợi: In ra màn hình nội dung JSON của document vừa tạo, bao gồm các trường hệ thống _id, _key, _rev.
Cập nhật và xóa dữ liệu
Sử dụng update để sửa document theo _key và remove để xóa.
orders.update("ORD-2024-001", { "status": "shipped" });
Kết quả mong đợi: Trả về object với key của document đã cập nhật.
orders.remove("ORD-2024-001");
Kết quả mong đợi: Trả về object xác nhận xóa thành công.
Thoát khỏi ArangoShell khi hoàn thành thao tác.
q()
Kết quả mong đợi: Quay lại shell của Ubuntu (root@server:~$).
Cấu hình quyền truy cập (ACL) và vai trò người dùng
Quản lý quyền truy cập (Access Control List) là bắt buộc để bảo vệ dữ liệu, đảm bảo user developer01 chỉ truy cập được vào sales_db và không thể xóa toàn bộ hệ thống.
Phân quyền Database cho User
Trở lại giao diện web (AUI). Đăng xuất (Logout) và đăng nhập lại bằng user developer01 với mật khẩu đã đặt.
Để user này có quyền quản lý database sales_db, admin (root) cần cấu hình lại.
Đăng nhập lại bằng root. Vào menu Configuration -> Databases. Nhấn vào database sales_db.
Chuyển sang tab Permissions (hoặc ACL tùy phiên bản). Nhấn Add Permission.
Cấu hình quyền:
- User: chọn developer01
- Role: chọn admin (cho phép CRUD đầy đủ trên DB này)
Click "Save"
Kết quả mong đợi: User developer01 xuất hiện trong danh sách Permissions của sales_db với quyền admin.
Verify quyền truy cập
Đăng xuất và đăng nhập lại bằng developer01.
Thử truy cập vào database _system (Database mặc định chứa user và config).
Trong giao diện web, chọn dropdown Database và chọn "_system"
Kết quả mong đợi: Hệ thống báo lỗi Forbidden hoặc Access denied, không cho phép xem nội dung. Điều này chứng tỏ ACL đang hoạt động đúng: user chỉ được quyền vào sales_db.
Thử quay lại chọn database sales_db.
Chọn "sales_db" trong dropdown
Kết quả mong đợi: Giao diện load thành công, hiển thị Collections (customers, orders) và cho phép thao tác (Thêm/Sửa/Xóa) document.
Tóm tắt kết quả kiểm tra
Hãy thực hiện các bước kiểm tra sau để xác nhận toàn bộ bài 2 đã hoàn thành:
- Giao diện Web: Truy cập
http://localhost:8529 thành công.
- Tài nguyên: Có database sales_db chứa 2 collections: customers và orders.
- Dữ liệu: Có ít nhất 1 document trong collection customers.
- ArangoShell: Có thể chạy command
arangosh --server.database sales_db và thao tác CRUD bằng JS.
- Bảo mật: User developer01 có thể vào sales_db nhưng bị chặn khi vào _system.
Điều hướng series:
Mục lục: Series: Triển khai Database Multi-Model với ArangoDB trên Ubuntu 24.04
« Phần 1: Chuẩn bị môi trường Ubuntu 24.04 và cài đặt ArangoDB
Phần 3: Xây dựng mô hình dữ liệu Graph và thực hiện truy vấn »