Diese Seite enthält Informationen zum Erstellen, Auflisten und Löschen von PostgreSQL-Datenbanken auf einer Cloud SQL-Instanz.
Eine neu erstellte Instanz hat eine postgres
-Datenbank.
Vorbereitung
Bevor Sie die Aufgaben auf dieser Seite ausführen, müssen Sie:
- Erstellen Sie eine Cloud SQL-Instanz. Weitere Informationen finden Sie unter Instanzen erstellen.
Wenn Sie den psql-Client verwenden möchten, um Datenbanken zu erstellen oder zu verwalten, müssen Sie:
- Konfigurieren Sie den Zugriff auf die Instanz und stellen Sie mit einem
psql
-Client eine Verbindung zu dieser her. Weitere Informationen zu Verbindungsoptionen finden Sie unter Verbindungsoptionen für externe Anwendungen.
So erstellen Sie eine Datenbank in der Cloud SQL-Instanz:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
- Wählen Sie im SQL-Navigationsmenü die Option Datenbanken aus.
- Klicken Sie auf Datenbank erstellen.
- Geben Sie im Dialogfeld Neue Datenbank den Namen der Datenbank ein.
- Klicken Sie auf Erstellen.
Weitere Informationen finden Sie unter gcloud
sql databases create
.
gcloud sql databases createDATABASE_NAME \ --instance=INSTANCE_NAME
Verwenden Sie zum Erstellen einer Datenbank eine Terraform-Ressource.
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=
PROJECT_ID Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Änderungen löschen
So löschen Sie das Projekt:
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
Die folgende Anfrage verwendet die Methode databases:insert, um eine neue Datenbank auf der angegebenen Instanz zu erstellen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- database-name: der Name einer Datenbank in der Cloud SQL-Instanz
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases
JSON-Text anfordern:
{ "project": "project-id ", "instance": "instance-id ", "name": "database-name " }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Sie sollten in etwa folgende JSON-Antwort erhalten:
Antwort
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "CREATE_DATABASE", "name": "operation-id ", "targetId": "instance-id ", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ", "targetProject": "project-id " }
Die folgende Anfrage verwendet die Methode databases:insert, um eine neue Datenbank auf der angegebenen Instanz zu erstellen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- database-name: der Name einer Datenbank in der Cloud SQL-Instanz
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases
JSON-Text anfordern:
{ "project": "project-id ", "instance": "instance-id ", "name": "database-name " }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Sie sollten in etwa folgende JSON-Antwort erhalten:
Antwort
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "CREATE_DATABASE", "name": "operation-id ", "targetId": "instance-id ", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ", "targetProject": "project-id " }
Referenzinformationen finden Sie unter CREATE DATABASE in der PostgreSQL-Dokumentation.
In den folgenden Themen der PostgreSQL-Dokumentation finden Sie Hintergrundinformationen und eine Liste der unterstützten Zeichensatzwerte:
CREATE DATABASEdatabase_name [[ ENCODING encoding ][ LC_COLLATE lc_collate ]];
Beispiele: CREATE DATABASE "example_db" WITH OWNER "example_user"
ENCODING 'UTF8' LC_COLLATE = 'pl_PL.utf8' LC_CTYPE = 'pl_PL.utf8' TEMPLATE template0;
Datenbanken auflisten
So können Sie alle Datenbanken in einer Instanz auflisten lassen:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
- Klicken Sie im linken Menü auf Datenbanken. Auf der Seite Datenbanken werden Datenbanken mit ihrem Sortiertyp, Zeichensatz und Datenbanktyp aufgeführt.
Weitere Informationen finden Sie unter gcloud
sql databases list
.
gcloud sql databases list \ --instance=INSTANCE_NAME
Die folgende Anfrage verwendet die Methode databases:list, um die Datenbanken für eine Instanz aufzulisten.
Wenn Sie die Datenbanken mithilfe der API auflisten lassen, finden Sie zusätzliche Datenbankvorlagen und eine Systemdatenbank vor, die von der Console nicht angezeigt werden. Sie können die Systemdatenbank weder löschen noch verwalten.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
HTTP-Methode und URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Führen Sie folgenden Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Antwort
{ "kind": "sql#database", "charset": "utf8", "collation": "utf8_general_ci", "etag": "etag ", "name": "sys", "instance": "instance-id ", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/sys", "project": "project-id " }
Die folgende Anfrage verwendet die Methode databases:list, um die Datenbanken für eine Instanz aufzulisten.
Wenn Sie die Datenbanken mithilfe der API auflisten lassen, finden Sie zusätzliche Datenbankvorlagen und eine Systemdatenbank vor, die von der Console nicht angezeigt werden. Sie können die Systemdatenbank weder löschen noch verwalten.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
HTTP-Methode und URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Führen Sie folgenden Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases"
PowerShell (Windows)
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Antwort
{ "kind": "sql#database", "charset": "utf8", "collation": "utf8_general_ci", "etag": "etag ", "name": "sys", "instance": "instance-id ", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/sys", "project": "project-id " }
Referenzinformationen finden Sie in der Liste.
Wenn Sie die Datenbanken mithilfe des psql
-Clients auflisten, finden Sie in der Liste zusätzliche Datenbankvorlagen und eine Systemdatenbank, die in der Console nicht angezeigt werden. Sie können die Systemdatenbank weder löschen noch verwalten.
\l
Datenbank löschen
So löschen Sie eine Datenbank aus der Cloud SQL-Instanz:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
- Klicken Sie im linken Menü auf Datenbanken.
- Suchen Sie in der Liste die Datenbank, die Sie löschen möchten, und klicken Sie auf das Papierkorb-Symbol.
- Geben Sie im Dialogfeld Datenbank löschen den Namen der Datenbank ein und klicken Sie auf Löschen.
Weitere Informationen finden Sie unter gcloud
sql databases delete
.
gcloud sql databases deleteDATABASE_NAME \ --instance=INSTANCE_NAME
Die folgende Anfrage verwendet die Methode databases:delete, um die angegebene Datenbank zu löschen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- database-name: der Name einer Datenbank in der Cloud SQL-Instanz
HTTP-Methode und URL:
DELETE https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/database-name
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Führen Sie folgenden Befehl aus:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/database-name "
PowerShell (Windows)
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/database-name " | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Antwort
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "DELETE_DATABASE", "name": "operation-id ", "targetId": "instance-id ", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ", "targetProject": "project-id " }
Die folgende Anfrage verwendet die Methode databases:delete, um die angegebene Datenbank zu löschen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- database-name: der Name einer Datenbank in der Cloud SQL-Instanz
HTTP-Methode und URL:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/database-name
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
curl (Linux, macOS oder Cloud Shell)
Führen Sie folgenden Befehl aus:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/database-name "
PowerShell (Windows)
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/database-name " | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
Antwort
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-21T22:43:37.981Z", "operationType": "DELETE_DATABASE", "name": "operation-id ", "targetId": "instance-id ", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ", "targetProject": "project-id " }
Referenzinformationen finden Sie unter DROP DATABASE in der PostgreSQL-Dokumentation.
DROP DATABASE [database_name];
Weitere Informationen
- Nutzer für die Instanz verwalten
- Daten in die Instanz importieren
- Informationen über Instanzverbindungsoptionen mit dem psql-Client
- Datenbanktabelle erstellen
Jetzt testen
Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit von Cloud SQL in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
Cloud SQL kostenlos testen