Thứ ba, 29/09/2020 | 00:00 GMT+7

Tạo user mới và Phân quyền với Mysql

MySQL là phần mềm quản lý database mã nguồn mở giúp ta lưu trữ, sắp xếp và truy xuất dữ liệu. MySQL có nhiều tùy chọn khác nhau để cấp cho user cụ thể các quyền trong các bảng và database — hướng dẫn này sẽ đưa ra cái nhìn tổng quan ngắn gọn về một số tùy chọn.

Cách tạo user mới

Trong Phần 1 của Hướng dẫn sử dụng MySQL , ta đã thực hiện tất cả việc chỉnh sửa trong MySQL với tư cách là user root, có toàn quyền truy cập vào tất cả các database. Tuy nhiên, trong nhiều  trường hợp có thể cần nhiều giới hạn hơn, có nhiều cách để tạo user có quyền riêng biệt (custom permissions).

Hãy bắt đầu bằng cách tạo một user mới trong MySQL shell:

  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Lưu ý: Khi thêm user trong MySQL shell trong hướng dẫn này, ta sẽ chỉ định server của user là localhost chứ không phải địa chỉ IP của server. localhost là tên server có nghĩa là “máy tính này” và MySQL xử lý tên server cụ thể này một cách đặc biệt: khi user có server đó đăng nhập vào MySQL, nó sẽ cố gắng kết nối với server local bằng cách sử dụng socket Unix. Do đó, localhost thường được sử dụng khi bạn định kết nối bằng SSH vào server của mình hoặc khi bạn đang chạy máy khách mysql local để kết nối với server MySQL local.

Tại thời điểm newuser này không có quyền làm gì với database. Trong thực tế, ngay cả khi newuser cố gắng đăng nhập (với mật khẩu, mật) sẽ không thể vào shell MySQL.

Do đó, điều đầu tiên cần làm là cung cấp cho user quyền truy cập vào vùng quyền họ cần.

  • GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

Các dấu hoa thị trong lệnh này đề cập đến database và table (tương ứng) mà user có thể truy cập — lệnh trên cấp phép user đọc, chỉnh sửa, thực thi và thực hiện tất cả các tác vụ trên tất cả các database và bảng (*.* là tất cả Database và tất cả các Bảng - table).

Xin lưu ý trong ví dụ này, ta được cấp giấy newuser đầy đủ quyền truy cập root. Mặc dù điều này hữu ích cho việc giải thích một số khái niệm MySQL, nhưng nó có thể không thực tế và có thể khiến bảo mật database của bạn gặp rủi ro cao.

Khi bạn đã hoàn tất các quyền mà bạn muốn thiết lập cho user mới của mình, hãy đảm bảo áp dụng tất cả các quyền ngay:

  • FLUSH PRIVILEGES;

Các thay đổi của bạn bây giờ sẽ có hiệu lực.

Cách cấp quyền cho user khác nhau

Dưới đây là danh sách ngắn các quyền phổ biến khác mà user có thể dùng.

  • TẤT CẢ CÁC QUYỀN RIÊNG TƯ- như ta thấy trước đây, điều này sẽ cho phép user MySQL toàn quyền truy cập vào database được chỉ định (hoặc nếu không có database nào được chọn, quyền truy cập global trên toàn hệ thống)
  • CREATE- cho phép tạo các bảng hoặc database mới
  • DROP- cho phép xóa bảng hoặc database
  • DELETE- cho phép xóa các hàng khỏi bảng
  • INSERT- cho phép Insert - chèn - các row vào bảng
  • SELECT- cho phép sử dụng SELECT để đọc qua database
  • CẬP NHẬT- cho phép cập nhật các hàng trong bảng
  • TÙY CHỌN CẤP- cho phép cấp hoặc xóa quyền của user khác

Để cấp quyền cho một user cụ thể, ta có thể sử dụng:

  • GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

Nếu bạn muốn cấp quyền truy cập vào bất kỳ database nào hoặc vào bất kỳ bảng nào, hãy đảm bảo đặt dấu hoa thị (*) vào vị trí của tên database hoặc tên bảng.

Mỗi khi cập nhật hoặc thay đổi quyền, hãy chắc chắn sử dụng lệnh Flush Privileges để quyền đó được áp dụng.

Nếu cần thu hồi quyền, cấu trúc gần như giống hệt với việc cấp quyền đó:

  • REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';

Lưu ý rằng khi thu hồi quyền, cú pháp yêu cầu bạn sử dụng FROM , thay vì TO như ta đã sử dụng khi cấp quyền.

Bạn có thể xem lại các quyền hiện tại của user bằng cách chạy như sau:

  • SHOW GRANTS FOR 'username'@'localhost';

Cũng giống như có thể xóa database bằng DROP, bạn có thể sử dụng DROP để xóa một user:

  • DROP USER 'username'@'localhost';

Để kiểm tra user mới của bạn, hãy đăng xuất với lệnh:

  • quit

và đăng nhập lại bằng lệnh này trong terminal:

  • mysql -u [username] -p

Kết luận

Sau khi hoàn thành hướng dẫn này, bạn sẽ hiểu cách thêm user mới và cấp nhiều quyền khác nhau trong database MySQL. Từ đây, bạn có thể tiếp tục khám phá và thử nghiệm các cài đặt quyền khác nhau cho database.

Để biết thêm căn bản về MySQL, bạn có thể xem các hướng dẫn sau:


Tags: Mysql

Các tin trước

Cài đặt LAMP (Apache MariaDb Php) trên CENTOS 8 2020-09-28

Cách cài đặt máy chủ Apache trên Centos 8 2020-09-28

Tổng quan sử dụng SSH, làm việc với SSH Client - Server 2020-09-28

Cách cài đặt SSH Key trên Centos 8, đăng nhập không cần password! 2020-09-27

Cài đặt bảo mật cơ bản cho Centos 8 2020-09-27

Lập lịch với Crontab trên Centos 8 2020-09-27

Bảo mật Apache với Lets Encrypt trên Centos 8 2020-09-19

Tạo chứng chỉ số tự ký trên Apache Centos 8 (self-signed-ssl-certificate) 2020-09-19

Tối ưu SQL với Index, FullText Search 2020-08-10

Bảo mật Apache với Lets Encrypt 2020-08-06