Skip to content
Learni
Voir tous les tutoriels
Google Cloud Platform

Comment créer une instance Cloud SQL en 2026

Read in English

Introduction

Cloud SQL est le service de base de données relationnelle managée de Google Cloud Platform (GCP), supportant PostgreSQL, MySQL et SQL Server. Contrairement à une base auto-hébergée, Cloud SQL gère automatiquement les backups quotidiens, les mises à jour de sécurité, la haute disponibilité et le scaling vertical/horizontal, libérant les développeurs des tâches d'administration. En 2026, avec les dernières optimisations IA pour les queries et l'intégration native avec AlloyDB, c'est l'outil idéal pour des apps scalable comme des APIs Next.js ou des dashboards analytics.

Ce tutoriel beginner vous guide pas à pas : création d'une instance PostgreSQL via gcloud CLI, configuration sécurisée (accès IP contrôlé, utilisateur dédié), et connexion Python pour CRUD basique. À la fin, vous aurez une DB productive en 15 minutes, prête pour la prod. Pourquoi c'est crucial ? 80% des breaches DB viennent de configs défaillantes – ici, on priorise la sécurité dès le départ.

Prérequis

  • Un compte Google Cloud gratuit (crédit de 300$ offert).
  • gcloud CLI installée (version 480+ recommandée en 2026).
  • Python 3.12+ installé localement.
  • Un projet GCP existant (ou créez-en un via console.cloud.google.com).
  • Connaissances basiques de terminal et SQL (SELECT/INSERT).

1. Authentifier gcloud et définir le projet

setup-gcloud.sh
# Remplacez 'mon-projet-id' par votre Project ID GCP
gcloud auth login

gcloud config set project mon-projet-id

gcloud services enable sqladmin.googleapis.com

gcloud sql instances list

Cette séquence authentifie votre compte GCP, active l'API Cloud SQL et liste les instances existantes (devrait être vide). Utilisez votre vrai Project ID depuis console.cloud.google.com. Piège courant : oublier d'activer l'API cause 'PERMISSION_DENIED' – toujours vérifier avec gcloud services list après.

Création de l'instance PostgreSQL

Nous créons une instance PostgreSQL 16 (stable en 2026), avec 1 vCPU, 4 Go RAM et disque 10 Go – parfait pour démarrer. L'instance est privée par défaut ; on l'ouvrira publiquement pour cet exemple local (en prod, utilisez VPC/Private Service Connect).

2. Créer l'instance Cloud SQL

create-instance.sh
gcloud sql instances create ma-instance-sql \
    --database-version=POSTGRES_16 \
    --cpu=1 \
    --memory=4GiB \
    --region=us-central1 \
    --zone=us-central1-a

INSTANCE_IP=$(gcloud sql instances describe ma-instance-sql --format='value(ipAddresses[0].ipAddress)')
echo "IP publique de l'instance : $INSTANCE_IP"

Cette commande déploie une instance nommée 'ma-instance-sql' en 2-5 minutes. On capture l'IP publique pour la suite. Analogie : comme louer un serveur DB dédié sans installer PostgreSQL. Évitez les régions éloignées pour minimiser la latence ; testez avec gcloud sql instances describe ma-instance-sql.

3. Autoriser l'accès IP et créer DB/utilisateur

configure-access.sh
# AVERTISSEMENT : 0.0.0.0/0 ouvre à tout internet – en prod, remplacez par VOTRE_IP/32
gcloud sql instances patch ma-instance-sql --authorized-networks=0.0.0.0/0

gcloud sql databases create ma-base-test --instance=ma-instance-sql

gcloud sql users create monuser --instance=ma-instance-sql --password=MonMotDePasseSecure123!

On ouvre l'accès public (temporairement), crée la DB 'ma-base-test' et l'utilisateur 'monuser' avec mot de passe fort. Changez l'IP autorisée via curl ifconfig.me pour sécurité. Piège : mots de passe faibles causent 30% des hacks – utilisez au moins 12 chars alphanumériques.

