PostgreSQL 9 데이터베이스 (Oracle10g에서 마이그레이션)를 설치했는데 사용자/역할 관리에 의해 혼란스러워졌습니다. CREATE USER
또는 CREATE ROLE
과 같은 SQL 명령을 사용하여 새 사용자를 만들거나 Navicat 도구를 사용하여 만든 사용자는 모든 데이터베이스를 볼 수 있습니다. 그는 진짜로 그들을 연결할 수 있습니다! 테이블에서 데이터를 선택할 수는 없지만 테이블 개체와 시퀀스 등을 볼 수 있습니다. 연결 권한 부여를 취소하려했지만 아무런 효과가 없었습니다. 나는 새로운 사용자가 아무런 특권도없고 어떤 것도 볼 수 없다고 예상했다. 나는 그가 왜 할 수 있는지 정말로 모른다.왜 PostgreSQL의 새로운 사용자가 모든 데이터베이스에 연결할 수 있습니까?
답변
pg_hba.conf
파일을 수정해야 할 수도 있습니다. 기본적으로 로컬 설치는 권한 점검을 수행하지 않습니다.
http://www.postgresql.org/docs/9.2/static/sql-grant.html#SQL-GRANT-DESCRIPTION-OBJECTS (강조 광산)에서 :
PostgreSQL을 부여 기본 권한 일부 개체 유형에 대한
PUBLIC
합니다. 표, 열, 스키마 또는 테이블 공간에는 기본적으로PUBLIC
에 대한 권한이 부여되지 않습니다. 다른 유형의 경우PUBLIC
에 부여 된 기본 권한은 데이터베이스의 경우CONNECT
및CREATE TEMP TABLE
이며, 함수에 대한EXECUTE
특권; 및 언어에 대한USAGE
특권. 개체 소유자는 물론REVOKE
기본 권한과 명시 적으로 부여 된 권한을 모두 가질 수 있습니다. 보안을 최대화하려면 개체를 만드는 동일한 트랜잭션에서REVOKE
을 실행하고 다른 사용자가 개체를 사용할 수있는 창이 없습니다. 또한 초기 기본값 권한 설정은 ALTER DEFAULT PRIVILEGES 명령을 사용하여 변경할 수 있습니다. 데이터베이스에있는 모든 지정되지 않은 사용자를 위해 (CONNECT
포함) 모든 권한을 제거하기 위해
는 사용도
REVOKE ALL PRIVILEGES ON DATABASE <database> FROM public;
참조 :
고맙습니다. "보안을 극대화하기 위해 개체를 만드는 동일한 트랜잭션에서 REVOKE를 실행하십시오. 다른 사용자가이 객체를 사용할 수있는 창은 없습니다 "- 좋은 조언처럼 들리지만 (인용문 오류 메시지)"CREATE DATABASE를 트랜잭션 블록 내에서 실행할 수 없기 때문에 데이터베이스에서 작동하지 않습니다. " 따라서 누군가가 새 데이터베이스를 사용할 수있는 창을 닫을 방법이 없습니까? – njlarsson
- 1. 데이터베이스에 어떻게 연결할 수 있습니까?
- 2. 데이터베이스에 연결할 수 없습니다
- 3. 데이터베이스에 연결할 수 없습니다.
- 4. 로컬 데이터베이스에 연결할 수 없습니다.
- 5. 스프링 배치의 데이터베이스에 어떻게 연결할 수 있습니까?
- 6. Magento를 기존 데이터베이스에 연결할 수 있습니까?
- 7. iTunes Connect 데이터베이스에 연결할 수 있습니까?
- 8. dapper를 사용하여 sqlite 데이터베이스에 연결할 수 있습니까?
- 9. 왜 SQL 데이터베이스에 연결할 수 없습니까? "소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다"
- 10. SQLite 데이터베이스에 연결할 수 없습니다.
- 11. PostgreSQL의 : 모든 테이블
- 12. 사용자가 없으므로 mysql에 연결할 수 없습니다
- 13. 원격 MySQL 데이터베이스에 연결할 수 없습니다.
- 14. 회원 자격으로 asp.net 데이터베이스에 연결할 수 없습니다.
- 15. 첨부 된 SQL 데이터베이스에 연결할 수 없습니다.
- 16. Ubb 포럼 오류 데이터베이스에 연결할 수 없습니다!
- 17. Linux 서버에서 sage와 같은 microsoft 데이터베이스에 연결할 수 있습니까?
- 18. localhost \ sqlserver를 사용하여 데이터베이스에 연결할 수 없습니다.
- 19. SQL Server 데이터베이스에 연결할 수 없습니다.
- 20. 새로운 젠드 컨트롤러/뷰에 연결할 수 없습니다.
- 21. 네트워크 드라이브의 데이터베이스에 연결할 수 없습니다.
- 22. Sql Server Express 데이터베이스에 연결할 수 없습니다.
- 23. 서블릿 cu mssql 데이터베이스에 연결할 수 없습니다
- 24. VBulletin이 MySQL 데이터베이스에 연결할 수 없습니다.
- 25. 데이터베이스에 연결할 수 없음 (OCIenVCreate 실패)
- 26. symfony를 사용하여 PostgreSQL 데이터베이스에 연결할 수 없습니다.
- 27. 파이썬 : 생산 "데이터베이스에 연결할 수 없습니다"
- 28. IIS에서 Drupal - 데이터베이스에 연결할 수 없습니다.
- 29. Java를 사용하여 웹 기반 Oracle 데이터베이스에 어떻게 연결할 수 있습니까?
- 30. erlang-mysql-driver를 사용하여 데이터베이스에 어떻게 연결할 수 있습니까?
CONNECT 특권을 어떻게 취소하려 했습니까? –
pgAdmin을 사용하는 경우 사용자의 로그인 역할과 권한을 볼 수 있습니다. 서버에서 로그인 역할을 확장하고 해당 로그인 역할을 마우스 오른쪽 버튼으로 클릭하고 역할 권한 및 역할 구성원을 선택하십시오. 그런 다음 해당 권한과 구성원 자격을 해당 DB 및 DB 개체와 대조하십시오. DB 또는 객체에 부여 된 역할이 있고 사용자의 로그인에 해당 역할이있는 경우 액세스가 설명됩니다. 사용자에게 "역할 권한"탭을 클릭 한 확인란이 있으면 다른 권한을 설명합니다. – atrain
그래서 pgAdmin을 시작하고 내 데이터베이스에서 역할 탭을 보았습니다 (데이터베이스를 마우스 오른쪽 단추로 클릭 한 다음 권한을 부여한 것). 내 모든 데이터베이스에 "공용"역할이 결합되었습니다. 그래서 나는 그것을 제거합니다. 그리고 지금 그것은 작동합니다! 내가 무서워서 고마워 .-) – veselej