diff --git a/backend/windmill-api-settings/src/lib.rs b/backend/windmill-api-settings/src/lib.rs index 3166e31bbc..e64ca86ea8 100644 --- a/backend/windmill-api-settings/src/lib.rs +++ b/backend/windmill-api-settings/src/lib.rs @@ -972,8 +972,7 @@ async fn setup_custom_instance_pg_database_inner( GRANT CREATE ON DATABASE \"{dbname}\" TO custom_instance_user; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO custom_instance_user; - ALTER ROLE custom_instance_user CREATEROLE; - ALTER ROLE custom_instance_user REPLICATION;" + ALTER ROLE custom_instance_user CREATEROLE;" )) .await .map_err(|e| { @@ -982,6 +981,14 @@ async fn setup_custom_instance_pg_database_inner( e.to_string(), )) })?; + + if let Err(e) = client + .batch_execute(&format!("ALTER ROLE custom_instance_user REPLICATION;")) + .await + { + tracing::error!("Failed to grant replication permission to custom_instance_user: {e:#}"); + } + logs.grant_permissions = "OK".to_string(); drop(client); // /!\ Drop before joining to avoid deadlock diff --git a/backend/windmill-store/src/resources.rs b/backend/windmill-store/src/resources.rs index 9d0cad1717..ef1602062a 100644 --- a/backend/windmill-store/src/resources.rs +++ b/backend/windmill-store/src/resources.rs @@ -42,10 +42,7 @@ use windmill_common::{ db::{DbWithOptAuthed, UserDB}, error::{self, Error, JsonResult, Result}, get_database_url, - utils::{ - get_custom_pg_instance_password, not_found_if_none, paginate, require_admin, Pagination, - StripPath, - }, + utils::{not_found_if_none, paginate, require_admin, Pagination, StripPath}, variables, worker::{CLOUD_HOSTED, WINDMILL_DIR}, PgDatabase, @@ -504,12 +501,9 @@ pub async fn get_resource_value_interpolated_internal<'a>( ) -> Result> { // This is a special syntax to help debugging custom instance databases if let Some(dbname) = path.strip_prefix("CUSTOM_INSTANCE_DB/") { - let db = db_with_opt_authed.db(); require_super_admin(db_with_opt_authed.db(), &db_with_opt_authed.email()).await?; let mut pg_creds = PgDatabase::parse_uri(&get_database_url().await?.as_str().await)?; pg_creds.dbname = dbname.to_string(); - pg_creds.password = Some(get_custom_pg_instance_password(&db).await?); - pg_creds.user = Some("custom_instance_user".to_string()); let pg_creds = serde_json::to_value(&pg_creds) .map_err(|e| Error::internal_err(format!("Error serializing pg creds: {}", e)))?; return Ok(Some(pg_creds)); diff --git a/frontend/src/lib/components/workspaceSettings/CustomInstanceDbWizardModal.svelte b/frontend/src/lib/components/workspaceSettings/CustomInstanceDbWizardModal.svelte index 12338a4bae..c2e608e759 100644 --- a/frontend/src/lib/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +++ b/frontend/src/lib/components/workspaceSettings/CustomInstanceDbWizardModal.svelte @@ -134,8 +134,7 @@ `GRANT CREATE ON DATABASE "${dbname}" TO custom_instance_user;\n` + 'ALTER DEFAULT PRIVILEGES IN SCHEMA public \n' + ' GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES\n TO custom_instance_user;\n' + - 'ALTER ROLE custom_instance_user CREATEROLE;\n' + - 'ALTER ROLE custom_instance_user REPLICATION;' + 'ALTER ROLE custom_instance_user CREATEROLE;' } ], status?.error ?? undefined