Connexion et tests depuis Python

Maintenant, connectons-nous localement avec psycopg2, bibliothèque légère pour PostgreSQL. Le script suivant est complet et copier-collable : il crée une table users, insère des données et query pour vérification. Remplacez IP, user et password par vos valeurs.

4. Installer psycopg2

install-deps.sh
pip install psycopg2-binary

psycopg2-binary inclut les binaires compilés, évitant les erreurs de dépendances C sur Windows/Mac. Pas besoin de PostgreSQL local. Vérifiez avec pip list | grep psycopg.

5. Script Python complet : CRUD sur Cloud SQL

connect_cloudsql.py
import psycopg2
from psycopg2 import sql

# Remplacez par vos valeurs
DB_HOST = 'VOTRE_IP_PUBLIQUE'  # Ex: 34.123.45.67
dbname = 'ma-base-test'
username = 'monuser'
password = 'MonMotDePasseSecure123!'

try:
    conn = psycopg2.connect(
        host=DB_HOST,
        database=dbname,
        user=username,
        password=password
    )
    cur = conn.cursor()

    # Créer table
    cur.execute('''
        CREATE TABLE IF NOT EXISTS users (
            id SERIAL PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            email VARCHAR(100) UNIQUE NOT NULL
        )
    ''')

    # Insérer données
    cur.execute(
        "INSERT INTO users (name, email) VALUES (%s, %s) RETURNING id",
        ('Alice', 'alice@example.com')
    )
    user_id = cur.fetchone()[0]

    # Query
    cur.execute("SELECT * FROM users WHERE id = %s", (user_id,))
    print("Utilisateur créé :", cur.fetchone())

    conn.commit()
except Exception as e:
    print(f"Erreur : {e}")
finally:
    if 'conn' in locals():
        cur.close()
        conn.close()
        print("Connexion fermée.")

Ce script gère connexion, création table, INSERT avec RETURNING (pour ID auto), SELECT paramétré (anti-injection SQL) et commit/rollback implicite. Try/finally assure fermeture propre. Analogie : comme un coffre-fort – verrous (params) protègent des injections. Testez : python connect_cloudsql.py doit afficher l'utilisateur.

6. Nettoyage : Supprimer l'instance (optionnel)

cleanup.sh
gcloud sql instances delete ma-instance-sql --quiet

Supprime l'instance et tous ses coûts (facturation à la seconde). --quiet évite la confirmation. Toujours nettoyer après tests pour éviter factures surprises – GCP charge ~0.10$/h pour cette config.

Bonnes pratiques

  • Utilisez Private IP : Évitez public IP en prod ; configurez VPC peering ou Cloud SQL Auth Proxy pour connexions internes sécurisées.
  • Secrets management : Stockez passwords dans Secret Manager, pas en dur (injectez via env vars).
  • Backups automatisés : Activez PITR (Point-In-Time Recovery) dès création avec --backup-start-time.
  • Monitoring : Intégrez Cloud Monitoring pour alertes CPU >80% ou connexions lentes.
  • Scaling : Commencez petit, upgradez CPU/Mémoire via gcloud sql instances patch --cpu=2 sans downtime.

Erreurs courantes à éviter

  • IP non autorisée : 'Connection refused' ? Vérifiez authorized-networks avec gcloud sql instances describe et ajoutez votre IP publique.
  • API non activée : 'Quota exceeded' sans raison ? gcloud services enable sqladmin.googleapis.com.
  • Password faible : Cloud SQL rejette <8 chars ; utilisez générateurs comme pwgen 16 1.
  • Pas de finally() en Python : Connexions orphelines épuisent quotas (max 100 connexions par instance).

Pour aller plus loin

Maîtrisez Cloud SQL en prod avec notre formation GCP DevOps. Ressources : Docs Cloud SQL, Cloud SQL Proxy, tutoriel AlloyDB pour workloads IA. Intégrez à Kubernetes via operators officiels.