[{"data":1,"prerenderedAt":708},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fconnections\u002Fpostgresql-server":3},{"id":4,"title":5,"body":6,"description":699,"extension":700,"meta":701,"navigation":702,"path":703,"redirect":704,"seo":705,"stem":706,"__hash__":707},"docs\u002Fdocs\u002Fconnections\u002Fpostgresql-server.md","PostgreSQL Server Configuration",{"type":7,"value":8,"toc":688},"minimark",[9,13,17,20,33,36,39,54,62,67,70,88,92,95,115,138,141,145,148,156,160,263,266,443,447,450,453,480,483,508,513,517,520,529,536,544,547,594,598,601,615,620,624,627,660,664,684],[10,11,5],"h1",{"id":12},"postgresql-server-configuration",[14,15,16],"p",{},"Use this page for self-managed PostgreSQL deployments that DBConvert Streams connects to directly.",[14,18,19],{},"It covers the base setup for:",[21,22,23,27,30],"ul",{},[24,25,26],"li",{},"Load workflows",[24,28,29],{},"Data Explorer and SQL Console access",[24,31,32],{},"PostgreSQL CDC source preparation",[14,34,35],{},"For current support boundaries, see the product introduction page.",[14,37,38],{},"For managed cloud databases, use the provider-specific guide instead:",[21,40,41,48],{},[24,42,43],{},[44,45,47],"a",{"href":46},"\u002Fdocs\u002Fconnections\u002Fgoogle-cloud-sql","Google Cloud SQL",[24,49,50],{},[44,51,53],{"href":52},"\u002Fdocs\u002Fconnections\u002Fazure-database-configuration","Azure Database",[14,55,56,57,61],{},"For CDC replication settings, see ",[44,58,60],{"href":59},"\u002Fdocs\u002Fintegration\u002Fpostgres-cdc-source-configuration","PostgreSQL CDC Source Configuration",".",[63,64,66],"h2",{"id":65},"server-requirements","Server requirements",[14,68,69],{},"Use a PostgreSQL instance that is reachable from the DBConvert Streams deployment and prepared with:",[21,71,72,79,82,85],{},[24,73,74,75],{},"a hostname or IP address reachable over port ",[76,77,78],"code",{},"5432",[24,80,81],{},"a database user with the required read or replication privileges",[24,83,84],{},"remote access and firewall rules configured",[24,86,87],{},"SSL\u002FTLS when the environment requires encrypted transport",[63,89,91],{"id":90},"minimum-privileges","Minimum privileges",[14,93,94],{},"The required access depends on the workflow:",[21,96,97,104,110],{},[24,98,99,100,103],{},"Load: ",[76,101,102],{},"SELECT"," on the source tables",[24,105,106,107,109],{},"Explorer and SQL Console: ",[76,108,102],{}," on the objects you need to inspect",[24,111,112,113],{},"CDC mode: logical replication prerequisites plus the permissions documented in ",[44,114,60],{"href":59},[116,117,122],"pre",{"className":118,"code":119,"language":120,"meta":121,"style":121},"language-sql shiki shiki-themes github-light github-dark","GRANT USAGE ON SCHEMA schema_name TO \"user\";\nGRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO \"user\";\n","sql","",[76,123,124,132],{"__ignoreMap":121},[125,126,129],"span",{"class":127,"line":128},"line",1,[125,130,131],{},"GRANT USAGE ON SCHEMA schema_name TO \"user\";\n",[125,133,135],{"class":127,"line":134},2,[125,136,137],{},"GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO \"user\";\n",[14,139,140],{},"If you create new tables after the initial grant, update default privileges as needed.",[63,142,144],{"id":143},"schema-scope","Schema scope",[14,146,147],{},"PostgreSQL source workflows often use multiple schemas. DBConvert Streams can discover and select tables across schemas when the connection user can see them.",[14,149,150,151,155],{},"Use ",[44,152,154],{"href":153},"\u002Fdocs\u002Fstreams\u002Fschema-selection-guide","Schema Selection Guide"," for how auto-discovery and explicit table selection work in stream configuration.",[63,157,159],{"id":158},"connection-configuration","Connection configuration",[161,162,163,179],"table",{},[164,165,166],"thead",{},[167,168,169,173,176],"tr",{},[170,171,172],"th",{},"Setting",[170,174,175],{},"Default",[170,177,178],{},"Description",[180,181,182,193,205,215,225,235,248],"tbody",{},[167,183,184,188,190],{},[185,186,187],"td",{},"Host",[185,189],{},[185,191,192],{},"PostgreSQL server hostname or IP",[167,194,195,198,202],{},[185,196,197],{},"Port",[185,199,200],{},[76,201,78],{},[185,203,204],{},"PostgreSQL listener port",[167,206,207,210,212],{},[185,208,209],{},"Username",[185,211],{},[185,213,214],{},"Database user",[167,216,217,220,222],{},[185,218,219],{},"Password",[185,221],{},[185,223,224],{},"Database password",[167,226,227,230,232],{},[185,228,229],{},"Database",[185,231],{},[185,233,234],{},"Target database",[167,236,237,240,245],{},[185,238,239],{},"Schema",[185,241,242],{},[76,243,244],{},"public",[185,246,247],{},"Default schema context",[167,249,250,253,256],{},[185,251,252],{},"SSL\u002FTLS",[185,254,255],{},"disable",[185,257,258,259],{},"See ",[44,260,262],{"href":261},"\u002Fdocs\u002Fnetwork-security\u002Fssl-configuration","SSL Configuration",[14,264,265],{},"Example connection payload:",[116,267,271],{"className":268,"code":269,"language":270,"meta":121,"style":121},"language-json shiki shiki-themes github-light github-dark","{\n  \"name\": \"postgresql-source\",\n  \"type\": \"postgresql\",\n  \"host\": \"your-postgresql-server\",\n  \"port\": 5432,\n  \"username\": \"your_user\",\n  \"password\": \"your_password\",\n  \"database\": \"your_database\",\n  \"ssl\": {\n    \"mode\": \"verify-ca\",\n    \"ca\": \"\u002Fpath\u002Fto\u002Fca.pem\",\n    \"cert\": \"\u002Fpath\u002Fto\u002Fclient-cert.pem\",\n    \"key\": \"\u002Fpath\u002Fto\u002Fclient-key.pem\"\n  }\n}\n","json",[76,272,273,279,295,308,321,333,346,359,372,381,394,407,420,431,437],{"__ignoreMap":121},[125,274,275],{"class":127,"line":128},[125,276,278],{"class":277},"sVt8B","{\n",[125,280,281,285,288,292],{"class":127,"line":134},[125,282,284],{"class":283},"sj4cs","  \"name\"",[125,286,287],{"class":277},": ",[125,289,291],{"class":290},"sZZnC","\"postgresql-source\"",[125,293,294],{"class":277},",\n",[125,296,298,301,303,306],{"class":127,"line":297},3,[125,299,300],{"class":283},"  \"type\"",[125,302,287],{"class":277},[125,304,305],{"class":290},"\"postgresql\"",[125,307,294],{"class":277},[125,309,311,314,316,319],{"class":127,"line":310},4,[125,312,313],{"class":283},"  \"host\"",[125,315,287],{"class":277},[125,317,318],{"class":290},"\"your-postgresql-server\"",[125,320,294],{"class":277},[125,322,324,327,329,331],{"class":127,"line":323},5,[125,325,326],{"class":283},"  \"port\"",[125,328,287],{"class":277},[125,330,78],{"class":283},[125,332,294],{"class":277},[125,334,336,339,341,344],{"class":127,"line":335},6,[125,337,338],{"class":283},"  \"username\"",[125,340,287],{"class":277},[125,342,343],{"class":290},"\"your_user\"",[125,345,294],{"class":277},[125,347,349,352,354,357],{"class":127,"line":348},7,[125,350,351],{"class":283},"  \"password\"",[125,353,287],{"class":277},[125,355,356],{"class":290},"\"your_password\"",[125,358,294],{"class":277},[125,360,362,365,367,370],{"class":127,"line":361},8,[125,363,364],{"class":283},"  \"database\"",[125,366,287],{"class":277},[125,368,369],{"class":290},"\"your_database\"",[125,371,294],{"class":277},[125,373,375,378],{"class":127,"line":374},9,[125,376,377],{"class":283},"  \"ssl\"",[125,379,380],{"class":277},": {\n",[125,382,384,387,389,392],{"class":127,"line":383},10,[125,385,386],{"class":283},"    \"mode\"",[125,388,287],{"class":277},[125,390,391],{"class":290},"\"verify-ca\"",[125,393,294],{"class":277},[125,395,397,400,402,405],{"class":127,"line":396},11,[125,398,399],{"class":283},"    \"ca\"",[125,401,287],{"class":277},[125,403,404],{"class":290},"\"\u002Fpath\u002Fto\u002Fca.pem\"",[125,406,294],{"class":277},[125,408,410,413,415,418],{"class":127,"line":409},12,[125,411,412],{"class":283},"    \"cert\"",[125,414,287],{"class":277},[125,416,417],{"class":290},"\"\u002Fpath\u002Fto\u002Fclient-cert.pem\"",[125,419,294],{"class":277},[125,421,423,426,428],{"class":127,"line":422},13,[125,424,425],{"class":283},"    \"key\"",[125,427,287],{"class":277},[125,429,430],{"class":290},"\"\u002Fpath\u002Fto\u002Fclient-key.pem\"\n",[125,432,434],{"class":127,"line":433},14,[125,435,436],{"class":277},"  }\n",[125,438,440],{"class":127,"line":439},15,[125,441,442],{"class":277},"}\n",[63,444,446],{"id":445},"ssltls-security","SSL\u002FTLS security",[14,448,449],{},"SSL\u002FTLS is optional. Use it when your environment requires encrypted transport or certificate validation — typically production deployments, cloud-hosted databases, or connections over public networks.",[14,451,452],{},"Example server settings:",[116,454,458],{"className":455,"code":456,"language":457,"meta":121,"style":121},"language-ini shiki shiki-themes github-light github-dark","ssl = on\nssl_cert_file = '\u002Fpath\u002Fto\u002Fserver-cert.pem'\nssl_key_file = '\u002Fpath\u002Fto\u002Fserver-key.pem'\nssl_ca_file = '\u002Fpath\u002Fto\u002Fca.pem'\n","ini",[76,459,460,465,470,475],{"__ignoreMap":121},[125,461,462],{"class":127,"line":128},[125,463,464],{},"ssl = on\n",[125,466,467],{"class":127,"line":134},[125,468,469],{},"ssl_cert_file = '\u002Fpath\u002Fto\u002Fserver-cert.pem'\n",[125,471,472],{"class":127,"line":297},[125,473,474],{},"ssl_key_file = '\u002Fpath\u002Fto\u002Fserver-key.pem'\n",[125,476,477],{"class":127,"line":310},[125,478,479],{},"ssl_ca_file = '\u002Fpath\u002Fto\u002Fca.pem'\n",[14,481,482],{},"Common SSL modes:",[21,484,485,490,496,502],{},[24,486,487,489],{},[76,488,255],{},": No SSL",[24,491,492,495],{},[76,493,494],{},"require",": Always use SSL without verification",[24,497,498,501],{},[76,499,500],{},"verify-ca",": Verify the server certificate",[24,503,504,507],{},[76,505,506],{},"verify-full",": Verify the certificate and hostname",[14,509,510,511,61],{},"For certificate details, use ",[44,512,262],{"href":261},[63,514,516],{"id":515},"network-access","Network access",[14,518,519],{},"Enable remote listening if the server is not local to the deployment:",[116,521,523],{"className":455,"code":522,"language":457,"meta":121,"style":121},"listen_addresses = '*'\n",[76,524,525],{"__ignoreMap":121},[125,526,527],{"class":127,"line":128},[125,528,522],{},[14,530,531,532,535],{},"Allow the DBConvert Streams host in ",[76,533,534],{},"pg_hba.conf",":",[116,537,542],{"className":538,"code":540,"language":541,"meta":121},[539],"language-text","host    all    all    \u003CDBS-IP-ADDRESS>\u002F32    md5\n","text",[76,543,540],{"__ignoreMap":121},[14,545,546],{},"Example firewall rule:",[116,548,552],{"className":549,"code":550,"language":551,"meta":121,"style":121},"language-bash shiki shiki-themes github-light github-dark","sudo ufw allow from \u003CDBCONVERT_STREAMS_IP> to any port 5432\n","bash",[76,553,554],{"__ignoreMap":121},[125,555,556,560,563,566,569,573,576,579,582,585,588,591],{"class":127,"line":128},[125,557,559],{"class":558},"sScJk","sudo",[125,561,562],{"class":290}," ufw",[125,564,565],{"class":290}," allow",[125,567,568],{"class":290}," from",[125,570,572],{"class":571},"szBVR"," \u003C",[125,574,575],{"class":290},"DBCONVERT_STREAMS_I",[125,577,578],{"class":277},"P",[125,580,581],{"class":571},">",[125,583,584],{"class":290}," to",[125,586,587],{"class":290}," any",[125,589,590],{"class":290}," port",[125,592,593],{"class":283}," 5432\n",[63,595,597],{"id":596},"cdc-specific-preparation","CDC-specific preparation",[14,599,600],{},"CDC requires more than base connectivity. For PostgreSQL CDC source workflows, also confirm:",[21,602,603,606,609,612],{},[24,604,605],{},"logical replication is enabled",[24,607,608],{},"WAL settings and replication capacity are sufficient",[24,610,611],{},"the selected user has the required privileges",[24,613,614],{},"replication slots and publication details are configured as required by the workflow",[14,616,150,617,619],{},[44,618,60],{"href":59}," for the detailed sequence.",[63,621,623],{"id":622},"validation-checklist","Validation checklist",[14,625,626],{},"Before creating a stream:",[628,629,630,643,649,657],"ol",{},[24,631,632,633,637,638,642],{},"Test the connection from the ",[44,634,636],{"href":635},"\u002Fdocs\u002Fdatabase-explorer\u002F","Data Explorer"," sidebar (right-click → ",[639,640,641],"strong",{},"Test connection",") or from the connection editor.",[24,644,645,646,648],{},"Open the connection in ",[44,647,636],{"href":635}," to confirm visible schemas and tables.",[24,650,651,652,656],{},"Run a simple query in the ",[44,653,655],{"href":654},"\u002Fdocs\u002Fdatabase-explorer\u002Fsql-console","SQL Console"," if you need to verify permissions or row filters.",[24,658,659],{},"Create the stream only after the source scope looks correct.",[63,661,663],{"id":662},"related-docs","Related docs",[21,665,666,672,676,680],{},[24,667,668],{},[44,669,671],{"href":670},"\u002Fdocs\u002Fconnections\u002Fconnection-management","Connection Management",[24,673,674],{},[44,675,154],{"href":153},[24,677,678],{},[44,679,60],{"href":59},[24,681,682],{},[44,683,262],{"href":261},[685,686,687],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":121,"searchDepth":134,"depth":134,"links":689},[690,691,692,693,694,695,696,697,698],{"id":65,"depth":134,"text":66},{"id":90,"depth":134,"text":91},{"id":143,"depth":134,"text":144},{"id":158,"depth":134,"text":159},{"id":445,"depth":134,"text":446},{"id":515,"depth":134,"text":516},{"id":596,"depth":134,"text":597},{"id":622,"depth":134,"text":623},{"id":662,"depth":134,"text":663},"Configure self-managed PostgreSQL servers for Load, Explorer, and PostgreSQL CDC workflows in DBConvert Streams.","md",{},false,"\u002Fdocs\u002Fconnections\u002Fpostgresql-server",null,{"title":5,"description":699},"docs\u002Fconnections\u002Fpostgresql-server","HOP7HDCCaspsFE34UgMeADgT-OBSexTh4zT-LaZPwYA",1783896284370]