-- On créer la base de donnée si elle n'existe déjà aps CREATE DATABASE IF NOT EXISTS portfolio -- On créer un utilisateur avec un mot de passe fort qui est à changer après execution dus script (voir bitwarden) CREATE USER 'srv_portfolio'@'localhost' IDENTIFIED BY 'mdp'; -- On met les droits au compte sur la base portfolio à l'utilisateur GRANT ALL ON portfolio.* TO 'srv_portfolio'@'localhost'; -- On actualise les permissions FLUSH PRIVILEGES; -- Création de la table user : (Généré par Beekeeper Studio : équivalent à dbGate) CREATE TABLE IF NOT EXISTS users ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL, -- Je laisse ici de la place pour prévoir un futur hashage et sallage role ENUM('admin', 'user') NOT NULL DEFAULT 'user', created_at DATETIME NULL DEFAULT NULL, last_login DATETIME NULL DEFAULT NULL, PRIMARY KEY (id), UNIQUE INDEX idx_username (username) ); -- Création de la table projects : (Généré par Beekeeper Studio) CREATE TABLE IF NOT EXISTS projects ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, title VARCHAR(100) NOT NULL, tags VARCHAR(255) NULL, description TEXT NOT NULL, image_url VARCHAR(255) NOT NULL, -- Stockage de l'image par URL (exemple : par CDN) created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ); -- Création de la table projects : (Généré par Beekeeper Studio) CREATE TABLE IF NOT EXISTS experiences ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, title VARCHAR(100) NOT NULL, xptype VARCHAR(100) NOT NULL, tags VARCHAR(255) NULL, description TEXT NOT NULL, duration VARCHAR(100) NOT NULL, image_url VARCHAR(255) NOT NULL, -- Stockage de l'image par URL (exemple : par CDN) created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ); -- Compte de test (PLUS A JOUR METTRE UN HASH) -- INSERT INTO users (username, password, role) -- VALUES ('admin', 'admin', 'admin'); insert into `users` (`created_at`, `id`, `last_login`, `password`, `role`, `username`) values ('2026-06-08 11:10:21', 11, '2026-06-08 13:10:41', '$2y$12$x01fDqrHQEYIyj7MDHa72eRyl2j/n5cNq9sv3.FIiQCaRsB50Q4iK', 'admin', 'admin');