Quản trị CSDL cơ bản
Những lập trình viên, những coder thao tác – truy vấn với dữ liệu trong CSDL, Nhưng ở tầm của một DBA thì mọi chuyện lại ở mức cao hơn. Bạn không còn làm việc với dữ liệu thuần tuý nữa mà thay vào đó là trách nhiệm quản trị các CSDL thuộc quyền.
1. Lệnh CREATE USER
Với một các CSDL lớn, bạn không thể một thân một mình vận hành, truy xuất – thao tác tất cả mọi thứ liên quan trên đó được. Những CSDL như thế cần khá nhiều người tham gia với nhiệm vụ, vị trí và vai trò khác nhau – tương ứng với các quyền khác nhau.
Trong SQL Developer (Oracle) hay bất cứ hệ quản trị CSDL nào khác, Admin hay còn được gọi là DBA (Database Administrator) có thẩm quyền tạo thêm cái User khác để đáp ứng các nhu cầu thực tế.
Cú pháp:
1
CREATE USER <tên user> IDENTIFIED BY <password>;
Ví dụ: Tạo user book_admin với password
là MyPassword123
1
CREATE USER books_admin IDENTIFIED BY MyPassword123;
Muốn thực hiện được quyền tạo User, bạn phải đăng nhập vào Hệ thống (CSDL cụ thể) với quyền DBA. Một DBA có thể tạo ra nhiều User dưới quyền và đồng thời cũng có thể xoá toàn bộ User bằng quyền Admin tối cao của mình.
1
2
3
DROP USER books_admin; -- nếu schema của books_admin không chứa các đối tượng (user con khác)
DROP USER books_admin CASCADE; -- nếu schema của books_admin có chứa các đối tượng (user con khác)
2. Lệnh GRANT
Với mỗi CSDL khác nhau, có rất nhiều người có thể tham gia tương tác, truy vấn, … tất cả họ đều có thể làm thay đổi cấu trúc của CSDL gốc. Vậy làm thế nào để giới hạn được các hành vi của từng User? Đó là công việc cũng như trách nhiệm của DBA trong hệ thống.
Sử dụng câu lệnh GRANT
để cung cấp đặc quyền, vai trò cho một User cụ thể hoặc cho tất cả User, để thực hiện các hành động trên các đối tượng cơ sở dữ liệu. Một User sau khi được cập quyền có thể cấp lại các quyền tương tự cho các User khác.
Cú pháp:
1
GRANT privilege-type ON [TABLE] { table-Name | view-Name } TO <user>;
Một số Grant privilege-type (loại đặc quyền) thông dụng;
- Delete - Xóa dữ liệu từ một bảng cụ thể.
- Insert - Chèn dữ liệu vào một bảng cụ thể.
- Create foreign key - Tạo một tham chiếu khóa ngoài đến bảng được đặt tên hoặc đến một tập hợp con các cột từ một bảng.
- Create Strigger – tạo trigger.
- Update – Cập nhật dữ liệu trong một bảng hoặc trong một tập hợp con của các cột trong bảng.
- Select – Chọn dữ liệu từ bảng, dạng xem hoặc tập hợp con của các cột trong bảng.
- … …
Ví dụ: cấp quyền SELECT và UPDATE cho user book_admin
trên bảng NOVEL
1
GRANT UPDATE, SELECT ON TABLE NOVEL TO books_admin;
Sau khi được khời tạo và gán quyền, user book_admin
có thể tạo và cấp quyền lại cho các user khác – với các quyền không vượt quá quyền của bản thân. Để thực hiện các hành vi như trên, book_admin phải đăng nhập vào CSDL với tên và mật khẩu đã được cấp bởi DBA.
1
2
GRANT UPDATE, SELECT ON TABLE NOVEL TO book_employer;
-- query của user book_admin đã đăng nhập
3. Lệnh ROVOKE
Ở một số thay đổi về CSDL hoặc các quyền, có thể là cấp dư thừa hoặc quyền không còn được sử dụng bởi chính các User đó nữa. Bạn muốn thu hồi lại các quyền này? Cũng OK thôi – Mỗi User cha có thể thu hồi lại bất kì quyền nào đã cấp cho các User con.
Lệnh ROVOKE
được sinh ra để thực hiện vai trò hoàn toàn trái ngược với GRANT là thu hồi lại những gì mà GRANT đã cấp.
Cú pháp:
1
REVOKE privilege-type ON [TABLE] { table-Name | view-Name } TO <user>;
Một số Revoke privilege-type (loại đặc quyền) thông dụng;
- Delete - Xóa dữ liệu từ một bảng cụ thể.
- Insert - Chèn dữ liệu vào một bảng cụ thể.
- Create foreign key - Tạo một tham chiếu khóa ngoài đến bảng được đặt tên hoặc đến một tập hợp con các cột từ một bảng.
- Create Strigger – tạo trigger.
- Update – Cập nhật dữ liệu trong một bảng hoặc trong một tập hợp con của các cột trong bảng.
- Select – Chọn dữ liệu từ bảng, dạng xem hoặc tập hợp con của các cột trong bảng.
- … …
Ví dụ: thu hồi lại quyền UPDATE của user book_admin
trên bảng NOVEL đã cấp
1
REVOKE UPDATE ON TABLE NOVEL FROM books_admin;
Nếu bạn có đinh hướng để trở thành một DBA chuyên nghiệp, kiến thức quản trị CSDL là yêu cầu tất yếu – không chỉ dừng lại ở mức hiểu – biết mà còn phải “tinh thông” hiểu rõ tường tận về mọi vấn đề của CSDL.
Một DBA có thể tường tận về các kiến thức CSDL của mọi lập trình viên, nhưng ngược lại thì chưa chắc. Mức lương trung bình của DBA hay những người theo quản trị CSDL ở Việt Nam nằm ở mức TOP – những cũng phải trả giá rất đắc cho mọi sai lầm của mình.
Kiến thức phần này và một phần kế tiếp nữa là BONUS thêm để giúp các bạn có thể hiểu thêm nhiều điều tổng quan về CSDL. Đôi khi kiến thức này có thể hỗ trợ các bạn trong quá trình phát triển phần mềm – biết nhiều không bao giờ là lãng phí cả.
Bài viết mang tính chất “ghi chú, lưu trữ, chia sẻ và phi lợi nhuận”.
Nếu bạn thấy hữu ích, đừng quên chia sẻ với bạn bè và đồng nghiệp của mình nhé!
Happy coding! 😎 👍🏻 🚀 🔥