0

Series Làm chủ XAMPP | Bài 3: Bảo mật Database - Quản lý User và phân quyền trong phpMyAdmin

Khi cài XAMPP lần đầu, database của bạn giống như một ngôi nhà không khóa cửa: ai cũng có quyền root, không mật khẩu, có thể xóa toàn bộ dữ liệu chỉ bằng một dòng lệnh. Trong thực tế, mỗi dự án nên có một Database User riêng với quyền hạn giới hạn.

1. Truy cập phpMyAdmin

Từ trình duyệt, bạn truy cập http://localhost/phpmyadmin. Đây là giao diện quản trị đồ họa giúp bạn không cần gõ lệnh SQL thô mà vẫn thao tác được với dữ liệu.

2. Thiết lập mật khẩu cho tài khoản Root

Đừng để tài khoản quản trị cao nhất của bạn "trống trơn".

  1. Chọn tab User accounts (Tài khoản người dùng) ở thanh menu trên cùng.
  2. Tìm dòng rootlocalhost.
  3. Nhấn Edit privileges (Sửa quyền).
  4. Chọn Change password (Thay đổi mật khẩu), nhập mật khẩu của bạn vào và nhấn Go.

Lưu ý: Sau khi đổi mật khẩu, bạn cần cập nhật lại file cấu hình để XAMPP biết mật khẩu mới.

  • Mở file: C:\xampp\phpMyAdmin\config.inc.php
  • Tìm dòng: $cfg['Servers'][$i]['password'] = '';
  • Điền mật khẩu của bạn vào giữa cặp dấu nháy đơn: $cfg['Servers'][$i]['password'] = 'mat_khau_cua_ban';

3. Tạo User riêng cho từng dự án (Best Practice)

Thay vì dùng root cho mọi dự án, hãy tạo user riêng:

  1. Tại tab User accounts, chọn Add user account.
  2. User name: Đặt tên, ví dụ dev_myapp.
  3. Host name: Chọn localhost.
  4. Password: Tạo mật khẩu riêng.
  5. Database for user account: Chọn "Create database with same name and grant all privileges" (tạo DB cùng tên và cấp toàn quyền cho user này trên DB đó).
  6. Nhấn Go.

Tại sao phải làm vậy? Nếu dự án của bạn bị dính lỗi SQL Injection, hacker chỉ có thể thao tác trong phạm vi Database của dự án đó, không thể truy cập vào toàn bộ hệ thống Database trên XAMPP. Đây là tư duy thiết kế hệ thống an toàn mà mọi backend engineer đều phải tuân thủ.

4. Kiểm tra quyền truy cập (Privileges)

Trong giao diện chỉnh sửa User, bạn sẽ thấy các tab quyền:

  • Data: Quyền SELECT, INSERT, UPDATE, DELETE (Đây là quyền cơ bản cho ứng dụng).
  • Structure: Quyền CREATE, ALTER, DROP (Chỉ nên cấp khi bạn đang ở giai đoạn phát triển, trên Production thường hạn chế).
  • Administration: Quyền GRANT, SUPER, FILE (Tuyệt đối không cấp cho user dự án, chỉ dành cho root).

Tổng kết Bài 3

Bằng việc tạo riêng User và đặt mật khẩu cho root, bạn đã nâng cấp bảo mật từ "cửa mở" thành "cửa khóa chắc chắn". Bây giờ, dự án của bạn đã có một môi trường database tách biệt và an toàn.

Ở Bài 4, bạn muốn chúng ta tìm hiểu về cách Import/Export Database bằng dòng lệnh (dùng mysqldump để backup nhanh) hay cách xử lý lỗi khi MySQL không khởi động được (xóa file ib_logfile do treo port)? Đây là hai lỗi "xương máu" mà kỹ sư làm Metro/AFC thường xuyên gặp phải đấy!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí