Windows Form (8): Thao tác với DBMS bằng dòng lệnh (2)

Bài trước: Windows Form (7): Thao tác với DBMS bằng dòng lệnh (1)

-----

Gán quyền truy cập database

Vậy là user1 đã có quyền đăng nhập (login) vào MS SQL Server. Tuy nhiên, để sử dụng cơ sở dữ liệu thì phải gán quyền truy cập cơ sở dữ liệu cho user1. 

Để dễ hiểu, việc user1 có quyền đăng nhập vào MS SQL Server như là một người có quyền đi qua cổng của một khu căn hộ cao cấp (đã có Thẻ cổng). MS SQL Server chính là khu căn hộ cao cấp, gồm nhiều căn hộ, mỗi căn hộ là một cơ sở dữ liệu.

Để vào căn hộ, hay để truy cập vào cơ sở dữ liệu, bạn sẽ mang Thẻ cổng, gặp bộ phận quản lý, xin cấp Thẻ căn hộ, mỗi căn hộ sẽ có một thẻ riêng.

Ví dụ, chúng ta sẽ cho User1 được quyền truy cập cơ sở dữ liệu QuanLySach:

Trong thuật ngữ của MS SQL Server, việc cấp quyền sử dụng cơ sở dữ liệu được thực hiện bằng cách nhân bản (ánh xạ) tài khoản đăng nhập thành một database user. Tên của database user có thể giống hoặc khác tên tài khoản đăng nhập (login account).

- Xem bạn đang đứng ở cơ sở dữ liệu nào?

1> select db_name()

2> go                                                                  

-------------------------------------------

master                                                               

(1 rows affected)

Bạn phải chuyển sang cơ sở dữ liệu cần phân quyền (QuanLySach):

1> USE QuanLySach

2> go

Changed database context to 'QuanLySach'.

1> select db_name()

2> go                                                            

--------------------------------

QuanLySach                                                           

(1 rows affected)

Tạo database user (tên là User1), để User1 có quyền truy cập QuanLySach (mới chỉ được vào căn hộ, mà chưa được làm gì thêm):

1> CREATE USER User1

2> FOR LOGIN User1

3> GO

1>

Chương trình không báo lỗi là đã gán quyền truy cập thành công.

Phân quyền cho User1 được toàn quyền trên QuanLySach:

1> ALTER ROLE db_owner ADD MEMBER User1

2> GO

Từ khóa db_owner nghĩa là User được toàn quyền trong QuanLySach.

Tạo các bảng

Thử xem trong QuanLySach có bảng nào chưa?

1> SELECT TABLE_NAME

2> FROM QuanLySach.INFORMATION_SCHEMA.TABLES

3> WHERE TABLE_TYPE = 'BASE TABLE'

4> GO

TABLE_NAME                                                           

--------------------------------------

(0 rows affected)

Chúng ta sẽ tạo bảng NhaXuatBan với các cột dữ liệu: NXBanID, Ten, DiaChi.

1> CREATE TABLE NhaXuatBan(NXBanID int, Ten varchar(255), DiaChi varchar(255))

2> GO

Chương trình không báo lỗi, là đã tạo được.

Kiểm tra xem bảng NhaXuatBan đã được tạo ra chưa?

1> SELECT TABLE_NAME

2> FROM QuanLySach.INFORMATION_SCHEMA.TABLES

3> WHERE TABLE_TYPE = 'BASE TABLE'

4> GO

TABLE_NAME                                                           

------------------------------------------

NhaXuatBan

Nhập dữ liệu cho bảng

Ví dụ, chúng ta sẽ nhập dòng dữ liệu đầu tiên cho bảng NhaXuatBan:

1> INSERT INTO NhaXuatBan (NXBanID, Ten, DiaChi) VALUES (1, 'Langbiang', 'Nui Langbiang - DaLat')

2> GO

(1 rows affected)

Truy vấn (xem) thông tin trong một bảng

Ví dụ, chúng ta sẽ xem dữ liệu đang có trong bảng NhaXuatBan:

1> SELECT * FROM NhaXuatBan

2> GO

NXBanID     Ten     DiaChi 

1 Langbiang Nui Langbiang - DaLat 

(1 rows affected)

1>

7.3 Bài tập

1. Để làm việc với hệ quản trị cơ sở dữ liệu, bạn có thể sử dụng các cách sau, chỉ ra một cách không đúng?

A. Sử dụng ngôn ngữ lập trình và các thư viện của ngôn ngữ lập trình

B. Sử dụng Notepad

C. Sử dụng các công cụ dòng lệnh, ví dụ CMD, Windows PowerShell

D. Sử dụng các công cụ đồ họa (GUI), ví dụ: SSMS, Azure Data Studio, Navicat for SQL Server

2. Muốn kết nối tới MS SQL Server, cần có các điều sau, điều nào không đúng?

A. Dịch vụ MS SQL Server phải đang chạy (running)

B. Bạn phải có tài khoản của Windows hoặc của DBMS

C. Trên máy đã cài đặt MS SQL Server

D. Máy tính phải có Visual Studio

3. Trong sqlcmd, lệnh select db_name() dùng để làm gì?

A. Cho biết danh sách các user đang có trong MS SQL Server

B. Lựa chọn database để kết nối

C. Cho biết database hiện hành đang được kết nối tới

D. Cho biết danh sách các database đang có trong MS SQL Server

4. Phát biểu nào không đúng khi nói về quyền truy cập một cơ sở dữ liệu của một tài khoản (ví dụ user1)?

A. User1 phải có quyền đăng nhập (login) vào MS SQL Server

B. User1 phải có quyền truy cập vào một DBMS cụ thể (ánh xạ quyền truy cập - mapping)

C. User1 phải có quyền truy cập và làm việc với database cụ thể (phân quyền sử dụng database)

D. User1 bắt buộc phải là người quản trị hệ thống (administrator)

5. Thực hành theo các hướng dẫn trong bài viết.

-----

Gợi ý làm bài tập

1(B), 2(D), 3(C), 4(D)

-----

Cập nhật: 2/12/2024

Bài sau: Windows Form (9):