-
MySQL / MariaDB / SQL Server
Bienvenue sur la page consacrée à MySQL / MariaDB et SQL Server
Vous trouverez :MySQL :
- Installer MySQL server, créer une base et un utilisateur privilégié sur FreeBSD
- Installer MySQL 8.0 sur Debian 11.5
- Installer MySQL 8.0.32 sur Solaris 11.4MariaDB :
- Installer Mariadb 10.6 sur OpenIndiana (Hipster)
- Installer Mariadb 10.11.5 sur Windows Server 2022 et le gérer en CLI, comme sur Linux/FreeBSD
- Empêcher la connexion root sans mot de passe
- Autoriser les connexions distantes dans MariaDB ou dans MySQLSQL Server Express 2019
- Installer SQL Server Express 2019 via PowerShell
- Créer une base SQL et un utilisateur privilégié sur cette baseTPs pour apprendre :
- Script de backup pour base SQL
- Migration de GLPI (en http) d'un serveur à un autre -
Par majekla le 12 Septembre 2023 à 16:40
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 -
Par majekla le 12 Septembre 2023 à 16:33
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 -
Par majekla le 15 Décembre 2022 à 09:40
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 ? : YPour 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 basemysqladmin -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 -
Par majekla le 30 Novembre 2022 à 19:17
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
OUVRIRDans 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
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 !
Enregistrer, FermerVotre 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"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.
votre commentaire -
Par majekla le 22 Septembre 2022 à 10:52
(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 -
Par majekla le 9 Janvier 2022 à 17:06
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 -
Par majekla le 9 Janvier 2022 à 17:01
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