• MySQL / MariaDB / SQL Server

  • SQL Server EXPRESS 2019 doit être préalablement installé

    Remplacez les variables par vos valeurs :

    #####################################################
    # CREATION DE LA BASE SQL ET DE L'UTILISATEUR PRIVILEGIE
    
    $dbName = "nom-de-la-base"
    $dbUser = "nom-de-lutilisateur"
    $dbPassword = "mot-de-passe-de-lutilisateur"
    
    # Créer la base de données
    $sqlCreateDB = "CREATE DATABASE [$dbName];"
    sqlcmd -S localhost\SQLEXPRESS -E -Q $sqlCreateDB
    
    # Créer l'utilisateur SQL
    $sqlCreateUser = @"
    USE master;
    CREATE LOGIN [$dbUser] WITH PASSWORD = N'$dbPassword', DEFAULT_DATABASE=[dnndb], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;
    "@
    sqlcmd -S localhost\SQLEXPRESS -E -Q $sqlCreateUser
    
    # Rendre l'utilisateur propriétaire de la base de données
    $sqlSetOwner = @"
    USE [$dbName];
    ALTER AUTHORIZATION ON DATABASE::[$dbName] TO [$dbUser];
    "@
    sqlcmd -S localhost\SQLEXPRESS -E -Q $sqlSetOwner
    
    # Mettre le mode d'authentification pour le serveur SQL en mode mixte
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQLServer" -Name "LoginMode" -Value 2
    
    # Redémarrer le service SQL Server pour que le changement prenne effet
    Restart-Service -Name 'MSSQL$SQLEXPRESS'

     


    votre commentaire
  • Voici comment installer SQL Server Express 2019 en PowerShell :

    1) On installe SQL Server Express 2019
    2) On installer Sql Server Management Studio (SSMS) pour pouvoir gérer SQL Server en graphique (éventuellement)
    3) On active l'authentification hybride lors de la connection au serveur SQL

    #####################################################
    # TELECHARGER ET INSTALLER SQL SERVER EXPRESS 2019
    
    # Créer le dossier temporaire C:\Temp
    New-Item -Path C:\Temp -ItemType directory
    
    # TÉLÉCHARGER SQL SERVER EXPRESS 2019
    Invoke-WebRequest -Uri https://download.microsoft.com/download/7/f/8/7f8a9c43-8c8a-4f7c-9f92-83c18d96b681/SQL2019-SSEI-Expr.exe -OutFile C:\Temp\SQL2019-SSEI-Expr.exe
    
    # INSTALLER SQL SERVER EXPRESS 2019 EN MODE SILENCIEUX
    Start-Process -Wait -FilePath "C:\Temp\SQL2019-SSEI-Expr.exe" -ArgumentList "/ACTION=Install /Q /IACCEPTSQLSERVERLICENSETERMS"
    
    
    #####################################################
    # TELECHARGER ET INSTALLER SSMS
    
    Invoke-WebRequest -Uri https://aka.ms/ssmsfullsetup -OutFile C:\Temp\ssmsfullsetup.exe
    
    # Installer SSMS silencieusement
    Start-Process -Wait -FilePath "C:\Temp\ssmsfullsetup.exe" -ArgumentList "/install /quiet"
    
    # Ajouter au PATH et recharger les variables
    # Chemin d'accès à sqlcmd
    $sqlcmdPath = "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn"
    
    # Ajouter de manière permanente le chemin au Path
    Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value "$($env:Path);$sqlcmdPath"
    
    # Recharger les variables d'environnement :
    $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
    

    ##################################################### # AUTHENTIFICATION HYBRIDE
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQLServer" -Name "LoginMode" -Value 2 # Redémarrer le service SQL Server pour que le changement prenne effet Restart-Service -Name 'MSSQL$SQLEXPRESS'

     


    votre commentaire
  • pkg ins -y mysql80-server
    sysrc mysql_enable=YES
    service mysql-server start
    mysql_secure_installation

               VALIDATE PASSWORD COMPONENT: Y
               Entrez un nouveau mot de passe root : (à votre guise... mais en cas de scripting, compliqué)

               Remove anonymous users : Y
               Disallow root login remotely : Y
               Remove test database and access to it ? : Y
               Reload privilege tables now ? : Y

    Pour lancer MySQL en root :
    (le mot de passe root changé grâce au script juste-au-dessus est désormais obligatoire pour se connecter)

    mysql -uroot -p

     

    Pour créer un utilisateur et lui octroyer les droits sur une base, on doit procéder en 3 commandes :
    (à côté de ça, mariadb c'est le pied !)

    1) Créer la base

    mysqladmin -uroot -p create NOM-DE-LA-BASE

    2) Créer un utilisateur

    mysql -uroot -p -e"CREATE USER 'admin'@'localhost' IDENTIFIED BY 'motdepasse'"

    3) Lui octroyer les droits sur la base

    mysql -uroot -p -e"GRANT ALL ON NOM-DE-LA-BASE.* TO 'admin'@'localhost'"

     4) éventuellement le supprimer :

    mysql -uroot -p -e"DROP USER 'admin'@'localhost'"

     


    votre commentaire
  • HeidiSQL est un petit logiciel graphique pour gérer les bases SQL.
    La procédure ci-dessous est extraite de 2 autres articles de la rubrique Windows Server (installation de glpi/wordpress sur IIS)

    1) Installez MariaDB, HeidiSQL, créer une base SQL.

    Téléchargez MariaDB Server ici 
    Choisissez la version Mariadb Server 10.6.11 (les versions de la branche 10.6 sont une branche de production d'un cycle de 5 ans, les autres ont une durée de support plus courte).
    MariaDB Server 10.6.11
    Operating System : Windows
    Architecture : x86_64
    Package Type : MSI Package

    Téléchargez et installez en double-cliquant dessus.
    Définissez le mot de passe root (il doit être suffisamment costaud) et cochez "Use UTF8 as default..."
    Pour "Innodb engine settings", montez la valeur de Buffer pool size à 1024MB, Installez.

    Un joli raccourci "HeidiSQL" apparaît alors sur le bureau. 
    SUPPRIMEZ-LE !
    Malheureusement, cet HeidiSQL est un peu planté... Donc on ne va pas s'en servir.
    On va le ré-installer.
    Télécharger la version Installer 32/64 bits sur la page suivante et installez-la

    Un nouveau raccourci apparaît sur le Bureau, cette fois ouvrez l'appli

    Cliquez sur "Ajouter" en bas à gauche,
    On vous demande d'abord de changer le nom de la nouvelle "session" qui apparaît dans le menu de gauche, écrivez "IIS" ou peu importe... Selon ce que vous comptez en faire, ou la date du jour etc...
    Nom d'hôte 127.0.0.1, ne pas changer
    Utilisateur : root
    Mot de passe : admin (évidemment vous mettez autre chose !! Un truc costaud de préférence. Vous ne pouvez pas laisser ce champs vide de toute façon).
    Notez ce mot de passe, vous en aurez besoin pour relancer HeidiSQL par la suite.
    Port par défaut  3306
    OUVRIR

    Créer et exporter une base SQL MariaDB avec HeidiSQL

    Dans le menu de gauche, faîtes un clic-droit sur IIS ou "le peu importe ce que vous avez créé",
    Créer un nouveau/elle, Base de donnée.
    Nommez-la glpi

    Créer et exporter une base SQL MariaDB avec HeidiSQL


    Sélectionnez votre base glpi qui apparaît (cliquez dessus), puis menu Outils, Gestionnaire utilisateur (ou l'icône correspondant dans la barre des raccourcis).
    Ajouter.
    Nom d'utilisateur: adminglpi (ou autre)
    A partir de l'hôte: localhost
    Mot de passe : adminglpi (évidemment, vous mettez autre chose !!!)
    Autoriser l'accès à: +Ajouter un objet, sélectionnez glpi, OK. 
    Cocher "Base de données; glpi" qui est apparu, on veut un utilisateur privilégié ici.. sinon choisissez le détail !

    Créer et exporter une base SQL MariaDB avec HeidiSQL


    Enregistrer, Fermer

     

    Votre Base est prête.
    Vous pouvez Quitter HeidiSQL

     

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    2) Vous souhaitez à présent exporter votre base SQL.
    Voici comment procéder :

    Relancez HeidiSQL, loguez-vous (vous étiez root pour rappel, avec le mot de passe qu'il fallait retenir).
    Vous revoici devant toutes les bases SQL.
    Procédez par un clic droit sur la base qui vous intéresse (au hasard, celle crée juste-au-dessus, glpi) : 
    "Exporter la base de données en SQL"

    Créer et exporter une base SQL MariaDB avec HeidiSQL

    Et là, ça se corse un peu !
    Regardez bien l'image suivante pour comprendre ce qu'il faut faire pour un export standard de votre base (en gros, une copie classique, comme avec mysqldump).. sauf que là, ça change du mysqldump !
    Il faut tout spécifier.
    Les outils fournis sont très utiles pour n'exporter QUE certaines options de vos bases.

    Vous devez cocher votre base à exporter (menu de gauche) puis cocher tout ce qui est coché sur l'image suivante !
    pour la taille de l'INSERT, 0 signifie que vous copiez tout.
    Choisissez enfin l'emplacement et le nom de votre export.sql

    Enfin, cliquez sur Exporter.

    Créer et exporter une base SQL MariaDB avec HeidiSQL


    votre commentaire
  • (de l'installation au paramétrage) :

    apt update 
    apt install mariadb-server -y
    mysql_secure_intallation

         (Enter current password : ENTRER)
         (Switch to unix socket : Y)
         (Change root password : n)
         (Remove anonymous users : Y)
         (Remove test database and access : Y)
         (Reload privilege tables now : Y)

    mysql -uroot -e"ALTER USER root@localhost IDENTIFIED BY 'mot-de-passe-à-la-con'"

    et voilà..
    Impossible de vous connecter en tant que root sans le mot-de-passe-à-la-con


    votre commentaire
  • Dans Mariadb :

    Le fichier suivant est lu par le fichier de conf général de MySQL : /etc/mysql/my.cnf
    Donc vous avez le choix de rajouter la ligne Bind address : 0.0.0.0 directement dedans, où d'aller éditer la ligne Bind address dans le fichier /etc/mysql/mariadb.conf.d/50-server.conf comme ci-dessous :

    vi /etc/mysql/mariadb.conf.d/50-server.conf

    # commenter, ou remplacer 'bind-address : 127.0.0.0' par
    bind-address = 0.0.0.0
    # enregistrer et quitter

    ---------------------------------------------

    Dans MySQL :

    vi /etc/mysql/my.cnf

    # commenter, ou remplacer 'Bind address : 127.0.0.0' par
    bind-address = 0.0.0.0
    # enregistrer et quitter


    votre commentaire
  • Script No.1 (Sauvegarde et restauration en local)
    L'administrateur d'un serveur SQL veut pouvoir automatiser la sauvegarde/restauration d'une base SQL.
    Pour se faire, il veut que :
    - en écrivant "./script.sh dump" le script sauvegarde la base SQL en local (sur le serveur SQL lui-même).
    - en écrivant "./script.sh restore" le script permette de restaurer la base sauvegardée, en offrant le choix du fichier de sauvegarde à récupérer (en fonction de sa date).
    - le nom des fichiers de sauvegarde comporte la date et l'heure auxquelles ils sont sauvegardés.
    - le nombre de sauvegardes stockées n'excède pas 5 (on ne garde que les 5 dernières sauvegardes).

    Complétez les variables du script avec vos informations !

    #!/bin/bash
    
    # Variable paramètres (nombre de backups à conserver)
    RETENTION=5
    
    # Informations base de donnée
    dbName="glpi"
    dbUser="admin"
    dbPawd="mdp"
    
    # Dossier de sauvegarde local
    dbBackup="/home/theophile/backup"
    
    # Condition si le dossier de sauvegarde n'existe pas, le créer :
    if [ ! -d ${dbBackup} ]; then
    mkdir ${dbBackup}
    fi
    
    # ATTENTION, il faut utiliser des ` pour encadrer l'expression de la variable DATE.. Alt Gr 7
    DATE=`date +%Y-%m-%d`
    HEURE=`date +%H:%M`
    
    #------------------------------------------------------------
    case "$1" in
         dump)
              # Sauvegarde de la base en local, en un fichier zippé
              mysqldump -u$dbUser -p$dbPawd $dbName | gzip -9 > ${dbBackup}/mysql_backup_${DATE}_${HEURE}.sql.gz
    
              # Nettoyage des vieux fichiers (de plus de 4 jours)
              find $dbBackup/mysql*.sql.gz -type f -mtime +$RETENTION -delete > /dev/null
              echo "Votre sauvegarde s'est réalisée correctement"
         ;;
         restore)
              # Restauration
              mysql -uroot -e"DROP SCHEMA $dbName"
              mysqladmin -uroot create $dbName
              mysql -uroot -e"GRANT ALL ON $dbName.* TO $dbUser@localhost IDENTIFIED BY '$dbPawd'" $dbName
              select choix in `ls $dbBackup` ; do
              zcat $dbBackup/$choix | mysql -uroot $dbName
              echo "votre restauration a été effectuée"
              break
              done
         ;;
         *)
              echo "je ne comprends que [dump|restore]"
         ;;
    esac
    # fermer le script : exit 0



    Script No.2 (Sauvegarde et restauration à distance)
    L'administrateur d'un serveur SQL veut, à partir du serveur SQL, automatiser la sauvegarde/restauration d'une base SQL.
    Pour se faire, il veut que :
    - en écrivant "./script.sh dump" le script sauvegarde la base SQL en l'envoyant, à l'abri, sur un serveur distant.
    - en écrivant "./script.sh restore" le script permette de restaurer la base sauvegardée depuis le serveur distant, en offrant le choix du fichier de sauvegarde à récupérer
    - le nom des fichiers de sauvegarde comporte la date et l'heure auxquelles ils sont sauvegardés.
    - le nombre de sauvegardes stockées n'excède pas 5 (on ne garde que les 5 dernières sauvegardes).

    Conseils Préliminaires pour pouvoir tester le script !
    - Debian 11 sur les 2 serveurs
    - Installer mariadb-server sur le serveur SQL
    - Installer rsync sur les 2 serveurs (SQL et backup)

    - Créer une base SQL ou importez-en une sur le serveur SQL (afin qu'il y ait quelque chose à sauvegarder !)
    - Ne pas oublier de générer les clefs SSH sur le serveur SQL et d'envoyer la clef publique depuis le serveur SQL AU serveur de Backup distant, afin que le script puisse s'exécuter.
    - Ne pas oublier de créer les dossiers de Backup sur le serveur SQL ET sur le serveur de Backup distant
    - Compléter les variables du Script SQL avec vos informations !

    #!/bin/bash
    
    # PREAMBULE
    # L'échange de clefs publiques doit être réciproque entre le serveur SQL et le serveur de backup.
    # Ceci afin de permettre le téléversement et téléchargement des backups.
    # rsync doit être préalablement installé sur les 2 serveurs.
    # les chemins dbBackup et dbBackupBAK doivent avoir été créé sur les serveurs avant d'être renseignés ici.
    
    # Variable paramètres (nombre de backups à conserver)
    RETENTION=5
    
    # Informations base de donnée (sur le serveur GLPI)
    dbName="glpi"
    dbUser="admin"
    dbPawd="mdp"
    
    # Accès au serveur SQL local (ici, le serveur GLPI):
    SSHportSQL=22
    userSQL="admin"
    pawdSQL="Gca123456,"
    IPservLOCAL="10.100.1.203"
    
    # Accès au serveur de Backup distant (ici, le serveur WEB1):
    IPservBAK="10.100.1.202"
    SSHportBAK=22
    SRVuserBAK="theophile"
    
    # Dossier de sauvegarde local
    dbBackup="/home/theophile/backup"
    # Dossier de sauvegarde sur le serveur de Backup distant :
    dbBackupBAK="/home/admin/backup"
    
    # Condition si le dossier de sauvegarde n'existe pas, le créer :
    if [ ! -d ${dbBackup} ]; then
    mkdir ${dbBackup}
    fi
    
    # ATTENTION, il faut utiliser des ` pour encadrer l'expression de la variable DATE.. Alt Gr 7
    DATE=`date +%Y-%m-%d`
    HEURE=`date +%H:%M`
    
    #------------------------------------------------------------
    case "$1" in
    dump)
    
    # Sauvegarde de la base en local, en un fichier zippé
    mysqldump -u$dbUser -p$dbPawd $dbName | gzip -9 > ${dbBackup}/mysql_backup_${DATE}_${HEURE}.sql.gz
    # Sauvegarde de la base sur le serveur de Backup distant
    rsync -avz -e "ssh -p $SSHportBAK" --delete $dbBackup/* $userSQL@$IPservBAK:$dbBackupBAK
    
    # Nettoyage des vieux fichiers en local (de plus de 4 jours)
    find $dbBackup/mysql*.sql.gz -type f -mtime +$RETENTION -delete > /dev/null
    echo "Votre sauvegarde s'est réalisée correctement"
    ;;
    restore)
    
    # Restauration depuis le serveur de backup distant (ici, le serveur WEB1)
    mysql -uroot -e"DROP SCHEMA $dbName"
    mysqladmin -uroot create $dbName
    mysql -uroot -e"GRANT ALL ON $dbName.* TO $dbUser@localhost IDENTIFIED BY '$dbPawd'" $dbName
    selectSURserver=`ssh -p $SSHportBAK $userSQL@$IPservBAK "ls '$dbBackupBAK'"`
    select choix in $selectSURserver ; do
    scp -P $SSHportSQL $userSQL@$IPservBAK:$dbBackupBAK/$choix /tmp/backup.sql.gz
    zcat /tmp/backup.sql.gz | mysql -uroot $dbName
    echo "votre restauration a été effectuée"
    rm /tmp/backup.sql.gz
    break
    done
    ;;
    *)
    echo "je ne comprends que [dump|restore]"
    ;;
    esac
    # fermer le script :
    exit 0

     


    votre commentaire


    Suivre le flux RSS des articles de cette rubrique
    Suivre le flux RSS des commentaires de cette rubrique