이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 5.10. 와이즈 토토버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

5.9. 스포츠 토토 사이트

apostgresql데이터베이스 클러스터에는 하나 이상의 명명 된 데이터베이스가 포함되어 있습니다. 역할과 몇 가지 다른 객체 유형은 전체 클러스터에서 공유됩니다. 서버에 대한 클라이언트 연결은 단일 데이터베이스에서 데이터에만 액세스 할 수 있으며 연결 요청에 지정된 것입니다.

note

클러스터 사용자가 클러스터의 모든 데이터베이스에 액세스 할 수있는 권한이있는 것은 아닙니다. 역할 이름을 공유한다는 것은 다른 역할이 없음을 의미합니다.Joe동일한 클러스터의 두 데이터베이스에서; 그러나 시스템은 허용하도록 구성 될 수 있습니다Joe일부 데이터베이스에만 액세스하십시오.

데이터베이스에는 하나 이상의 이름이 포함되어 있습니다스포츠 토토 사이트,이 테이블이 포함되어 있습니다. Schemas에는 데이터 유형, 기능 및 연산자를 포함하여 다른 종류의 명명 된 객체도 포함되어 있습니다. 동일한 개체 이름은 충돌없이 다른 스포츠 토토 사이트에서 사용할 수 있습니다. 예를 들어, 둘 다Schema1andmyschema이름이 지정된 테이블을 포함 할 수 있습니다mytable. 데이터베이스와 달리 Schemas는 엄격하게 분리되지 않습니다. 사용자는 연결된 데이터베이스의 스포츠 토토 사이트에서 객체에 액세스 할 수 있습니다..

스포츠 토토 사이트를 사용하려는 몇 가지 이유가 있습니다 :

  • 많은 사용자가 서로 방해하지 않고 하나의 데이터베이스를 사용할 수 있도록합니다.

  • 데이터베이스 개체를 논리 그룹으로 구성하여 더 관리하기 쉽게 만들기 위해.

  • 타사 응용 프로그램은 다른 개체의 이름과 충돌하지 않도록 별도의 스포츠 토토 사이트에 넣을 수 있습니다.

스포츠 토토 사이트는 스포츠 토토 사이트를 중첩 할 수 없다는 점을 제외하고 운영 체제 수준의 디렉토리와 유사합니다.

5.9.1. 스포츠 토토 사이트 생성

스포츠 토토 사이트를 만들려면를 사용하십시오.스포츠 토토 사이트 생성명령. 스포츠 토토 사이트에 선택한 이름을 부여하십시오. 예를 들어:

스포츠 토토 사이트 생성 myschema;

스포츠 토토 사이트에서 개체를 작성하거나 액세스하려면 a 쓰기적격 이름스포츠 토토 사이트 이름과 테이블 이름으로 구성되어 있습니다.

스포츠 토토 사이트.테이블

테이블 수정 명령 및 다음 장에서 논의 된 데이터 액세스 명령을 포함하여 테이블 이름이 예상되는 곳에서는 작동합니다. (Brevity를 위해 우리는 테이블에 대해서만 말할 것이지만, 같은 아이디어는 유형 및 기능과 같은 다른 종류의 명명 된 객체에 적용됩니다.)

실제로 더 일반적인 구문

데이터베이스.스포츠 토토 사이트.테이블

도 사용할 수 있지만 현재는입니다.Pro FormaSQL 표준 준수. 데이터베이스 이름을 작성하는 경우 연결된 데이터베이스와 동일해야합니다.

새 스포츠 토토 사이트에서 테이블을 만들려면 다음을 사용합니다.

테이블 작성 myschema.mytable (
 ...
);

비어있는 경우 스포츠 토토 사이트를 삭제하려면 (모든 개체가 삭제 되었음) 사용 :

15511_15536

포함 된 모든 객체를 포함하여 스포츠 토토 사이트를 삭제하려면 사용 :

스포츠 토토 사이트 DROP SCHEMA MYSCHEMA CASCADE;

참조PostgreSQL : 문서 : 12 : 5.14.사설 토토 사이트 추적이 뒤에있는 일반적인 메커니즘에 대한 설명.

종종 다른 사람이 소유 한 스포츠 토토 사이트를 만들고 싶을 것입니다 (이것은 사용자의 활동을 잘 정의 된 네임 스페이스로 제한하는 방법 중 하나이므로). 그것의 구문은 다음과 같습니다.

스포츠 토토 사이트 만들기Schema_Name승인user_name;

