Trang này được dịch bằng máy. Đọc bản gốc tiếng Anh. English

SQL Language Extension: CREATE/ALTER/CREATE_OR_ALTER/DROP USER

Triển khai khả năng quản lý người dùng từ kết nối cơ sở dữ liệu thông thường.

Tác giả:

Alex Peshkoff [email protected]

Cú pháp là:

CREATE USER name [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER USER name [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER CURRENT USER [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] CREATE OR ALTER USER name [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] DROP USER name [ USING PLUGIN name ];

trong đó OPTIONS là danh sách các tùy chọn sau:

- PASSWORD ‘password’

- FIRSTNAME ‘firstname’

- MIDDLENAME ‘middlename’

- LASTNAME ’lastname'

- ACTIVE

- INACTIVE

- USING PLUGIN name

và mỗi TAG có thể có một trong hai dạng:

name = ‘string value’

hoặc:

DROP name

trong đó NAME là bất kỳ định danh SQL hợp lệ nào.

Mô tả:

Cho phép thêm, sửa và xóa người dùng trong cơ sở dữ liệu bảo mật bằng ngôn ngữ SQL.

Firebird từ phiên bản 3.0 hỗ trợ nhiều cơ sở dữ liệu bảo mật. Tiện ích gsec và services API

không hỗ trợ điều này và việc sử dụng chúng để quản lý người dùng đã bị không khuyến khích.

Các mệnh đề CREATE và DROP chỉ khả dụng cho SYSDBA (hoặc người dùng khác, được cấp vai trò RDB$ADMIN trong cơ sở dữ liệu bảo mật). Người dùng thông thường có thể ALTER mật khẩu, tên mở rộng và tags của chính mình. Nỗ lực sửa đổi

người dùng khác sẽ thất bại. Ngoài ra, nỗ lực tự đặt mình ở trạng thái inactive hoặc active cũng sẽ thất bại. Để tránh phải gõ tên của bạn mỗi lần, có dạng rút gọn ALTER CURRENT USER.

Ít nhất một trong các mệnh đề PASSWORD, FIRSTNAME, MIDDLENAME, LASTNAME, ACTIVE, INACTIVE hoặc TAGS phải có mặt trong câu lệnh ALTER USER. Cũng lưu ý rằng mệnh đề PASSWORD là bắt buộc khi tạo người dùng mới.

Mệnh đề PASSWORD khá tự giải thích. Các mệnh đề FIRSTNAME, MIDDLENAME và LASTNAME cũng vậy, nhưng cũng có thể được sử dụng để lưu trữ bất kỳ thông tin ngắn nào về người dùng. Các mệnh đề INACTIVE/ACTIVE được sử dụng để vô hiệu hóa đăng nhập của người dùng vào máy chủ mà không xóa họ khỏi danh sách và khôi phục khả năng đó. Mệnh đề USING PLUGIN cho phép làm việc với người dùng không chỉ với plugin quản lý mặc định (được liệt kê đầu tiên trong tham số UserManager trong firebird.conf) mà còn với các plugin khác. Tiện ích gsec và services API không hỗ trợ nhiều plugin quản lý người dùng - plugin mặc định luôn được sử dụng.

TAGS là danh sách các thuộc tính do người dùng cuối định nghĩa. Độ dài của giá trị không được vượt quá 255 byte.

Gán giá trị cho tên sẽ tạo mới hoặc sửa đổi tag hiện có. Để xóa tag, sử dụng tùy chọn DROP.

Việc thiết lập danh sách tags cho người dùng sẽ giữ lại các tags đã đặt trước đó nếu chúng không được đề cập hiện tại.

Lưu ý - UID/GID, được nhập bởi gsec đã không khuyến khích, được xử lý như tags trong giao diện SQL.

Để truy cập danh sách người dùng, hãy chọn từ các bảng ảo SEC$USERS và SEC$USER_ATTRIBUTES.

Ví dụ (giả sử UserManager=Srp,Legacy_UserManager trong firebird.conf):

Tổng quát:

CREATE USER alex PASSWORD 'test'; ALTER USER alex SET FIRSTNAME 'Alex' LASTNAME 'Peshkoff'; CREATE OR ALTER USER alex SET PASSWORD 'IdQfA'; DROP USER alex; ALTER CURRENT USER SET PASSWORD 'SomethingLongEnough' USING PLUGIN srp;

Làm việc với tags:

ALTER USER alex SET TAGS (a='a', b='b'); NAME VALUE ================ ============================== A a B b ALTER USER alex SET TAGS (b='x', c='d'); NAME VALUE ================ ============================== A a B x C d ALTER USER alex SET TAGS (drop a, c='sample'); NAME VALUE ================ ============================== B x C sample

Hiển thị danh sách người dùng:

SELECT CAST(U.SEC$USER_NAME AS CHAR(20)) LOGIN, CAST(A.SEC$KEY AS CHAR(10)) TAG, CAST(A.SEC$VALUE AS CHAR(20)) "VALUE", U.SEC$PLUGIN "PLUGIN" FROM SEC$USERS U LEFT JOIN SEC$USER_ATTRIBUTES A ON U.SEC$USER_NAME = A.SEC$USER_NAME AND U.SEC$PLUGIN = A.SEC$PLUGIN;

LOGIN TAG VALUE PLUGIN

==================== ========== ==================== =============================== SYSDBA <null> <null> Srp ALEX B x Srp ALEX C sample Srp SYSDBA <null> <null> Legacy_UserManager

Lưu ý!

Tính năng này phụ thuộc rất nhiều vào plugin quản lý người dùng. Hãy lưu ý rằng một số tùy chọn bị bỏ qua khi sử dụng plugin quản lý người dùng legacy.