Nếu bạn đã từng phát triển web hoặc ứng dụng, có thể bạn đã nghe nói đến mysql database. Databases là bộ lưu trữ ảo, cần thiết để dựng ứng dụng web. Chúng được dùng để lưu trữ thông tin thành viên, như là username, password, email address, vâng vâng. Cơ bản, bất kỳ thông tin nào bạn muốn lưu trữ để dùng về sau có thể được lưu trong database.
Tất nhiên, dữ liệu này phải được lưu trữ có trật tự. Vì vậy hệ thống quản trị dữ liệu cần phải được sử dụng. Những hệ thống này liên lạc với database và cho phép lập trình viên cấu trúc, lưu trữ, sao lưu và chỉnh sử data.
MySQL là một trong những hệ thống quản lý database như vậy. nó là một trong số những hệ thống nổi tiếng nhất, vì tính dễ sử dụng và được hỗ trợ bởi một cộng đồng lớn. Thực tế, sự phổ biến của nó thu hút nhiều công ty lớn như là Facebook hay Twitter sử dụng ở một mức độ nào đó.
Trong bài hướng dẫn này, chúng tôi sẽ đi qua thông tin cơ bản về MySQL Database và chỉ bạn cách làm thế nào để tạo user trong MySQL Database. Bạn cũng sẽ học cách gán quyền cho MySQL users. Command line sẽ được dùng trong bài hướng dẫn này.
Bạn cần chuẩn bị gì
Trước khi bắt đầu, bạn cần chuẩn bị:
- MySQL được cài trên máy tính của bạn. Bài hướng dẫn cài nó lên CentOS VPS có thể được tìm thấy tại đây.
Bước 1 – Tạo MySQL User cho MySQL database và gán toàn bộ các quyền
Ngay khi bắt đầu sử dụng MySQL database, bạn sẽ được cung cấp username và password. Những thông tin đăng nhập này sẽ cho bạn quyền “root access”. Một user root có toàn quyền truy cập tới database và bảng trong databases.
Nhưng qua thời gian, bạn sẽ cần cho quyền truy cập tới database tới một người khác mà không cho phép họ sử dụng toàn quyền. Ví dụ, công ty thuê lập trình viên để bảo trì database, nhưng không muốn họ có quyền xóa hoặc chỉnh sửa những thông tin nhạy cảm, sẽ cần cung cấp một thông tin đăng nhập không phải root user. Cách này, công ty có quyền kiểm soát lập trình viên có thể và không thể làm gì với dữ liệu.
Tạo một user mới cũng rất đơn giản trong MySQL. Chúng tôi sẽ cho bạn biết cách tạo MySQL user và làm thế nào để gán toàn quyền vào trong database của bạn. Trên thực tế thì không nên làm vậy, việc gán toàn quyền cho một user – không phải root là không tốt, nhưng là một cách dễ nhất cho người mới bắt đầu. Để tạo user mới, hãy làm các bước sau:
- Truy cập command line và điền MySQL server:
mysql
2. Nếu bạn muốn thực hiện những lệnh này trên VPS server, bạn sẽ cần thực hiện kết nối tới SSH trước: establish SSH connection first.
Thực thi lệnh sau:
CREATE USER 'non-root'@'localhost' IDENTIFIED BY '123';
Với lệnh này, ‘non-root’ là tên của user mới và ‘123’ là password cho user này. Bạn cần thay thế 2 giá trị với thông tin của riêng bạn, trong phần ngoặc đơn.
3. Chỉ cần tạo user này là không đủ. Bạn cần gán quyền cho nó. Để gán toàn quyền cho user mới tạo, bạn thực thi lệnh sau:
GRANT ALL PRIVILEGES ON * . * TO 'non-root'@'localhost';
4. Để thay đổi được thực hiện ngay lập tức, hãy dùng lệnh sau:
FLUSH PRIVILEGES;
Vậy là xong! User mới tạo của bạn có toàn quyền như là user root
Bước 2 – Gán một số quyền nhất định cho MySQL user
Như đã nói ở trên, rất không an toàn nếu gán quyền root cho một user bình thường không-phải-root. Theo thời gian, bạn sẽ có nhu cầu gán từng cấp độ quyền cho từng loại users. MySQL cho phép gán quyền cho user với một dòng lệnh đơn giản:
GRANT [permission type] ON [database name].[table name] TO ‘non-root’@'localhost’;
Bạn chỉ cần thay thế ‘permission type’ thành giá trị quyền bạn muốn gán cho user. Bạn cũng phải xác định database và tên bảng, mà bạn muốn cấp quyền cho user không phải root. Tương tự như ví dụ trên ‘non-roo’ cần được thay thế thay thế thành username được bạn chỉ định:
MySQL có nhiều loại quyền, được liệt kê bên dưới
- CREATE – Cho phép user tạo databases/tables
- SELECT – Cho phép user truy xuất data
- INSERT – Cho phép user tạo thêm dòng trong bảng
- UPDATE – Cho phép user chỉnh sửa các entry trong bảng
- DELETE – Cho phép user xóa entry trong bảng
- DROP – Cho phép user xóa hoàn toàn bảng/database
Để dùng các tùy chọn chỉ cần thay thế [permission type] với các từ khóa thích hợp. Để áp dụng nhiều loại quyền, ngăn chúng bằng dấu phẩy. Ví dụ, bạn có thể gán quyền CREATE và SELECT cho một database user không-phải-root với lệnh sau:
GRANT CREATE, SELECT ON * . * TO 'non-root'@'localhost';
Tất nhiên bạn cũng sẽ gặp tình huốn bạn cần thu hồi quyền đã cấp cho một user. Bạn có thể làm vậy bằng lệnh sau:
REVOKE [permission type] ON [database name].[table name] FROM ‘non-root’@‘localhost’;
Ví dụ, để thu hồi toàn bộ các quyền cho một user không phải root:
REVOKE ALL PRIVILEGES ON *.* FROM 'non-root'@'localhost';
Cuối cùng, bạn có thể xóa user:
DROP USER ‘non-root’@‘localhost’;
Hãy nhớ, để thực thi những quyền này bạn cần có quyền root. Cũng như vậy, hãy chắc đã thực thi FLUSH PRIVILEGES sau khi tạo bất kỳ thay đổi nào về quyền.
Kết luận
Trong bài hướng dẫn này, chúng ta đã học các quyền cơ bản của MySQL database, và làm thế nào tạo MySQL user mới. Đặc biệt, chúng ta học về:
- Tạo mới user và gán toàn quyền
- Gán quyền nhất định cho users, và thu hồi quyền và xóa users.
Gán quyền là bước cơ bản trong việc phát triển ứng dụng web, tuy nhiên, nó là một biện pháp bảo mật hiệu quả cho việc quản trị database và điều hành nó. Hầu hết nhiều ứng dụng hiện đại đều phụ thuộc vào database, khiến cho việc gán/thu hồi quyền MySQL database trở nên tối quan trọng.
100 lần tự tìm hiểu cũng không bằng 1 lần được tư vấn