스포츠 토토 사이트 이름을 생략 할 수도 있습니다.이 경우 스포츠 토토 사이트 이름은 사용자 이름과 동일합니다. 보다섹션 5.9.6이것이 유용 할 수있는 방법.

스포츠 토토 사이트 이름으로 시작하는PG_시스템 목적으로 예약되어 있으며 사용자가 생성 할 수 없습니다.

5.9.2. 공공 스포츠 토토 사이트

이전 섹션에서는 스포츠 토토 사이트 이름을 지정하지 않고 테이블을 만들었습니다. 기본적으로 이러한 테이블 (및 기타 개체)은이라는 스포츠 토토 사이트에 자동으로 표시됩니다.public. 모든 새로운 데이터베이스에는 이러한 스포츠 토토 사이트가 포함되어 있습니다. 따라서 다음은 동일합니다.

테이블 제품 생성 (...);

및 :

테이블 생성 public.products (...);

5.9.3. 스포츠 토토 사이트 검색 경로

자격을 갖춘 이름은 쓰기가 지루하며, 어쨌든 특정 스포츠 토토 사이트 이름을 응용 프로그램으로 연결하지 않는 것이 가장 좋습니다. 따라서 테이블은 종종에 의해 언급됩니다.자격이없는 이름,이 테이블 이름으로 구성됩니다. 시스템은 a를 따르는 것이 어떤 테이블을 의미하는지 결정합니다.검색 경로, 이는 검색 경로의 첫 번째 일치 테이블이 원하는 것으로 간주됩니다. 검색 경로에 일치하지 않으면 데이터베이스의 다른 스포츠 토토 사이트에 테이블 이름이 일치하는 경우에도 오류 가보고됩니다.

다른 Schemas에서 이름처럼 이름이 지정된 객체를 만들 수있는 기능은 매번 동일한 개체를 정확하게 참조하는 쿼리를 작성합니다. 또한 사용자가 악의적으로 또는 우연히 다른 사용자의 쿼리의 동작을 변경할 수있는 잠재력을 열어줍니다. 쿼리에서 자격이없는 이름의 유병률과 그에 대한 사용으로 인해PostgreSQL내부, 스포츠 토토 사이트 추가search_path모든 사용자를 효과적으로 신뢰하는Create해당 스포츠 토토 사이트의 권한. 일반 쿼리를 실행하면 검색 경로 스포츠 토토 사이트에서 객체를 생성 할 수있는 악의적 인 사용자가 제어하고 임의의 SQL 기능을 실행 한 것처럼 실행할 수 있습니다..

검색 경로에서 명명 된 첫 번째 스포츠 토토 사이트를 현재 스포츠 토토 사이트라고합니다. 첫 번째 스포츠 토토 사이트 검색 외에도이면 새 테이블이 생성되는 스포츠 토토 사이트이기도합니다.테이블 생성명령은 스포츠 토토 사이트 이름을 지정하지 않습니다.

현재 검색 경로를 표시하려면 다음 명령을 사용하십시오.

show search_path;

기본 설정 에서이 반환이 반환됩니다 :

search_path
--------------
 "$ user", public

첫 번째 요소는 현재 사용자와 동일한 이름을 가진 스포츠 토토 사이트를 검색 할 것을 지정합니다. 그러한 스포츠 토토 사이트가 존재하지 않으면 항목이 무시됩니다. 두 번째 요소는 우리가 이미 본 공개 스포츠 토토 사이트를 말합니다.

존재하는 검색 경로의 첫 번째 스포츠 토토 사이트는 새 개체를 만드는 기본 위치입니다. 그렇기 때문에 기본적으로 객체가 공개 스포츠 토토 사이트에서 생성되는 이유입니다. 스포츠 토토 사이트 자격이없는 다른 컨텍스트에서 객체가 참조되면 (테이블 수정, 데이터 수정 또는 쿼리 명령) 일치하는 객체가 발견 될 때까지 검색 경로가 통과됩니다. 따라서 기본 구성에서 자격이없는 액세스는 다시 공개 스포츠 토토 사이트 만 참조 할 수 있습니다.

새로운 스포츠 토토 사이트를 경로에 넣으려면 다음을 사용합니다.

Search_Path를 MySchema, public;에 설정하십시오.

(우리는 생략$ user여기에 즉각적인 필요가 없기 때문에 여기에 있습니다.) 그런 다음 스포츠 토토 사이트 자격없이 테이블에 액세스 할 수 있습니다.

드롭 테이블 mytable;

이후myschema경로에서 첫 번째 요소이며, 새로운 객체가 기본적으로 생성 될 것입니다.

