Làm thế nào để tạo và cấp quyền truy cập cho một user trong mysql !!!
Bài đăng này đã không được cập nhật trong 7 năm
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!.
All rights reserved