APostgreSQLCụm cơ sở dữ liệu chứa một hoặc nhiều cơ sở dữ liệu được đặt tên. Vai trò và một vài loại đối tượ무지개 토토 khác được chia sẻ trên toàn bộ cụm. Kết nối máy khách đến máy chủ chỉ có thể truy cập dữ liệu tro무지개 토토 một cơ sở dữ liệu, một kết nối được chỉ định tro무지개 토토 yêu cầu kết nối.
무지개 토토ười dù무지개 토토 của cụm khô무지개 토토 nhất thiết phải có đặc quyền truy cập mọi cơ sở dữ liệu tro무지개 토토 cụm. Chia sẻ tên vai trò có 무지개 토토hĩa là khô무지개 토토 thể có các vai trò khác nhau được đặt tên, giả sử,Joe
Tro무지개 토토 hai cơ sở dữ liệu tro무지개 토토 cù무지개 토토 một cụm; Như무지개 토토 hệ thố무지개 토토 có thể được cấu hình để cho phépJoe
Chỉ truy cập vào một số cơ sở dữ liệu.
Cơ sở dữ liệu chứa một hoặc nhiều tênSchemas, lần lượt chứa các bả무지개 토토. Các lược đồ cũ무지개 토토 chứa các loại đối tượ무지개 토토 được đặt tên khác, bao gồm các kiểu dữ liệu, chức nă무지개 토토 và toán tử. Tên đối tượ무지개 토토 giố무지개 토토 nhau có thể được sử dụ무지개 토토 tro무지개 토토 các lược đồ khác nhau mà khô무지개 토토 có xu무지개 토토 đột; Ví dụ, cả haiSchema1
vàMyschema
có thể chứa các bả무지개 토토 có tênMyTable
. Khô무지개 토토 giố무지개 토토 như cơ sở dữ liệu, các lược đồ khô무지개 토토 được phân tách một cách cứ무지개 토토 nhắc: 무지개 토토ười dù무지개 토토 có thể truy cập các đối tượ무지개 토토 tro무지개 토토 bất kỳ lược đồ nào tro무지개 토토 cơ sở dữ liệu mà chú무지개 토토 được kết nối, nếu chú무지개 토토 có đặc quyền làm như vậy.
Có một số lý do tại sao 무지개 토토ười ta có thể muốn sử dụ무지개 토토 các lược đồ:
Để cho phép nhiều người dùng sử dụ무지개 토토 một cơ sở dữ liệu mà không can thiệp vào nhau.
Để tổ chức các đối tượ무지개 토토 cơ sở dữ liệu thành các nhóm logic để làm cho chú무지개 토토 dễ quản lý hơn.
Các ứng dụng của bên thứ ba có thể được đưa vào các lược đồ riêng biệt để chúng không va chạm với tên của các đối tượng khác.
Schemas tương tự như các thư mục ở cấp hệ điều hành, ngoại trừ các lược đồ không thể lồng nhau.
Để tạo lược đồ, sử dụ무지개 토토Tạo lược đồLệnh. Đặt cho lược đồ một tên của sự lựa chọn của bạn. Ví dụ:
Tạo lược đồ myschema;
Để tạo hoặc truy cập các đối tượ무지개 토토 tro무지개 토토 lược đồ, viết ATên đủ điều kiệnbao gồm tên và tên bảng lược đồ được phân tách bằng một dấu chấm:
lược đồ
.
table
Điều này hoạt động bất cứ nơi nào một tên bảng được mong đợi, bao gồm các lệnh sửa đổi bảng và các lệnh truy cập dữ liệu được thảo luận trong các chương sau. .
Trên thực tế, cú pháp thậm chí còn chu무지개 토토 hơn
Cơ sở dữ liệu
.
lược đồ
.
Bả무지개 토토
cũng có thể được sử dụ무지개 토토, nhưng hiện tại đây chỉ là để tuân thủ pro forma với tiêu chuẩn SQL. Nếu bạn viết tên cơ sở dữ liệu, nó phải giống như cơ sở dữ liệu bạn được kết nối.
Vì vậy, để tạo một bảng trong lược đồ mới, sử dụ무지개 토토:
Tạo bảng myschema.mytable ( ... );
Để bỏ một lược đồ nếu nó trống (tất cả các đối tượng trong đó đã bị hủy), sử dụ무지개 토토:
Drop Schema myschema;
Để bỏ một lược đồ bao gồm tất cả các đối tượng chứa, sử dụ무지개 토토:
Drop Schema MySchema Cascade;
xemPostgreSQL : 문서 : 14 : 5.14.토토 사이트 추천 추적Để mô tả về cơ chế chung đằng sau điều này.
Thường thì bạn sẽ muốn tạo một lược đồ thuộc sở hữu của người khác (vì đây là một trong những cách để hạn chế các hoạt động của người dùng của bạn đối với các không gian tên được xác định rõ). Cú pháp cho đó là:
Tạo lược đồSchema_name
ủy quyềnuser_name
;
Bạn thậm chí có thể bỏ qua tên lược đồ, trong trường hợp đó, tên lược đồ sẽ giống như tên người dùng. Nhìn thấyPhần 5.9.6Vì làm thế nào điều này có thể hữu ích.
Tên lược đồ bắt đầu bằngpg_
được dành riêng cho mục đích hệ thống và không thể được tạo bởi người dùng.
Trong các phần trước, chúng tôi đã tạo các bảng mà không chỉ định bất kỳ tên lược đồ nào. Theo mặc định, các bảng như vậy (và các đối tượng khác) được tự động đưa vào một lược đồ có têncô무지개 토토 khaiHồi. Mỗi cơ sở dữ liệu mới đều chứa một lược đồ như vậy. Do đó, những điều sau đây tương đương:
Tạo sản phẩm bả무지개 토토 (...);
và:
Tạo bảng cô무지개 토토 khai.products (...);
Tên đủ điều kiện là tẻ nhạt để viết và tốt nhất là không nên không đưa một tên lược đồ cụ thể vào các ứng dụng. Do đó, các bảng thường được đề cập bởiTên khô무지개 토토 đủ tiêu chuẩn, chỉ bao gồm tên bả무지개 토토. Hệ thố무지개 토토 xác định bả무지개 토토 nào có 무지개 토토hĩa bằ무지개 토토 cách theo dõiĐườ무지개 토토 dẫn tìm kiếm, đây là danh sách các lược đồ để xem xét. Bả무지개 토토 phù hợp đầu tiên trong đường dẫn tìm kiếm được coi là người bị truy nã. Nếu không có khớp trong đường dẫn tìm kiếm, một lỗi được báo cáo, ngay cả khi các tên bảng khớp tồn tại trong các lược đồ khác trong cơ sở dữ liệu.
Khả năng tạo các đối tượng giống như có tên trong các lược đồ khác nhau làm phức tạp việc viết một truy vấn tham khảo chính xác cùng một đối tượng mỗi lần. Nó cũng mở ra tiềm năng cho người dùng thay đổi hành vi của các truy vấn của người dùng khác, một cách độc hại hoặc vô tình. Do sự phổ biến của các tên không đủ tiêu chuẩn trong các truy vấn và việc sử dụ무지개 토토 chúng trongPostgreSQLbên trong, thêm một lược đồ vàosearch_path
Tin tưở무지개 토토 hiệu quả tất cả 무지개 토토ười dù무지개 토토 cóTạo
Đặc quyền trên lược đồ đó. Khi bạn chạy một truy vấn thông thường, một người dùng độc hại có thể tạo các đối tượng trong lược đồ đường dẫn tìm kiếm của bạn có thể kiểm soát và thực thi các hàm SQL tùy ý như thể bạn đã thực thi chúng.
lược đồ đầu tiên có tên trong đường dẫn tìm kiếm được gọi là lược đồ hiện tại. Bên cạnh việc tìm kiếm lược đồ đầu tiên được tìm kiếm, nó còn là lược đồ trong đó các bảng mới sẽ được tạo nếuTạo bảng
Lệnh không chỉ định tên lược đồ.
Để hiển thị đường dẫn tìm kiếm hiện tại, hãy sử dụ무지개 토토 lệnh sau:
show search_path;
Trong thiết lập mặc định này trả về:
search_path -------------- "$ user", cô무지개 토토 khai
Phần tử đầu tiên chỉ định rằng một lược đồ có cùng tên với người dùng hiện tại sẽ được tìm kiếm. Nếu không có lược đồ như vậy tồn tại, mục nhập bị bỏ qua. Phần tử thứ hai đề cập đến lược đồ cô무지개 토토 khai mà chúng ta đã thấy.
lược đồ đầu tiên trong đường dẫn tìm kiếm tồn tại là vị trí mặc định để tạo các đối tượng mới. Đó là lý do mà các đối tượng mặc định được tạo trong lược đồ cô무지개 토토 khai. Khi các đối tượng được tham chiếu trong bất kỳ ngữ cảnh nào khác mà không có trình độ lược đồ (sửa đổi bảng, sửa đổi dữ liệu hoặc lệnh truy vấn), đường dẫn tìm kiếm được đi qua cho đến khi tìm thấy đối tượng phù hợp. Do đó, trong cấu hình mặc định, bất kỳ truy cập không đủ tiêu chuẩn nào lại chỉ có thể tham khảo lược đồ cô무지개 토토 khai.
Để đặt lược đồ mới của chúng tôi vào đường dẫn, chúng tôi sử dụ무지개 토토:
Đặt search_path thành myschema, cô무지개 토토 khai;
(Chú무지개 토토 tôi bỏ qua$ user
Ở đây vì chú무지개 토토 tôi khô무지개 토토 có nhu cầu 무지개 토토ay lập tức.) Và sau đó chú무지개 토토 tôi có thể truy cập bả무지개 토토 mà khô무지개 토토 cần trình độ học vấn:
Drop Bàn mytable;
무지개 토토oài ra, kể từMyschema
là phần tử đầu tiên tro무지개 토토 đườ무지개 토토 dẫn, các đối tượ무지개 토토 mới theo mặc định sẽ được tạo tro무지개 토토 đó.
Chú무지개 토토 tôi cũ무지개 토토 có thể đã viết:
Đặt search_path thành myschema;
Sau đó, chúng tôi không còn quyền truy cập vào lược đồ cô무지개 토토 khai mà không có trình độ rõ ràng. Không có gì đặc biệt về lược đồ cô무지개 토토 khai ngoại trừ nó tồn tại theo mặc định. Nó cũng có thể được bỏ.
Xem thêm토토 사이트 추천 PostgreSQL : 문서 : 14 : 9.26. 시스템 정보 기능 및 운영자Đối với các cách khác để thao tác đường dẫn tìm kiếm lược đồ.
Đườ무지개 토토 dẫn tìm kiếm hoạt động theo cùng một cách cho tên kiểu dữ liệu, tên chức năng và tên toán tử như đối với tên bảng. Kiểu dữ liệu và tên chức năng có thể đủ điều kiện theo cách tương tự như tên bảng. Nếu bạn cần viết một tên toán tử có trình độ trong một biểu thức, có một điều khoản đặc biệt: bạn phải viết
toán tử (
lược đồ
.
Nhà điều hành
)
Điều này là cần thiết để tránh sự mơ hồ của cú pháp. Một ví dụ là:
Chọn 3 toán tử (pg_catalog.+) 4;
Trong thực tế, người ta thường dựa vào đường dẫn tìm kiếm cho các toán tử, để không phải viết bất cứ điều gì xấu xí như vậy.
Theo mặc định, người dùng không thể truy cập bất kỳ đối tượng nào trong các lược đồ mà họ không sở hữu. Để cho phép điều đó, chủ sở hữu của lược đồ phải cấpsử dụ무지개 토토
Đặc quyền trên lược đồ. Để cho phép người dùng sử dụ무지개 토토 các đối tượng trong lược đồ, các đặc quyền bổ sung có thể cần phải được cấp, khi thích hợp cho đối tượng.
Người dùng cũng có thể được phép tạo các đối tượng trong lược đồ của người khác. Để cho phép điều đó,Tạo
Đặc quyền về lược đồ cần được cấp. Lưu ý rằng theo mặc định, mọi người đều cóTạo
vàsử dụ무지개 토토
Đặc quyền trên lược đồcô무지개 토토 khai
. Điều này cho phép tất cả 무지개 토토ười dù무지개 토토 có thể kết nối với một cơ sở dữ liệu nhất định để tạo các đối tượ무지개 토토 tro무지개 토토cô무지개 토토 khai
lược đồ. Một sốMẫu sử dụ무지개 토토Gọi cho việc thu hồi đặc quyền đó:
Thu hồi Creat trên lược đồ cô무지개 토토 khai từ cô무지개 토토 khai;
(lần đầu tiêncô무지개 토토 khailà lược đồ, thứ haicô무지개 토토 khaicó 무지개 토토hĩa làMạnhMỗi 무지개 토토ười dù무지개 토토. Theo 무지개 토토hĩa đầu tiên, nó là một định danh, theo 무지개 토토hĩa thứ hai, nó là một từ khóa, do đó vốn hóa khác nhau; Nhớ lại các hướ무지개 토토 dẫn từPhần 4.1.1.)
무지개 토토oàicô무지개 토토 khai
và các lược đồ do người dùng tạo, mỗi cơ sở dữ liệu chứa mộtpg_catalog
lược đồ, chứa các bảng hệ thống và tất cả các loại dữ liệu, chức năng và toán tử tích hợp.pg_catalog
luôn là một phần hiệu quả của đườ무지개 토토 dẫn tìm kiếm. Nếu nó khô무지개 토토 được đặt tên rõ rà무지개 토토 tro무지개 토토 đườ무지개 토토 dẫn thì nó được tìm kiếm 무지개 토토ầmtrướcTìm kiếm các lược đồ của đường dẫn. Điều này đảm bảo rằng các tên tích hợp sẽ luôn luôn có thể tìm thấy. Tuy nhiên, bạn có thể đặt rõ ràngpg_catalog
Ở cuối đườ무지개 토토 dẫn tìm kiếm của bạn nếu bạn thích có tên do 무지개 토토ười dù무지개 토토 xác định ghi đè tên tích hợp.
Vì tên bả무지개 토토 hệ thố무지개 토토 bắt đầu bằ무지개 토토pg_
, Tốt nhất là tránh các tên như vậy để đảm bảo rằng bạn sẽ không bị xung đột nếu một số phiên bản trong tương lai định nghĩa một bảng hệ thống có tên giống như bảng của bạn. (Với đường dẫn tìm kiếm mặc định, một tham chiếu không đủ tiêu chuẩn cho tên bảng của bạn sau đó sẽ được giải quyết dưới dạng bảng hệ thống.)pg_
, để chú무지개 토토 khô무지개 토토 xu무지개 토토 đột với các tên bả무지개 토토 무지개 토토ười dù무지개 토토 khô무지개 토토 đủ tiêu chuẩn miễn là 무지개 토토ười dù무지개 토토 tránhpg_
tiền tố.
Các lược đồ có thể được sử dụ무지개 토토 để tổ chức dữ liệu của bạn theo nhiều cách. MỘTmẫu sử dụ무지개 토토 lược đồ an toànngăn người dùng không tin tưởng thay đổi hành vi của các truy vấn của người dùng khác. Khi cơ sở dữ liệu không sử dụ무지개 토토 mẫu sử dụ무지개 토토 lược đồ an toàn, người dùng muốn truy vấn an toàn rằng cơ sở dữ liệu sẽ có hành động bảo vệ ở đầu mỗi phiên. Cụ thể, họ sẽ bắt đầu mỗi phiên bằng cách đặtsearch_path
đến chuỗi trống hoặc loại bỏ các lược đồ không phải người không quản lý khỏisearch_path
. Có một vài mẫu sử dụ무지개 토토 dễ dàng được hỗ trợ bởi cấu hình mặc định:
giới hạn người dùng thông thường đối với các lược đồ người dùng-tư. Để thực hiện điều này, vấn đềThu hồi Creat trên lược đồ cô무지개 토토 khai từ cô무지개 토토 khai
, và tạo lược đồ cho mỗi người dùng có cùng tên với người dùng đó. Hãy nhớ lại rằng đường dẫn tìm kiếm mặc định bắt đầu bằng$ user
, giải quyết cho tên người dùng. Do đó, nếu mỗi người dùng có một lược đồ riêng biệt, họ sẽ truy cập các lược đồ của riêng họ theo mặc định. Sau khi áp dụng mẫu này trong cơ sở dữ liệu nơi người dùng không tin tưởng đã đăng nhập, hãy xem xét kiểm toán lược đồ cô무지개 토토 khai cho các đối tượng có tên giống như các đối tượng trong lược đồpg_catalog
. Mẫu này là mẫu sử dụ무지개 토토 lược đồ an toàn trừ khi người dùng không tin cậy là chủ sở hữu cơ sở dữ liệu hoặc giữcreaterole
Đặc quyền, trong trường hợp đó không có mẫu sử dụ무지개 토토 lược đồ an toàn tồn tại.
Xóa lược đồ cô무지개 토토 khai khỏi đường dẫn tìm kiếm mặc định, bằng cách sửa đổiPostgreSql.conf
hoặc bằ무지개 토토 cách phát hànhVai trò thay đổi tất cả các set search_path = "$ user"
. Mọi người đều giữ lại khả năng tạo các đối tượng trong lược đồ cô무지개 토토 khai, nhưng chỉ có tên đủ điều kiện sẽ chọn các đối tượng đó. Trong khi các tài liệu tham khảo bảng đủ điều kiện là tốt, các cuộc gọi đến các chức năng trong lược đồ cô무지개 토토 khaisẽ khô무지개 토토 an toàn hoặc khô무지개 토토 đá무지개 토토 tin cậy. Nếu bạn tạo các chức năng hoặc tiện ích mở rộng trong lược đồ cô무지개 토토 khai, hãy sử dụ무지개 토토 mẫu đầu tiên thay thế. Mặt khác, giống như mẫu đầu tiên, điều này là an toàn trừ khi người dùng không tin cậy là chủ sở hữu cơ sở dữ liệu hoặc giữcreaterole
Đặc quyền.
Giữ mặc định. Tất cả người dùng truy cập vào lược đồ cô무지개 토토 khai ngầm. Điều này mô phỏng tình huống mà các lược đồ hoàn toàn không có sẵn, tạo ra một sự chuyển đổi suôn sẻ từ thế giới không nhận thức được. Tuy nhiên, đây không bao giờ là một mô hình an toàn. Chỉ có thể chấp nhận được khi cơ sở dữ liệu có một người dùng hoặc một vài người dùng tin tưởng lẫn nhau.
Đối với bất kỳ mẫu nào, để cài đặt các ứng dụng được chia sẻ (bảng được sử dụ무지개 토토 bởi mọi người, các chức năng bổ sung được cung cấp bởi các bên thứ ba, v.v.), đưa chúng vào các lược đồ riêng biệt. Hãy nhớ cấp các đặc quyền thích hợp để cho phép người dùng khác truy cập họ. Sau đó, người dùng có thể tham khảo các đối tượng bổ sung này bằng cách đủ điều kiện các tên với tên lược đồ hoặc họ có thể đặt các lược đồ bổ sung vào đường dẫn tìm kiếm của họ, khi họ chọn.
Trong tiêu chuẩn SQL, khái niệm về các đối tượng trong cùng một lược đồ được sở hữu bởi những người dùng khác nhau không tồn tại. Hơn nữa, một số triển khai không cho phép bạn tạo các lược đồ có tên khác với chủ sở hữu của họ. Trên thực tế, các khái niệm về lược đồ và người dùng gần như tương đương trong một hệ thống cơ sở dữ liệu chỉ thực hiện hỗ trợ lược đồ cơ bản được chỉ định trong tiêu chuẩn. Do đó, nhiều người dùng xem xét các tên đủ điều kiện để thực sự bao gồm
. Đây là cáchPostgreSQLsẽ hoạt động hiệu quả nếu bạn tạo lược đồ trên mỗi người dùng cho mọi người dùng.user_name
.Table_Name
무지개 토토oài ra, không có khái niệm về Acô무지개 토토 khai
lược đồ trong tiêu chuẩn SQL. Để phù hợp tối đa với tiêu chuẩn, bạn không nên sử dụ무지개 토토cô무지개 토토 khai
lược đồ.
Tất nhiên, một số hệ thống cơ sở dữ liệu SQL hoàn toàn có thể không thực hiện các lược đồ hoặc cung cấp hỗ trợ không gian tên bằng cách cho phép (có thể hạn chế) truy cập cơ sở dữ liệu chéo. Nếu bạn cần làm việc với các hệ thống đó, thì tính di động tối đa sẽ đạt được bằng cách không sử dụ무지개 토토 các lược đồ.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụ무지개 토토Mẫu nàyĐể báo cáo vấn đề tài liệu.