우리는 또한 다음과 같이 썼을 수도 있습니다.

search_path를 myschema로 설정하십시오;

그러면 더 이상 명시 적 자격없이 공개 스포츠 토토 사이트에 액세스 할 수 없습니다. 기본적으로 존재한다는 것을 제외하고는 공개 스포츠 토토 사이트에 대해 특별한 것이 없습니다. 도착할 수 있습니다.

참조사설 토토 사이트 PostgreSQL : 문서 : 12 : 9.25. 시스템 정보 기능 및 운영자스포츠 토토 사이트 검색 경로를 조작하는 다른 방법.

검색 경로는 테이블 이름과 마찬가지로 데이터 유형 이름, 기능 이름 및 연산자 이름과 동일한 방식으로 작동합니다. 데이터 유형 및 기능 이름은 테이블 이름과 정확히 동일한 방식으로 자격을 얻을 수 있습니다. 표현식에 자격을 갖춘 운영자 이름을 작성 해야하는 경우 특별 조항이 있습니다. 작성해야합니다

연산자 (스포츠 토토 사이트.운영자)

이것은 구문 모호성을 피하기 위해 필요합니다. 예는 다음과 같습니다.

선택 3 연산자 (PG_CATALOG.+) 4;

실제로는 일반적으로 연산자의 검색 경로에 의존하여 그처럼 못 생겼지 않아야합니다.

5.9.4. 스포츠 토토 사이트 및 특권

기본적으로 사용자는 소유하지 않은 스포츠 토토 사이트의 객체에 액세스 할 수 없습니다. 이를 허용하기 위해 스포츠 토토 사이트의 소유자는를 부여해야합니다.usage스포츠 토토 사이트의 권한. 사용자가 스포츠 토토 사이트에서 객체를 사용할 수 있도록 추가 권한을 객체에 적합하게 부여해야 할 수도 있습니다.

사용자는 다른 사람의 스포츠 토토 사이트에서 객체를 만들 수 있습니다. 그것을 허용하기 위해,Create스포츠 토토 사이트의 권한을 부여해야합니다. 기본적으로 모든 사람이생성andusage스포츠 토토 사이트의 권한public. 이를 통해 주어진 데이터베이스에 연결할 수있는 모든 사용자가 객체를 생성 할 수 있습니다.공개스포츠 토토 사이트. 일부사용 패턴그 특권 취소를 요청하십시오 :

공개에서 스포츠 토토 사이트 대중에 대한 Revoke 만들기;

(첫 번째public스포츠 토토 사이트입니다. 두 번째는public평균모든 사용자. 첫 번째 의미에서, 그것은 식별자이며, 두 번째 의미에서 그것은 핵심 단어이므로 다른 대문자입니다. 의 지침을 상기섹션 4.1.1.)

5.9.5. 시스템 카탈로그 스포츠 토토 사이트

외에public및 사용자 제작 스포츠 토토 사이트, 각 데이터베이스는 A를 포함합니다.PG_CATALOG시스템 테이블과 모든 내장 데이터 유형, 기능 및 운영자가 포함 된 스포츠 토토 사이트PG_CATALOG는 항상 검색 경로의 일부입니다. 경로에서 명시 적으로 명명되지 않은 경우 암시 적으로 검색됩니다경로의 스포츠 토토 사이트 검색. 이렇게하면 내장 이름이 항상 찾을 수 있습니다. 그러나 명시 적으로 배치 할 수 있습니다PG_CATALOG검색 경로 끝에서 사용자 정의 이름이 내장 이름을 재정의하는 것을 선호하는 경우

시스템 테이블 이름이 시작되므로PG_, 일부 미래 버전에서 테이블과 동일 한 시스템 테이블을 정의하면 충돌을 겪지 않도록 그러한 이름을 피하는 것이 가장 좋습니다. (기본 검색 경로를 사용하면 테이블 이름에 대한 자격이없는 참조가 대신 시스템 테이블로 해결됩니다.) 시스템 테이블은로 시작하는 컨벤션을 계속 따릅니다.PG_, 사용자가 사용자가 피하는 한 자격이없는 사용자 테이블 이름과 충돌하지 않도록PG_prefix.

5.9.6. 사용 패턴

