Mirajv1.0
FR

2. Installation

2.1 Prérequis#

MIRAJ est distribué sous forme de binaires prêts à l'emploi, sans dépendance externe à installer. Choisissez le paquet correspondant au système et à l'édition souhaitée (voir 1.3) :

SystèmePaquetContenu
Windows 64 bitsMIRAJ-<version>-Express-setup.exe, MIRAJ-<version>-Entreprise-setup.exeAssistant d'installation (2.2) : serveur, console, bibliothèque, pilote ODBC, gestionnaire, éditeur de configuration
Windows 64 bitsMIRAJ-<version>-<édition>-win64.zip (Express, Entreprise, Cluster, Developer)miraj-server.exe, miraj-cli.exe, miraj.dll, le pilote ODBC miraj_odbc.dll et ses deux scripts PowerShell d'enregistrement, deux lanceurs .bat, LISEZMOI.txt et readme.txt ; l'archive Cluster ajoute miraj-cluster-pki.exe et miraj-proxy.exe
Windows 32 bitsMIRAJ-<version>-Win32.zipmiraj.dll seule, pour les applications Win32 (un exécutable 64 bits ne peut pas charger la bibliothèque 64 bits dans un processus 32 bits)
macOS (Apple Silicon : arm64)MIRAJ-<version>-Express-macos-<arch>.pkgPaquet d'installation de l'édition Express (ci-dessous)
Linux x64MIRAJ-<version>-Express-linux-x64.zipmiraj-server, miraj-cli, libmiraj.so, le pilote ODBC libmiraj_odbc.so et ses scripts d'enregistrement, readme.txt

Chaque paquet est accompagné de son empreinte SHA-256 (fichier .sha256).

Les éditions Entreprise et Cluster s'accompagnent d'un fichier de licence miraj.lic. Après l'installation, rangez-le par miraj-server --root <dossier> --install-license miraj.lic (ou collez la licence dans un terminal avec --install-license -) : voir le chapitre 30. Sans licence, le serveur fonctionne avec les fonctions et les limites de l'édition Express.

