Làm thế nào để tạo và cấp quyền truy cập cho một user trong mysql !!!

Làm thế nào để tạo và cấp quyền truy cập cho một user trong mysql !!!

  • Đã bao giờ bạn nghĩ muốn truy cập vào một mysql server trên vps hoặc aws?
  • Khi bạn cho nhiều người truy cập vào mysql server thì bạn cấp quyền truy cập đó cho user như thế nào?

1. Giới thiêu về MYSQL

(Phần này chắc ai cũng biết tuy nhiên dịch từ nguồn nên vẫn cần đầy đủ.)

MySQL là một phần mềm quản lý cơ sở dữ liệu mã nguồn mở giúp người dùng lưu trữ, tổ chức, và sau đó lấy dữ liệu.

2. Làm thế nào để tạo mới một user

Theo mặc định khi cài đặt MYSQL chúng ta có một user có quyền root và password: ******* có tất cả các quyền trong mysql. Tuy nhiên chúng ta muốn tạo một người dùng mà có quyền hạn chế truy cập chúng ta có thể dùng cách sau.

Hãy bắt đầu với việc truye cập vào mysql bằng lệnh:

mysql -u root -p password

Tiếp đó:

CREATE USER 'username'@'Your IP' IDENTIFIED BY 'password';

Tuy nhiên bây giờ user username lại đang không có quyền làm bất cứ điều gì với cơ sở dữ liệu. Trong thực tế, nếu một user mới tạo như vậy cũng không thể kết nối được tới mysql.

Do đó, điều tiếp theo ta cần làm đó là cấp cho user mới username này một quyền truy cập

GRANT ALL PRIVILEGES ON * . * TO 'username'@'Your IP;

Dấu * trong trường hợp này được chỉ đến database và bảng mà user này được quyền truy cập, lệnh cụ thể này cho phép người đọc. Lệnh này cho phép người đọc, chỉnh sửa, thực hiện các nhiệm vụ trên database và table.

Khi bạn đã hoàn tất các quyền mà bạn thiết lập cho người dùng mới của mình, hãy chắc chắn rằng bạn đã reload lại các quyền của các user trong mysql.

FLUSH PRIVILEGES;

3. Làm thế nào để cấp các quyền khác nhau cho user

Dưới đây là danh sách các quyền mà người dùng có dùng trong mysql

Key
ALL PRIVILEGES Như chúng ta đã thấy trước đây, điều này sẽ cho phép một người dùng MySQL truy cập vào một cơ sở dữ liệu được chỉ định (hoặc nếu không có cơ sở dữ liệu nào được chọn, qua hệ thống)
CREATE cho phép họ tạo các bảng hoặc cơ sở dữ liệu mới
DROP cho phép họ xóa các bảng hoặc cơ sở dữ liệu
INSERT cho phép họ thêm các hàng từ các bảng
DELETE cho phép họ xóa các hàng từ các bảng
SELECT cho phép họ sử dụng lệnh SELECT để đọc qua cơ sở dữ liệu
UPDATE cho phép họ cập nhật các hàng của bảng
GRANT OPTION cho phép họ cấp hoặc xoá các đặc quyền của người dùng khác

Để cung cấp cho một người dùng cụ thể có quyền trên, bạn có thể sử dụng cú pháp:

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'your_ip’;

Nếu bạn muốn cung cấp cho họ quyền truy cập vào bất kỳ cơ sở dữ liệu hoặc bất kỳ bảng nào, hãy chắc chắn đặt dấu hoa thị (*) vào vị trí của tên cơ sở dữ liệu hoặc tên bảng.

Mỗi lần bạn cập nhật hoặc thay đổi sự cho phép chắc chắn sử dụng lệnh Flush Privileges.

Nếu bạn muốn xóa quyền truy cập của một user có thể dùng:

REVOKE [type of permission] ON [database name].[table name] FROM ‘[username]’@‘your_ip’;

Cũng như bạn có thể xóa cơ sở dữ liệu với DROP, bạn có thể sử dụng DROP để xóa hoàn toàn một người dùng

DROP USER ‘username’@‘your_ip’;

Để kiểm tra người dùng mới của bạn, đăng xuất bằng cách gõ quit

mysql -u [username]-p

4. Làm thế nào để truy cập vào mysql server trên vps hoặc aws

Để truy cập được mysql server của máy [X] từ một máy khác [Y] bạn cần thiết lập mysql của máy [X] như sau.

Thay đổi nội dung bind-address của file /etc/mysql/my.cnf thành: 0.0.0.0

Mặc định của mysql sẽ là localhost

Sau khi chuyển xong bạn cần chạy lệnh reset mysql:

sudo /etc/init.d/mysql restart

Kết luận

Cám ơn ban đã theo dõi bài viết của mình!.

nguồn: https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql