Cette page explique comment créer, répertorier et supprimer des bases de données PostgreSQL sur une instance Cloud SQL.
Une nouvelle instance possède une base de données postgres.
Pour en savoir plus sur les bases de données PostgreSQL, consultez la
documentation PostgreSQL .
Avant de commencer
Avant d'effectuer les tâches indiquées sur cette page :
Si vous prévoyez de créer ou de gérer vos bases de données à l'aide du client psql, vous devez avoir :
Créer une base de données sur l'instance Cloud SQL
Remarque :La base de données postgres est la base de données par défaut à laquelle vous vous connectez avant de créer d'autres bases de données. Après avoir créé une autre base de données, passez à la nouvelle base de données pour créer des tables et insérer des données. N'utilisez pas la base de données postgres pour les données de votre application, car elle est principalement utilisée à des fins administratives.
La longueur maximale d'un nom de la base de données est de 64 caractères. Pour en savoir plus sur les autres critères de ce nom, consultez la section Identifiants et mots clés .
Si vous ne spécifiez pas de jeu de caractères ni de classement lorsque vous créez votre base de données, celle-ci utilise les valeurs par défaut suivantes:
Jeu de caractères : UTF8
Classement : en_US.UTF8
Console
Remarque : Vous ne pouvez pas utiliser la console Google Cloud pour définir des valeurs pour le jeu de caractères et le classement. Pour définir ces valeurs, utilisez un client psql afin de créer votre base de données. Pour en savoir plus sur l'utilisation de ce client pour créer la base de données, reportez-vous au contenu de l'onglet Client psql .
Dans la console Google Cloud , accédez à la page Instances Cloud SQL .
Accéder à la page Instances Cloud SQL
Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
Dans le menu de navigation SQL, sélectionnez Bases de données .
Cliquez sur Create database .
Dans la boîte de dialogue Nouvelle base de données , spécifiez le nom de la base de données.
Cliquez sur Créer .
gcloud
Remarque : Vous ne pouvez pas utiliser gcloud pour définir des valeurs pour le jeu de caractères et le classement. Pour définir ces valeurs, utilisez un client psql afin de créer votre base de données. Pour en savoir plus sur l'utilisation de ce client pour créer la base de données, reportez-vous au contenu de l'onglet Client psql .
Pour plus d'informations, consultez la page sur gcloud
sql databases create .
gcloud sql databases create DATABASE_NAME \
--instance= INSTANCE_NAME
Remarque : Vous ne pouvez pas utiliser Terraform pour définir des valeurs pour le jeu de caractères et le classement. Pour définir ces valeurs, utilisez un client psql afin de créer votre base de données. Pour en savoir plus sur l'utilisation de ce client pour créer la base de données, reportez-vous au contenu de l'onglet Client psql .
Pour créer une base de données, utilisez une ressource Terraform .
Appliquer les modifications
Pour appliquer votre configuration Terraform dans un projet Google Cloud , suivez les procédures des sections suivantes.
Préparer Cloud Shell
Lancez Cloud Shell .
Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine ).
Dans Cloud Shell , créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.
Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
Enregistrez les modifications.
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :
terraform init -upgrade
Appliquer les modifications
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud , accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
Remarque : Les exemples Terraform partent généralement du principe que les API requises sont activées dans votre projet Google Cloud .
Supprimer les modifications
Pour supprimer vos modifications, procédez comme suit :
Pour désactiver la protection contre la suppression, définissez l'argument deletion_protection sur false dans le fichier de configuration Terraform.
deletion_protection = "false"
Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
terraform apply
Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à la requête :
terraform destroy
REST v1
Remarque : Vous ne pouvez pas utiliser les API REST pour définir des valeurs pour le jeu de caractères et le classement. Pour définir ces valeurs, utilisez un client psql afin de créer votre base de données. Pour en savoir plus sur l'utilisation de ce client pour créer la base de données, reportez-vous au contenu de l'onglet Client psql .
La requête suivante exécute la méthode databases:insert pour créer une base de données sur l'instance spécifiée.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
project-id : ID du projet
instance-id : ID de l'instance.
database-name : nom d'une base de données dans l'instance Cloud SQL.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases
Corps JSON de la requête :
{
"project": "project-id ",
"instance": "instance-id ",
"name": "database-name "
}
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Remarque : La commande suivante suppose que vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login , ou en utilisant Cloud Shell , qui vous connecte automatiquement à la CLI gcloud.
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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)
Remarque : La commande suivante suppose que vous vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login .
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{
"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 "
}
REST v1beta4
Remarque : Vous ne pouvez pas utiliser les API REST pour définir des valeurs pour le jeu de caractères et le classement. Pour définir ces valeurs, utilisez un client psql afin de créer votre base de données. Pour en savoir plus sur l'utilisation de ce client pour créer la base de données, reportez-vous au contenu de l'onglet Client psql .
La requête suivante exécute la méthode databases:insert pour créer une base de données sur l'instance spécifiée.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
project-id : ID du projet
instance-id : ID de l'instance.
database-name : nom d'une base de données dans l'instance Cloud SQL.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases
Corps JSON de la requête :
{
"project": "project-id ",
"instance": "instance-id ",
"name": "database-name "
}
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Remarque : La commande suivante suppose que vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login , ou en utilisant Cloud Shell , qui vous connecte automatiquement à la CLI gcloud.
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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)
Remarque : La commande suivante suppose que vous vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login .
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{
"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 "
}
Client psql
Pour en savoir plus, consultez la section CREATE DATABASE de la documentation PostgreSQL.
Consultez les sujets suivants dans la documentation PostgreSQL pour obtenir des informations générales et une liste des valeurs de jeux de caractères compatibles :
CREATE DATABASE database_name
[[ ENCODING encoding ][ LC_COLLATE lc_collate ]];
Exemple : CREATE DATABASE "example_db" WITH OWNER "example_user"
ENCODING 'UTF8' LC_COLLATE = 'pl_PL.utf8' LC_CTYPE = 'pl_PL.utf8' TEMPLATE template0;
Remarque : Le modèle par défaut est template1.
Cependant, psql utilise template0, car il s'agit du seul modèle qui accepte un encodage et un jeu de caractères spécifiques. Pour plus d'informations, consultez la page Bases de données de modèles .
Lister les bases de données
Pour répertorier toutes les bases de données d'une instance :
Console
Dans la console Google Cloud , accédez à la page Instances Cloud SQL .
Accéder à la page Instances Cloud SQL
Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
Cliquez sur Bases de données dans le menu de gauche. La page Bases de données répertorie les bases de données ainsi que leur type de classement, leur jeu de caractères et leur type de base de données.
gcloud
Pour plus d'informations, consultez la page sur gcloud
sql databases list .
gcloud sql databases list \
--instance= INSTANCE_NAME
REST v1
La requête suivante exécute la méthode databases:list pour répertorier les bases de données d'une instance.
Lorsque vous répertoriez les bases de données à l'aide de l'API, vous voyez des bases de données de modèles supplémentaires ainsi qu'une base de données système qui ne sont pas affichées par la console. Vous ne pouvez pas supprimer ni gérer la base de données système.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
project-id : ID du projet
instance-id : ID de l'instance.
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Remarque : La commande suivante suppose que vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login , ou en utilisant Cloud Shell , qui vous connecte automatiquement à la CLI gcloud.
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
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)
Remarque : La commande suivante suppose que vous vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login .
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{
"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 "
}
Remarque : L'API databases.list n'accepte que les charges utiles de réponse contenant jusqu'à 4 Mo de texte.
Si vous exécutez une requête de liste de bases de données sur une instance volumineuse, vous risquez de recevoir un message d'erreur. Si cela se produit, nous vous recommandons d'exécuter la requête directement à partir de l'instance pour obtenir la liste des bases de données.
REST v1beta4
La requête suivante exécute la méthode databases:list pour répertorier les bases de données d'une instance.
Lorsque vous répertoriez les bases de données à l'aide de l'API, vous voyez des bases de données de modèles supplémentaires ainsi qu'une base de données système qui ne sont pas affichées par la console. Vous ne pouvez pas supprimer ni gérer la base de données système.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
project-id : ID du projet
instance-id : ID de l'instance.
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Remarque : La commande suivante suppose que vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login , ou en utilisant Cloud Shell , qui vous connecte automatiquement à la CLI gcloud.
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
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)
Remarque : La commande suivante suppose que vous vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login .
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{
"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 "
}
Remarque : L'API databases.list n'accepte que les charges utiles de réponse contenant jusqu'à 4 Mo de texte.
Si vous exécutez une requête de liste de bases de données sur une instance volumineuse, vous risquez de recevoir un message d'erreur. Si cela se produit, nous vous recommandons d'exécuter la requête directement à partir de l'instance pour obtenir la liste des bases de données.
Client psql
Pour obtenir des informations de référence, reportez-vous à la commande list (répertorier).
Lorsque vous répertoriez les bases de données à l'aide du client psql, vous obtenez des bases de données de modèles supplémentaires et une base de données système qui ne sont pas affichées par la console. Vous ne pouvez pas supprimer ni gérer la base de données système.
\ l
Supprimer une base de données
Pour supprimer une base de données sur l'instance Cloud SQL :
Console
Dans la console Google Cloud , accédez à la page Instances Cloud SQL .
Accéder à la page Instances Cloud SQL
Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
Cliquez sur Bases de données dans le menu de gauche.
Dans la liste des bases de données, recherchez celle que vous souhaitez supprimer et cliquez sur l'icône de la corbeille.
Dans la boîte de dialogue Supprimer la base de données , saisissez le nom de la base de données, puis cliquez sur Supprimer .
gcloud
Pour plus d'informations, consultez la page sur gcloud
sql databases delete .
gcloud sql databases delete DATABASE_NAME \
--instance= INSTANCE_NAME
REST v1
La requête suivante exécute la méthode databases:delete pour supprimer la base de données spécifiée.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
project-id : ID du projet
instance-id : ID de l'instance.
database-name : nom d'une base de données dans l'instance Cloud SQL.
Méthode HTTP et URL :
DELETE https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id /databases/database-name
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Remarque : La commande suivante suppose que vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login , ou en utilisant Cloud Shell , qui vous connecte automatiquement à la CLI gcloud.
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
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)
Remarque : La commande suivante suppose que vous vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login .
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{
"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 "
}
REST v1beta4
La requête suivante exécute la méthode databases:delete pour supprimer la base de données spécifiée.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
project-id : ID du projet
instance-id : ID de l'instance.
database-name : nom d'une base de données dans l'instance Cloud SQL.
Méthode HTTP et URL :
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id /databases/database-name
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Remarque : La commande suivante suppose que vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login , ou en utilisant Cloud Shell , qui vous connecte automatiquement à la CLI gcloud.
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
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)
Remarque : La commande suivante suppose que vous vous êtes connecté à la CLI gcloud avec votre compte utilisateur en exécutant la commande gcloud init ou gcloud auth login .
Vous pouvez exécuter la commande gcloud auth list pour vérifier quel est le compte actuellement actif.
Exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
Réponse
{
"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 "
}
Client psql
Pour en savoir plus, consultez la section DROP DATABASE de la documentation PostgreSQL.
DROP DATABASE [ database_name ];
Étapes suivantes