스포츠 토토 사이트를 사용하여 여러 가지 방법으로 데이터를 구성 할 수 있습니다. 에이보안 스포츠 토토 사이트 사용 패턴신뢰할 수없는 사용자가 다른 사용자의 쿼리의 동작을 변경하지 못하게합니다. 데이터베이스가 보안 스포츠 토토 사이트 사용 패턴을 사용하지 않으면 데이터베이스가 각 세션 시작시 보호 조치를 취할 수있는 사용자는 안전하게 쿼리하려고합니다. 구체적으로, 그들은 각 세션을 설정하여 시작합니다search_path빈 문자열에 또는 다른 방식으로 비 uperuser writable schemas를 제거하십시오search_path. 기본 구성에서 쉽게 지원되는 몇 가지 사용 패턴이 있습니다.

  • 일반 사용자를 사용자-민간 스포츠 토토 사이트로 제한합니다. 이것을 구현하려면 exsu공개에서 스포츠 토토 사이트 대중에 대한 창조, 해당 사용자와 동일한 이름을 가진 각 사용자에 대한 스포츠 토토 사이트를 만듭니다. 기본 검색 경로는로 시작한다는 것을 상기하십시오.$ user, 사용자 이름으로 해결됩니다. 따라서 각 사용자에게 별도의 스포츠 토토 사이트가있는 경우 기본적으로 자체 스포츠 토토 사이트에 액세스합니다. 신뢰할 수없는 사용자가 이미 로그인 한 데이터베이스 에서이 패턴을 채택한 후 스포츠 토토 사이트의 개체와 같은 객체에 대한 공개 스포츠 토토 사이트 감사를 고려하십시오PG_CATALOG. 이 패턴은 신뢰할 수없는 사용자가 데이터베이스 소유자이거나 보유하지 않는 한 보안 스포츠 토토 사이트 사용 패턴입니다.Createrole권한,이 경우 보안 스포츠 토토 사이트 사용 패턴이 존재하지 않습니다.

  • 수정하여 기본 검색 경로에서 공개 스포츠 토토 사이트 제거postgresql.conf또는 발행ALTER 역할 ALLET SETOR SEARCH_PATH = "$ USER". 모든 사람은 공개 스포츠 토토 사이트에서 객체를 만들 수있는 기능을 유지하지만 자격을 갖춘 이름 만 해당 객체를 선택합니다. 자격을 갖춘 테이블 참조는 괜찮지 만 공개 스포츠 토토 사이트의 기능에 대한 호출스포츠 토토 결과 42 |_1 |04. 공개 스포츠 토토 사이트에서 함수 또는 확장을 만드는 경우 첫 번째 패턴을 대신 사용하십시오. 그렇지 않으면, 첫 번째 패턴과 마찬가지로, 신뢰할 수없는 사용자가 데이터베이스 소유자이거나 보유하지 않는 한 이것은 안전합니다.Createrole특권.

  • 기본값을 유지하십시오. 모든 사용자는 공개 스포츠 토토 사이트에 암시 적으로 액세스합니다. 이것은 스포츠 토토 사이트를 전혀 사용할 수없는 상황을 시뮬레이션하여 비 스포츠 토토 사이트 인식 세계에서 원활한 전환을 제공합니다. 그러나 이것은 결코 안전한 패턴이 아닙니다. 데이터베이스에 단일 사용자 또는 상호 신뢰 사용자가 몇 명있는 경우에만 허용됩니다.

29136_29558

5.9.7. 이식성

SQL 표준에서는 다른 사용자가 소유 한 동일한 스포츠 토토 사이트의 개념이 존재하지 않습니다. 또한 일부 구현은 소유자와 다른 이름을 가진 스포츠 토토 사이트를 만들 수 없습니다. 실제로, 스포츠 토토 사이트 및 사용자의 개념은 표준에 지정된 기본 스포츠 토토 사이트 지원만을 구현하는 데이터베이스 시스템에서 거의 동일합니다. 따라서 많은 사용자가 자격을 갖춘 이름을 실제로 구성한다고 생각합니다.user_name.table_name. 이것은 방법입니다30396_30408모든 사용자에 대해 사용자 당 스포츠 토토 사이트를 생성하면 효과적으로 행동합니다.

또한 a의 개념은 없습니다.publicSQL 표준의 스포츠 토토 사이트. 표준에 대한 최대의 순응을 위해서는를 사용해서는 안됩니다.public스포츠 토토 사이트

물론 일부 SQL 데이터베이스 시스템은 Schemas를 전혀 구현하지 못하거나 (제한된) 교차-데이터베이스 액세스를 허용함으로써 네임 스페이스 지원을 제공 할 수 있습니다. 해당 시스템으로 작업 해야하는 경우 스포츠 토토 사이트를 전혀 사용하지 않음으로써 최대의 휴대 성을 달성합니다.