L'édition Developer est celle du poste de développement : elle offre toutes les fonctions de l'édition Cluster (réplication, partitionnement, point d'accès MCP) pour écrire et tester une application, mais sur un seul cœur, avec 20 Go de données au plus (erreur 9011) et 24 heures de fonctionnement entre deux redémarrages (erreur 9012 ensuite, données intactes). Elle s'installe par simple copie (voir Installation manuelle) ; l'assistant d'installation de 2.2 n'existe que pour Express et Entreprise.

Pour Miraj Express et Miraj Entreprise sous Windows, l'assistant d'installation dépose les programmes, crée le compte root, règle le port, le langage SQL et le démarrage automatique, et permet de désinstaller depuis les programmes de Windows. Sans lui, aucune installation n'est nécessaire : copiez les exécutables où vous le souhaitez et lancez-les. Le dossier depuis lequel miraj-server ou miraj-cli est lancé n'a pas d'importance : c'est le dossier de données (--root) qui détermine où vivent vos bases.

Paquet macOS#

Le paquet MIRAJ-<version>-Express-macos-<arch>.pkg (macOS 11 ou plus récent) installe :

ÉlémentEmplacement
miraj-server, miraj-cli, miraj-config-editor, miraj-backup, le script de désinstallation miraj-uninstall.sh/usr/local/miraj-express/bin ; miraj-server et miraj-cli sont liés dans /usr/local/bin
Bibliothèque libmiraj.dylib, pilote ODBC libmiraj_odbc.dylib (déclaré « MIRAJ ODBC Driver », chapitre 28)/usr/local/miraj-express/lib
Configuration miraj_config.xml (port 7007, écoute sur la boucle locale)à côté de miraj-server, créée seulement si elle n'existe pas
Données et clés du coffre des comptes/Library/Application Support/Miraj Express/data et keys, réservés à root et au groupe admin
Service du serveur (LaunchDaemon com.cirtasoft.miraj.express.server) : démarrage avec la machine, relance après un arrêt imprévu, sortie dans /var/log/miraj-express.log/Library/LaunchDaemons
Miraj Manager et Miraj Uninstaller/Applications

Le paquet ne crée pas lui-même le compte root. À la première ouverture, Miraj Manager affiche une page de première configuration : mot de passe de root (obligatoire, saisi deux fois ; le bouton Générer et copier en tire un au sort et le copie dans le presse-papiers), port, écoute (boucle locale ou toutes les interfaces) et Langage SQL de l'instance (langage MIRAJ, par défaut, ou PostgreSQL). Le serveur démarre ensuite par son LaunchDaemon. Lors d'une mise à jour, le serveur est arrêté puis relancé ; données, clés et configuration sont conservées.

Désinstaller. Miraj Uninstaller propose Désinstaller (les données et les clés sont conservées) ou Désinstaller et supprimer les données (confirmation demandée, irréversible), puis macOS demande le mot de passe d'administrateur. En ligne de commande : sudo /usr/local/miraj-express/bin/miraj-uninstall.sh (--yes sans question, --purge pour supprimer aussi les données et les clés). La désinstallation retire le serveur, les LaunchDaemons (serveur, sauvegardes planifiées, accès distant), les applications, les liens de /usr/local/bin et le pilote ODBC ; une configuration conservée rejoint le dossier des données. Si les données ont été gardées, la réinstallation ouvre la page de configuration de Miraj Manager, qui propose de garder les comptes existants (mot de passe actuel de root) ou de définir un nouveau mot de passe root (les autres comptes sont alors supprimés, les bases restent). Détails : 21.14.

Linux#

L'archive Linux se décompresse où vous le souhaitez ; lancez miraj-server comme en 2.3 (chemins à la manière de Linux : ./miraj-server --root /var/lib/miraj --log). Le pilote ODBC s'enregistre par le script fourni (chapitre 28).

2.2 Installer Miraj Express avec l'assistant d'installation#

Sous Windows, Miraj Express et Miraj Entreprise s'installent chacune par un programme d'installation en un seul fichier (MIRAJ-<version>-Express-setup.exe ou MIRAJ-<version>-Entreprise-setup.exe — le même assistant pour les deux éditions) : il contient miraj-server.exe, miraj.dll, miraj-cli.exe, l'éditeur de configuration (miraj-config-editor.exe), le gestionnaire Miraj Server Manager (miraj-manager.exe, voir 15.9) et les dépose sur la machine en réglant le port, le mot de passe de root et le démarrage automatique. Il demande les droits d'administrateur à son lancement (invite du contrôle de compte d'utilisateur) et s'ouvre au centre de l'écran, dans la langue de Windows ; la liste en bas à gauche en choisit une autre parmi les dix langues des messages d'erreur (l'arabe s'affiche de droite à gauche). Les tâches planifiées, la clé de désinstallation et les dossiers créés portent le nom de l'édition installée (« Miraj Express » ou « Miraj Entreprise ») : les deux éditions s'installent donc côte à côte sans se gêner.

L'assistant avance page par page avec les boutons < Précédent, Suivant > et Annuler (une confirmation est demandée avant de quitter) :

  1. Bienvenue. Si Miraj Express est déjà installé, l'assistant le détecte et propose de mettre à jour ou modifier les réglages, ou de désinstaller ; dans les deux cas, les bases sont conservées. Les dossiers, le port et les options de l'installation existante sont repris.
  2. Dossiers de destination. Dossier du programme (par défaut C:\Program Files\Miraj Express) et Dossier des données (par défaut C:\ProgramData\Miraj Express\data), avec Parcourir… pour en choisir d'autres. Un dossier de données qui contient déjà des bases est gardé tel quel.
  3. Réglages du serveur.
    • Port TCP : 7007 par défaut ; un port déjà pris par un autre programme est signalé.
    • Langage SQL de l'instance : langage MIRAJ (premier choix, par défaut) ou PostgreSQL. PostgreSQL ajoute l'élément POSTGRESQL au sql_mode du fichier de configuration : le port parle alors le protocole PostgreSQL (psql, pilotes PostgreSQL) et plus le protocole hérité ; Gestium et les outils du protocole hérité demandent une instance en langage MIRAJ, alors que miraj-cli, les outils de MIRAJ, le pilote ODBC de MIRAJ et la bibliothèque Python miraj s'adaptent aux deux. L'éditeur de configuration permet de changer ce choix plus tard, pris en compte au redémarrage du serveur (voir 15.10).
    • Accepter les connexions depuis : cet ordinateur seulement (écoute sur 127.0.0.1) ou tout le réseau (écoute sur 0.0.0.0). Dans le second cas, le port est ouvert dans le pare-feu Windows (règle « Miraj Express ») ; sans certificat TLS, les échanges circulent en clair (voir 15. Administration du serveur).
    • Démarrer le serveur avec Windows : tâche planifiée « Miraj Express », lancée au démarrage de la machine sous le compte SYSTEM, sans limite de durée et relancée en cas d'arrêt (miraj-server.exe --root <données> --log).
    • Créer les raccourcis du menu Démarrer : dossier « Miraj Express » avec le gestionnaire et l'éditeur de configuration (ce dernier se lance en administrateur, le fichier de configuration étant dans le dossier du programme).
    • Démarrer MIRAJ Manager avec Windows (coché par défaut) : le gestionnaire se lance à l'ouverture de session d'un administrateur, icône seule dans la zone de notification (miraj-manager.exe --tray, tâche « Miraj Express - gestionnaire », avec les droits d'administrateur sans invite).
    • Lancer MIRAJ Manager à la fin de l'installation (coché par défaut) : le gestionnaire s'ouvre dès que le serveur répond.
  4. Compte administrateur. Mot de passe du compte root, saisi deux fois (un mot de passe de moins de 8 caractères est déconseillé). Il est transmis au serveur par la variable MIRAJ_INITIAL_ROOT_PASSWORD, jamais sur une ligne de commande. Sur un dossier de données existant, les comptes sont conservés, mot de passe de root compris ; la case Recréer les comptes les remplace par le seul root local, avec le mot de passe saisi (comme --reset-accounts, voir 15.5.3).
  5. Prêt à installer. Récapitulatif des choix ; Installer lance l'installation.
  6. Installation. Une barre de progression suit les étapes : arrêt des programmes Miraj lancés depuis le dossier du programme (jamais un autre serveur de la machine ; l'agent de l'accès distant, s'il tourne, est d'abord arrêté proprement), extraction des fichiers, création du compte root, configuration, pare-feu, raccourcis, tâches planifiées, inscription dans la liste des programmes de Windows, relance de l'agent de l'accès distant par sa tâche s'il est activé, démarrage du serveur. Afficher les détails déroule le journal des étapes ; une étape facultative qui échoue (pare-feu, raccourcis, démarrage du gestionnaire) y figure comme avertissement sans arrêter l'installation.
  7. Fin. L'assistant indique l'adresse et le port d'écoute et le compte de connexion. En cas d'échec, le message d'erreur est affiché (avec, si le serveur ne répond pas, le chemin de server.log) et < Précédent ramène au récapitulatif pour corriger et relancer.

Fichiers installés#

C:\Program Files\Miraj Express\
├── miraj-server.exe
├── miraj.dll
├── miraj_odbc.dll           (pilote ODBC « MIRAJ ODBC Driver », déclaré à Windows : voir le chapitre 28)
├── miraj-cli.exe
├── miraj-config-editor.exe
├── miraj-manager.exe
├── miraj_config.xml         (vos réglages, lus en priorité par le serveur)
├── miraj_default.xml        (référence, régénérée à chaque démarrage)
└── uninstall.exe            (désinstallation depuis les programmes de Windows)

C:\ProgramData\Miraj Express\data\
└── (bases, coffre des comptes, server.log : voir 2.6)

C:\ProgramData\Miraj Express\manager\
└── (fichiers du gestionnaire, créés à son usage : voir 21.11)

miraj_config.xml est placé à côté de miraj-server.exe (voir 2.5) : à la première installation, le serveur y crée le modèle commenté de toutes les variables, puis l'assistant y écrit port et bind ; les autres réglages se modifient avec l'éditeur de configuration ou le gestionnaire, et s'appliquent au redémarrage du serveur. Lors d'une mise à jour, seules les lignes port et bind sont réécrites ; une configuration laissée dans le dossier des données par une installation antérieure est déplacée à côté du serveur, avec tous ses réglages.

Le pilote ODBC est déclaré dans le registre (vue 64 bits : HKLM\SOFTWARE\ODBC\ODBCINST.INI\MIRAJ ODBC Driver et la valeur Installed de ODBC Drivers) ; voir le chapitre 28.

Désinstaller#

Miraj Express apparaît dans Paramètres → Applications (ou Panneau de configuration → Programmes et fonctionnalités) sous le nom « Miraj Express ». Désinstaller ouvre l'assistant directement sur la page de confirmation, qui exige le mot de passe de root : il est vérifié par une connexion au serveur installé, démarré au besoin ; un mot de passe faux refuse la désinstallation. La même page, et la même vérification, s'obtiennent en relançant miraj-express-installer.exe et en choisissant Désinstaller.

La désinstallation arrête le serveur et le gestionnaire, puis supprime les tâches planifiées (serveur, gestionnaire, sauvegardes planifiées), la règle de pare-feu, les raccourcis, l'entrée de la liste des programmes et les fichiers du programme ; la déclaration du pilote ODBC est retirée. Le dossier des données est conservé, et miraj_config.xml y est rangé : une réinstallation sur le même dossier retrouve les bases, les comptes et les réglages. Supprimez vous-même le dossier des données si vous n'en avez plus besoin. Le dossier du gestionnaire (C:\ProgramData\Miraj Express\manager) est conservé de même ; supprimez-le si vous n'en avez plus besoin.

Installation manuelle#

Sans l'assistant (autre édition, poste sans droits d'administrateur, script), copiez les exécutables où vous le souhaitez et lancez miraj-server comme indiqué en 2.3.

2.3 Démarrer miraj-server#

miraj-server.exe --root D:\donnees --log

Cette commande ouvre (ou crée s'il n'existe pas) le dossier de données D:\donnees, puis se met à l'écoute sur 127.0.0.1:7007. À la première ouverture du dossier, le compte root local est créé avec un mot de passe de 24 caractères tiré au sort, affiché une seule fois sur la console :

================================================================================
Compte root@localhost créé avec le mot de passe provisoire : Xq7mPt3hKc9WbZ2rNf8sLd4v
Il n'est affiché qu'une fois et n'est écrit nulle part : notez-le, puis changez-le :
  ALTER USER root@localhost IDENTIFIED BY 'nouveau mot de passe';
================================================================================

Suivent la ligne de démarrage (version, édition, adresse d'écoute, dossier, nombre de fils, licence) et le fichier de configuration retenu :

MIRAJ 1.0.0 Entreprise - serveur console sur 127.0.0.1:7007, dossier "D:\donnees", 12 fils, licence MRJ-2026-000123 (Société Exemple SA), valide jusqu'au 2027-10-11.
Configuration : D:\donnees\miraj_config.xml.

Ce mot de passe n'est écrit ni dans server.log ni ailleurs : notez-le avant de fermer la console. Pour un script d'installation, choisissez-le vous-même avec --initial-root-password <mot de passe> ou la variable d'environnement MIRAJ_INITIAL_ROOT_PASSWORD (préférable : une ligne de commande est visible des autres utilisateurs de la machine) ; il n'est alors pas affiché, une ligne rappelle seulement son origine (Compte root@localhost créé avec le mot de passe initial donné par --initial-root-password (à retirer ensuite).). Ces réglages ne servent qu'à la création du coffre des comptes : ensuite, ils sont ignorés (une note le signale au démarrage) et root se change par ALTER USER. Un mot de passe perdu se remplace avec --reset-accounts (voir 15. Administration du serveur, § 15.5.3).

Options de la ligne de commande#

Toutes les options acceptent un nom insensible à la casse (--Root et --root sont équivalents). miraj-server --help affiche la liste complète.

OptionValeur par défautEffet
--root <dossier>dataDossier de données à ouvrir (créé s'il n'existe pas).
--config <fichier.xml>à côté de l'exécutable, sinon <dossier>/miraj_config.xmlFichier de configuration à utiliser à la place de celui du dossier de données.
--bind <adresse>127.0.0.1Adresse d'écoute du serveur.
--port <port>7007Port TCP d'écoute (--port 0 laisse le système choisir un port libre).
--logdésactivéTient à jour <dossier>/miraj/server.log (erreurs SQL, bugs, incidents du serveur ; les requêtes réussies n'y figurent pas).
--lang <code>enLangue des messages d'erreur des sessions : en, fr, zh, hi, es, ar, pt, ru, de, ja.
--result-buffer <Mo>64Mémoire gardée par connexion pour un client lent à lire son résultat.
--write-timeout <secondes>60Attente maximale d'un client qui ne lit plus son résultat, avant déconnexion (net_write_timeout).
--connect-timeout <secondes>10Délai maximal pour achever la poignée de main d'un client, TLS comprise, compté dès l'acceptation de la connexion (connect_timeout).
--max-connections <n>151Connexions simultanées au plus (de 1 à 100 000) ; au-delà, le client reçoit l'erreur 1040 (max_connections).
--max-connect-errors <n>100Échecs d'authentification consécutifs d'une adresse qui la bloquent 15 minutes (erreur 1129 ; FLUSH HOSTS la débloque ; max_connect_errors).
--idle-timeout <secondes>28800 (8 h)Délai maximal entre deux commandes d'un client déjà connecté (wait_timeout).
--lock-wait-timeout <secondes>50Attente maximale d'un verrou de table explicite (LOCK TABLES), ou d'une table tenue par l'instruction longue d'une autre session, avant l'erreur 1205.
--sql-mode <modes>STRICT_TRANS_TABLESsql_mode initial des sessions ; --sql-mode "" : mode non strict (NULL ou valeur invalide remplacés par la valeur implicite de la colonne, avec un avertissement). L'élément POSTGRESQL choisit le langage PostgreSQL pour toute l'instance : le port principal parle alors le protocole PostgreSQL (psql, pilotes PostgreSQL) au lieu du protocole hérité ; pris en compte au démarrage seulement (voir 15.10).
--deferred-update ON|OFFONMise à jour différée des UPDATE d'une ligne désignée par sa clé : réévalués au COMMIT plutôt que de prendre la ligne (voir 13. Transactions et concurrence).
--concurrency mvocc|pessimisticmvoccModèle de concurrence : contrôle multiversion optimiste (aucune attente sur les lignes) ou verrous de ligne classiques. Option temporaire, le temps de comparer les deux modèles.
--key-dir <dossier>profil du compte qui lance le serveurDossier des clés du coffre chiffré des comptes, tenu hors du dossier de données (voir 15. Administration du serveur).
--data-encryption ON|OFFOFFÉditions Entreprise et Cluster : chiffre un dossier de données neuf (voir 24. Chiffrement au repos). Un dossier déjà chiffré l'est de toute façon.
--default-table-encryption ON|OFFONSur un dossier chiffré : bases et tables créées sans clause ENCRYPTION chiffrées.
--encryption-passphrase-file <fichier>—Fichier de la phrase secrète d'un dossier chiffré (protégé par DPAPI sous Windows, droits 0600 ailleurs) ; la variable d'environnement MIRAJ_ENCRYPTION_PASSPHRASE est prioritaire.
--initial-root-password <mot de passe>tiré au sortMot de passe de root à la création du coffre des comptes (premier démarrage ou --reset-accounts) ; ignoré ensuite. Aussi par la variable d'environnement MIRAJ_INITIAL_ROOT_PASSWORD.
--require-password ON|OFFONRefuse un compte sans mot de passe joignable depuis une autre machine (require_password, voir 14. Comptes et privilèges).
--local-infile ON|OFFONPermet LOAD DATA LOCAL et LOAD XML LOCAL (fichier envoyé par le client) ; OFF : erreur 1148.
--reset-accounts—Recrée le coffre des comptes avec le seul root local et un nouveau mot de passe, tiré au sort et affiché une fois, ou celui de --initial-root-password (utilisé seul, avec --root et éventuellement --key-dir).
--secure-file-priv <dossier>vide (LOAD_FILE désactivé)Seul dossier lisible par LOAD_FILE, pour les comptes ayant le privilège FILE.
--lob-threshold <octets>8192Taille à partir de laquelle une valeur BLOB quitte la table pour le magasin séparé de la table.
--lob-cache <Mo>128Taille du cache de lecture des BLOB externalisés.
--event-scheduler ON|OFF|DISABLEDOFFÉtat du planificateur d'événements au démarrage (DISABLED interdit de l'activer ensuite).
--parallel-threads <n>un par cœurFils que toutes les requêtes du serveur peuvent occuper en tout (édition Entreprise/Cluster ; sans effet en Express et en Developer, limitées à un fil).
--save-policy relaxed|statement|periodicrelaxedPolitique de durabilité des écritures (voir 15. Administration du serveur).
--save-interval <millisecondes>5000Intervalle du vidage périodique du journal (save-policy relaxed ou periodic).
--slow-query-logdésactivéActive le journal des requêtes lentes.
--slow-query-log-file <fichier><dossier>/miraj/slow.logFichier du journal des requêtes lentes (l'active aussi).
--long-query-time <secondes>10Durée au-delà de laquelle une instruction est une requête lente.
--max-statement-time <secondes>300 (5 min)Durée au-delà de laquelle une instruction est abandonnée automatiquement (erreur 1969), pour qu'une boucle de procédure, un déclencheur ou une requête sans fin ne retienne jamais le serveur ; 0 : sans limite.
--max-statement-memory <octets>2147483648 (2 Gio)Mémoire que les tris, regroupements, DISTINCT, fenêtres et jointures d'une instruction tiennent au plus (erreur 1038 ou 1114 au-delà ; 0 : sans limite).
--max-server-memory <octets>la moitié de la mémoire physiqueMême plafond, pour toutes les instructions du serveur ensemble (erreur 9067 au-delà ; 0 : sans limite).
--min-free-disk-space <octets>536870912 (512 Mio)Espace libre minimal du volume des données : en dessous, INSERT et UPDATE sont refusés (erreur 1021) ; 0 désactive le contrôle.
--tls-cert <fichier.pem> / --tls-key <fichier.pem>aucunCertificat et clé privée TLS ; le serveur chiffre alors les connexions et refuse les clients qui ne se connectent pas en TLS (erreur 3159). Ces deux options vont ensemble.
--allow-plain-with-tlsdésactivéAvec un certificat, accepte aussi les clients non chiffrés (TLS seulement proposé, ancien comportement).
--require-tlsdésactivéExige TLS même avec --allow-plain-with-tls (suppose --tls-cert/--tls-key).
--cluster-config <cluster.toml>fichier cluster.toml à côté de l'exécutableFichier de configuration du nœud, édition Cluster uniquement.
--log-bin[=<chemin>], --server-id <n>, --gtid-domain-id <n>, --max-binlog-size <octets>, --binlog-expire-logs-seconds <n>, --sync-binlog <n>, --log-slave-updatesdésactivéJournal binaire et réplication par journal binaire (éditions Entreprise, Cluster et Developer ; chapitre 16).
--max-allowed-packet <octets>67108864 (64 Mio)Taille maximale d'une commande du client (de 1 Kio à 1 Gio ; max_allowed_packet, erreur 1153 au-delà).
--group-concat-max-len <octets>1048576 (1 Mio)Valeur initiale de group_concat_max_len : un résultat de GROUP_CONCAT plus long est tronqué (avertissement 1260).
--lazy-databases ON|OFFONLes tables d'une base ne sont lues qu'à sa première utilisation ; OFF lit toutes les bases au démarrage.
--backup-dir <dossier>vide (BACKUP / RESTORE refusés)Seul dossier où BACKUP DATABASE écrit et d'où RESTORE DATABASE lit (voir 18).
--proxy-protocol-from <adresse,…>aucuneAdresses de miraj-proxy autorisées à annoncer l'adresse réelle du client (en-tête PROXY ; chapitre 22).
--change-events-…voir le chapitre 20Réglages de départ des événements de changement (LISTEN, WAIT FOR CHANGES) : buffer-events, buffer-size, bulk-rows, max-payload, max-listeners, wait-timeout, retention. Sans effet en Express.
--mcp ON|OFFOFFPoint d'accès MCP pour les assistants IA (pas en Express), sur --mcp-bind (127.0.0.1) et --mcp-port (7008) ; --mcp-idle-timeout (300), --mcp-statement-timeout (30) et --mcp-max-rows (5000) le règlent (chapitre 19).
--rest ON|OFFOFFPoint d'accès REST (toutes éditions), sur --rest-bind (127.0.0.1) et --rest-port (7009), avec --rest-endpoints, --rest-tables, --rest-sql, --rest-basic et d'autres réglages (chapitre 23).
--journal-gap-replaydésactivéReprise forcée, le temps d'un démarrage, d'un journal abîmé au milieu (voir 15. Administration du serveur).
--license-file <miraj.lic>recherche décrite en 30.2Fichier de licence des éditions Entreprise et Cluster.
--install-license <miraj.lic | MLIC1-… | ->—Vérifie la licence, la range dans <dossier>/miraj/miraj.lic et quitte, sans démarrer le serveur (avec --root, chapitre 30).
--machine-id—Affiche l'empreinte de la machine, pour une licence liée à une machine, et quitte.
--help, -h, /?—Affiche l'usage et quitte.

Chaque option de la ligne de commande peut aussi être fixée durablement dans miraj_config.xml (voir 2.5) ; en cas de conflit, la ligne de commande l'emporte.

2.4 Installer et utiliser miraj-cli#

miraj-cli n'a besoin d'aucune installation particulière : c'est un exécutable autonome, qui travaille de deux façons.

Connecté à un serveur. Avec une option de connexion (--host, --port, --user, --password…), la console se connecte à miraj-server et reconnaît le langage de l'instance (MIRAJ ou PostgreSQL) :

miraj-cli.exe --host 127.0.0.1 --port 7007 --user root --password
MIRAJ 1.0.0 - connecté (langage MIRAJ) - tapez \help pour l'aide, \q pour quitter.
miraj>

--password sans valeur demande le mot de passe au clavier, sans écho ; sans --password, il est lu dans la variable d'environnement MIRAJ_PASSWORD si elle existe. --password=<mot de passe> fonctionne aussi, avec un avertissement : la ligne de commande est visible dans la liste des processus.

Embarqué, sur un dossier de données. Sans option de connexion, la console ouvre directement le dossier, sans réseau ni compte (langage MIRAJ) :

miraj-cli.exe --root D:\donnees
MIRAJ 1.0.0 Entreprise - tapez \help pour l'aide, \q pour quitter.
miraj>

Un dossier de données n'est ouvert que par un processus à la fois : tant que miraj-server le sert, ce mode échoue avec Dossier de données « D:\donnees » déjà ouvert par un autre processus MIRAJ ; passez alors par le réseau.

Options de la ligne de commande#

OptionEffet
--host <hôte>Se connecte au serveur de cet hôte (127.0.0.1 par défaut).
--port <port>Port du serveur (7007 par défaut).
--user <compte>Compte de connexion (root par défaut).
--password, --ask-passwordMot de passe demandé au clavier, sans écho.
--password=<mot de passe>Mot de passe donné sur la ligne de commande (déconseillé).
--protocol auto|miraj|postgresqlLangage de l'instance : reconnu à la connexion (auto, défaut), ou imposé.
--sslTLS exigé, certificat du serveur vérifié (nom d'hôte compris).
--ssl-ca <fichier.pem>Autorité qui a signé le certificat du serveur (implique --ssl).
--ssl-insecureTLS exigé, certificat accepté sans vérification.
--no-sslConnexion en clair. Sans aucune option TLS, la connexion est chiffrée si le serveur le propose, certificat non vérifié.
--root <dossier>Mode embarqué : dossier de données à ouvrir (data par défaut).
--config <fichier.xml>Mode embarqué : fichier de configuration à utiliser à la place de celui du dossier de données.
-d <base>Sélectionne une base au démarrage (équivalent à USE <base>, ou au schéma courant sur une instance en langage PostgreSQL).
-e "<SQL>"Exécute l'instruction (ou les instructions séparées par ;) puis quitte, sans lancer le mode interactif.
--lang <code>Langue des messages d'erreur : en, fr, zh, hi, es, ar, pt, ru, de, ja.
--jsonAffiche les résultats au format JSON plutôt qu'en tableau.
--timingAffiche le temps d'exécution de chaque instruction.
--no-historyNe lit ni n'écrit l'historique des instructions saisies.
<fichier.sql>Exécute le fichier donné puis quitte.

Voir 25. miraj-cli pour la référence complète des commandes du mode interactif (\d, \l, \history, source, etc.).

2.5 Fichier de configuration#

À l'image d'un fichier de configuration classique d'un serveur SQL, MIRAJ lit un fichier XML au démarrage :

  • miraj_config.xml — vos réglages, lu au démarrage : celui du dossier de miraj-server.exe s'il y existe, sinon celui du dossier de données (où MIRAJ crée un squelette commenté s'il n'existe pas encore). --config impose un autre chemin ; le fichier retenu est écrit au démarrage (Configuration : …).
  • miraj_default.xml, à côté du fichier précédent — régénéré à chaque démarrage, liste toutes les variables reconnues avec leur valeur par défaut. C'est un document de référence uniquement : il n'est jamais relu par le serveur.

Ordre de priorité, du plus faible au plus fort : valeur par défaut du moteur, puis miraj_config.xml, puis argument de la ligne de commande.

2.6 Organisation du dossier de données#

Le dossier de données (--root) est l'unité d'administration d'un serveur ou d'une console MIRAJ : tout ce qui appartient à une installation y réside.

D:\donnees\
├── miraj_config.xml         (vos réglages, s'il n'y en a pas à côté de miraj-server.exe)
├── miraj_default.xml        (référence, régénéré à chaque démarrage à côté du précédent)
├── miraj.lck                (verrou : un seul processus ouvre le dossier à la fois)
├── journal.reserve          (4 Mio réservés pour libérer de la place sur un disque plein)
├── miraj\
│   ├── accounts.mra         (coffre chiffré des comptes)
│   ├── miraj.lic            (licence installée par --install-license, éditions Entreprise et Cluster)
│   ├── keyring.mrk          (trousseau d'un dossier chiffré au repos, chapitre 24)
│   ├── server.log           (avec --log : erreurs, bugs, incidents)
│   └── slow.log             (avec --slow-query-log)
└── ma_base\                 (une base = un sous-dossier)
    ├── journal.mrl          (journal d'écriture de la base)
    ├── sequences.mrq        (séquences de la base, si elle en a)
    ├── clients.mrj          (une table = un fichier .mrj)
    ├── clients.bmrj         (BLOB externalisés de la table, si présents)
    ├── archives.dmrj        (une table disque, ENGINE = Aria / MyISAM / DISK)
    └── archives.dbmrj       (grosses valeurs de la table disque, si présentes)
  • Une base = un sous-dossier du dossier de données.
  • Une table = un fichier .mrj dans le sous-dossier de sa base, au format interne MIRA v2.
  • Les valeurs BLOB d'une table dont la taille dépasse --lob-threshold sont conservées dans un magasin séparé, <table>.bmrj, à côté du fichier .mrj.
  • Une table disque (voir Moteurs de stockage) est un fichier <table>.dmrj au lieu du .mrj ; ses valeurs de plus d'un quart de page (4 Kio environ) vont dans <table>.dbmrj.
  • Chaque base a son propre journal d'écriture, journal.mrl, rejoué à l'ouverture si le dernier arrêt n'a pas été propre.
  • journal.reserve ne contient aucune donnée : sur un volume plein, seules les opérations qui rendent de la place (TRUNCATE, maintenance des partitions) la consomment ; elle est recréée ensuite. Les autres écritures s'arrêtent bien avant, au seuil --min-free-disk-space (erreur 1021).
  • Le coffre des comptes (accounts.mra) est commun au dossier de données ; il est chiffré, et sa clé est rangée par défaut hors du dossier de données (voir ci-dessous et 15. Administration du serveur).

2.7 Sécurité par défaut#

  • Écoute locale uniquement. Sans --bind, miraj-server n'écoute que sur 127.0.0.1 : aucune machine distante ne peut s'y connecter tant que vous n'avez pas explicitement choisi une autre adresse d'écoute.
  • Compte administrateur créé au premier lancement, protégé par un mot de passe. À la création du dossier de données, miraj-server crée le compte root local avec un mot de passe tiré au sort, affiché une seule fois sur la console (ou celui de --initial-root-password). Remplacez-le par le vôtre dès la première connexion :

    ALTER USER root@localhost IDENTIFIED BY 'un-mot-de-passe-solide';

    Le moteur embarqué (miraj-cli sur un dossier local, bibliothèque) ne crée pas de coffre à l'ouverture : son root local reste sans mot de passe tant que le dossier n'a pas servi à miraj-server.

  • Comptes distants protégés. Un compte sans mot de passe joignable depuis une autre machine est refusé (require_password), et le compte root initial détient SYSTEM_USER : un compte qui n'a que CREATE USER ne peut ni le modifier ni le supprimer.
  • Tentatives répétées freinées. Chaque échec d'authentification retarde la réponse suivante de la même adresse (100 ms, puis le double, 5 s au plus) ; au bout de --max-connect-errors échecs consécutifs (100), l'adresse est bloquée 15 minutes. Au plus --max-connections clients (151) sont servis à la fois, et une poignée de main doit s'achever en --connect-timeout secondes.
  • TLS exigé dès qu'un certificat est fourni (--allow-plain-with-tls pour accepter aussi les clients non chiffrés).
  • Clés du coffre des comptes rangées hors du dossier de données, par défaut dans le profil du compte qui exécute le serveur (--key-dir pour choisir un autre emplacement).

Le détail de la gestion des comptes, des privilèges, du chiffrement en transit (TLS) et de la supervision est traité dans 15. Administration du serveur et 14. Comptes et privilèges.