Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:centos:6:avance:l105 [2020/08/07 16:27] adminelearning:workbooks:centos:6:avance:l105 [2023/02/15 15:55] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
-**Version**: ~~LASTMOD~~ 
  
-======LRF305 - Gestion des Données avec SQL======+Version : **2022.01**
  
-=====Contenu du Module=====+Dernière mise-à-jour : ~~LASTMOD~~
  
-    * **LRF305 La Langage SQL** +======LCF304 Gestion du Partage des Fichiers======
-      * SQL +
-        * Chaînes de caractères +
-        * Nombres +
-          * Nombres Entiers +
-          * Nombres Décimaux +
-          * Nombres Négatifs +
-        * Valeurs NULL +
-        * Noms de Fichiers +
-        * Variables Utilisateurs +
-        * Commentaires +
-        * Commandes +
-          * SELECT +
-          * UPDATE +
-          * DELETE FROM +
-          * DROP TABLE +
-          * INSERT +
-          * ALTER +
-          * MATCH +
-        * Opérateurs +
-          * Mathématiques +
-          * Logiques +
-          * Comparaison +
-        * Fonctions +
-          * Mathématiques +
-          * Chaînes +
-          * Dates +
-          * Contrôle +
-          * Agrégation +
-          * Autres +
-      * Types de Champs +
-        * Nombres entiers +
-        * Nombres à virgule flottante +
-        * Dates et Heures +
-          * Types de données TIMESTAMP +
-        * Chaînes +
-        * TEXT et BLOB +
-        * ENUM et SET +
-      * Types de Moteurs de Stockage +
-      * Caractéristiques des Moteurs +
-        * InnoDB +
-          * Mécanisme Interne +
-          * Transactions +
-          * Tablespace +
-          * Multiversion Concurrency Control +
-          * Transaction Isolation Levels +
-        * MyISAM +
-          * MyISAM FIXED +
-          * MyISAM DYNAMIC +
-          * MyISAM COMPRESSED +
-          * Particularités +
-        * Memory +
-          * Particularités +
-          * En Pratique +
-        * Archive +
-          * Particularités +
-        * CSV +
-        * FEDERATED +
-        * NDB Cluster +
-        * Autres Moteurs Non Standards +
-          * XtraDB +
-          * Aria +
-      * Jointures +
-        * FULL JOIN +
-        * LEFT JOIN +
-        * RIGHT JOIN +
-      * LAB #1 - Le Langage SQL+
  
-=====SQL=====+=====Contenu du Module=====
  
-====Chaînes de caractères====+  * **LCF304 - Gestion du Partage des Fichiers** 
 +    * Contenu du Module 
 +    * Gestion du Serveur NFS 
 +      * Présentation 
 +        * Les Services et Processus du Serveur NFSv3 
 +          * Les Services RPC 
 +        * Options d'un Partage NFS 
 +        * Commandes de Base 
 +      * Installation 
 +      * LAB #1 Mise en Place du Serveur NFS 
 +        * Configuration du Serveur 
 +        * Configuration du Client 
 +      * Surveillance du Serveur 
 +        * La Commande rpcinfo 
 +        * La Commande nfsstat 
 +    * Gestion du Serveur CIFS Samba 
 +      * Les Réseaux Microsoft 
 +        * Types de Réseaux Microsoft 
 +        * Types de Clients Windows 
 +      * Présentation de Samba 
 +        * Daemons Samba 
 +        * Commandes Samba 
 +      * Installation de Samba 
 +        * Configuration de base 
 +        * Démarrage manuel de Samba 
 +        * Configuration de Samba 
 +          * Gestion des comptes et des groupes 
 +          * Création du fichier smbpasswd 
 +          * Comprendre la structure du fichier de configuration smb.conf 
 +      * LAB #2 - Tester Samba en tant que Serveur de Fichiers
  
-Les chaînes de caractères doivent être entourées de **'** ou de **"**.+=====Gestion du Serveur NFS=====
  
-//Exemples//+====Présentation====
  
-'Linux est incroyable'+Quand on parle de NFS, on parle d'**exportation** d'un répertoire sur le serveur afin que celui-ci puisse être vu par des clients sur le réseau. Ces clients peuvent ensuite monter le répertoire et l'utiliser comme si celui-ci faisait partie de son propre filesystem.
  
-"Windows est ......."+Le Network File System (NFS) est le protocole de partage de fichiers historique sur des systèmes UnixLors de l'introduction de Samba, NFS a vu sa popularité diminuée, essentiellement parce que la connexion est non-sécurisée :
  
-"Je lui dit : ""Je t'aime"""+  * le partage ainsi que ses caractéristiques sont configurés par rapport à l'adresse IP du client, or l'IP Spoofing est de plus en plus répandu, 
 +  * aucun mot de passe n'est demandé lors de la connexion d'un utilisateur à une ressource car le serveur NFS présume que l'utilisateur //jean// distant est le même utilisateur du compte //jean// sur le serveur NFS.
  
-====Nombres====+Cependant l'arrivée sur le marché de serveurs NAS domestiques ainsi que l'utilisation de la virtualisation dans le milieu professionnel fait que NFS connait un regain d'intérêt en tant que stockage mutualisé raid, simple à mettre en œuvre.
  
-Il existe 3 types de nombres :+Il existe actuellement versions de NFS :
  
-===Nombres Entiers===+^ Version ^ Protocole Utilisé ^ Dépendance ^ 
 +| **NFSv2** | TCP et UDP | portmap | 
 +| **NFSv3** | TCP et UDP | portmap | 
 +| **NFSv4** | TCP | Aucune - les fonctions de portmap sont incluses dans NFSv4 |
  
-Une séquence de chiffres **sans espaces**+La version utilisée par défaut sous CentOS/Redhat est **NFSv3**.
  
-//Exemple//+===Les Services et Processus du Serveur NFSv3===
  
-999256+La version NFSv3 utilise les services suivants :
  
-0+^ Services ^ Fonction ^ 
 +| **nfs** | Démarre le service NFS ainsi que les processus RPC pour recevoir et traiter les demandes des clients | 
 +| **nfslock** | Démarre les processus RPC qui permettent aux clients de verrouiller les fichiers sur le serveur 
 +| **portmap** | Gestion des réservations des ports pour les services RPC locaux afin que les services RPC distants puissent se connecter |
  
-===Nombres Décimaux===+==Les Services RPC==
  
-Utilisent le **point** comme séparateur.+Les services RPC ( //Remote Procedure Calls// ou appel de procédures distantes ) ont été inventé par SUN Microsystem pour faciliter le travail des développeurs  de pous des échanges entre mchines distantes. Les RPC s'appuient sur des numéros de programmes.
  
-//Exemple//+Lorsque le client veut faire une requête à un service RPC, il contacte en premier lieu le service **rpcbind** qui assigne un numéro de port au délà du numéro **32768** à un numéro de programme RPC.
  
-120.54 
  
-5566.8956e+12+===Options d'un Partage NFS===
  
-===Nombres Négatifs===+Certaines options, appliquées à un partage, modifient le comportement du serveur NFS pour le partage concerné lors de son démarrage :
  
-Sont précédés par le signe **-**.+^ Option ^ Comportement ^ 
 +| **ro** | Accès en lecture seule | 
 +| **rw** | Accès en lecture / écriture | 
 +| **sync** | Ecriture synchrone ( écriture immédiate sur disque ) | 
 +| **async** | Ecriture asynchrone ( écriture sur disque en utilisant une cache ) | 
 +| **root_squash** | Root perd ses prérogatives sur le partage concerné | 
 +**no_root_squash** | Root garde ses prérogatives sur le partage concerné | 
 +| **no_lock** | Pas de verrous sur les fichiers accédés | 
 +| **all_squash** | Force la mapping de tous les utilisateurs vers l'utilisateur **nobody** | 
 +| **anonuid** | Fixe l'UID de l'utilisateur anonyme | 
 +| **anongid** | Fixe le GID de l'utilisateur anonyme |
  
-//Exemple//+<WRAP center round important> 
 +**Important** : Si plusieurs options sont spécifiées, celles-ci doivent être séparées par des virgules. 
 +</WRAP>
  
--458+===Commandes de Base===
  
--147.36+Plusieurs commandes permettent de gérer et de s'informer sur l'activité du serveur NFS :
  
-====Valeurs NULL====+^ Commande ^ Comportement ^ 
 +| **exportfs** | Affiche les partages actifs sur le serveur courant | 
 +| **nfsstat** | Affiche les statistiques de l'activité NFS | 
 +| **rpcinfo** | Affiche les démons gérés en effectuant une requête RPC sur le serveur courant | 
 +| **showmount** | Affiche les partages actifs sur un serveur distant | 
 +| **mount** | Permet de monter un partage distant sur un répertoire local |
  
-Une chaîne **sans données**. +====LAB #1 Mise en Place du Serveur NFS====
  
-<note warning> +===Configuration du Serveur===
-N'est pas la même chose qu'une chaîne **vide** ou un **0** dans le cas d'un nombre. +
-</note>+
  
-====Noms de Fichiers====+<WRAP center round important> 
 +**Important** : Arrêtez votre VM. Dans la fenêtre de Oracle VM VirtualBox, cliquez sur **Fichier > Paramètres > Réseau** et créez un réseau NAT appelé **NatNetwork**. Dans les paramètres de votre VM, cliquez sur **Réseau** et configurez la Carte 1 en Réseau NAT dans le réseau NatNetwork. Démarrez votre VM. 
 +</WRAP>
  
-Les noms de bases, tables et colonnes :+Configurez votre interface réseau si ce n'est pas déjà fait :
  
-  * peuvent contenir jusqu'à 64 caractères +<code> 
-  * peuvent commencer par un chiffre +[root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 10.0.2.16/24 gw4 10.0.2.2 
-  * ne peuvent pas contenir **que** de chiffres +Connection 'ip_fixe' (5ac899e6-3f7b-415e-b9d7-c950fab007d5) successfully added. 
-  * ne peuvent pas contenir un **/**, une **\** ou un **point**+[root@centos7 ~]# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8 
 +[root@centos7 ~]# nmcli connection up ip_fixe  
 +Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1) 
 +[root@centos7 ~]# systemctl restart NetworkManager.service 
 +</code>
  
-Les alias :+Ajoutez une autre adresse IP pour le NFS :
  
-  * peuvent contenir jusqu'à 255 caractères +<code> 
-  * peuvent contenir un **/**, une **\** ou un **point** +[root@centos7 ~]# nmcli connection mod ip_fixe +ipv4.addresses 192.168.1.2/24 
-   +</code>
-====Variables Utilisateurs====+
  
-Les variables n'ont pas besoin d'être **initialisées**. Elles sont automatiquement crées avec la valeur **NULL**.+Continuez maintenant par la mise en place du service **nfs** :
  
-====Commentaires====+<code> 
 +[root@centos7 ~]# systemctl status nfs.service 
 +nfs-server.service - NFS server and services 
 +   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled) 
 +   Active: inactive (dead)
  
-Les commentaires **d'une ligne** sont précédés par le caractère **#** ou **- -**.+[root@centos7 ~]# systemctl enable nfs-server.service 
 +ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/multi-user.target.wants/nfs-server.service' 
 +[root@centos7 ~]systemctl status nfs.service 
 +nfs-server.service NFS server and services 
 +   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled) 
 +   Active: inactive (dead) 
 +</code>
  
-Les commentaires sous plusieurs lignes sont entourés comme suit :+La mise en place d'un partage ponctuel se fait en utilisant la commande **exportfs** en indiquant en argument le répertoire sous la forme de //adresse_ip_du_serveur:chemin_du_partage// 
  
 <code> <code>
-/* +[root@centos7 ~]# exportfs 
-Ceci est +[root@centos7 ~]# exportfs 192.168.1.2:/home/trainee 
-un commentaire +[root@centos7 ~]# exportfs 
-sur +/home/trainee 192.168.1.2
-plusieurs lignes +
-*/+
 </code> </code>
  
-====Commandes====+Démarrez maintenant le service **nfs** :
  
-===SELECT===+<code> 
 +[root@centos7 ~]# systemctl start nfs.service 
 +[root@centos7 ~]# systemctl status nfs.service 
 +nfs-server.service - NFS server and services 
 +   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled) 
 +   Active: active (exited) since Thu 2015-10-01 13:18:13 CEST; 4s ago 
 +  Process: 9552 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS) 
 +  Process: 9551 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) 
 + Main PID: 9552 (code=exited, status=0/SUCCESS) 
 +   CGroup: /system.slice/nfs-server.service
  
-Obtenir un ensemble de données à partir d'une ou de plusieurs tables.+Oct 01 13:18:13 centos7.fenestros.loc systemd[1]: Starting NFS server and services... 
 +Oct 01 13:18:13 centos7.fenestros.loc systemd[1]: Started NFS server and services. 
 +</code>
  
-**Syntaxe**+Afin de mettre en place un ou des partages **permanents**, il est nécessaire d'éditer le fichier **/etc/exports** :
  
 <code> <code>
-SELECT [table.][colonne]|expression [AS nom][,[table.[colonne] +/home/trainee 192.168.1.1 
-FROM nom-table [, nom_table ...] +/tmp *(fsid=0)
-[WHERE condition [AND|OR condition ...] +
-[GROUP BY [table.][colonne],[table].[colonne] ...] +
-[ORDER BY [table.][colonne][Description],[table].[colonne] ...]+
 </code> </code>
  
-//Exemples//+<WRAP center round important> 
 +**Important** : Dans ce cas, nous avons partagé le répertoire **/home/trainee** pour la seule adresse IP 192.168.1.1. 
 +</WRAP>
  
-  SELECT nom, prenom FROM familles ORDER BY nom+Redémarrez maintenant le service nfs afin que le fichier **/etc/exports** soit re-lu :
  
-  SELECT nomprenom FROM familles GROUP BY ville+<code> 
 +[root@centos7 ~]# systemctl restart nfs.service 
 +[root@centos7 ~]# systemctl status nfs.service 
 +nfs-server.service - NFS server and services 
 +   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled) 
 +   Active: active (exited) since Thu 2015-10-01 14:24:50 CEST; 18s ago 
 +  Process: 4642 ExecStopPost=/usr/sbin/exportfs -f (code=exitedstatus=0/SUCCESS) 
 +  Process: 4639 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS) 
 +  Process: 4638 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS) 
 +  Process: 4650 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS) 
 +  Process: 4649 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) 
 + Main PID: 4650 (code=exited, status=0/SUCCESS) 
 +   CGroup: /system.slice/nfs-server.service
  
-===UPDATE=== +Oct 01 14:24:50 centos7.fenestros.loc systemd[1]: Starting NFS server and services... 
- +Oct 01 14:24:50 centos7.fenestros.loc exportfs[4649]: exportfs: No options for /home/trainee 192.168.1.1: suggest 192.168.1.1(sync) to avoid warning 
-Mettre à jour des données dans une table.+Oct 01 14:24:50 centos7.fenestros.loc exportfs[4649]: exportfs: No options for /tmp *: suggest *(sync) to avoid warning 
 +Oct 01 14:24:50 centos7.fenestros.loc systemd[1]: Started NFS server and services. 
 +</code>
  
-**Syntaxe**+Puisque aucune option ne soit spécifiée pour les montages, ceux-ci ont été exportés avec des option par défaut. En utilisant l'option **-v** de la commande **exportfs**, il est possible de consulter ces options :
  
 <code> <code>
-UPDATE [LOW_PRIORITY][IGNORE] nom_table +[root@centos7 ~]# exportfs -v 
-SET colonne expression +/home/trainee 192.168.1.1(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash) 
-WHERE expression +/tmp          <world>(ro,wdelay,root_squash,no_subtree_check,fsid=0,sec=sys,ro,secure,root_squash,no_all_squash)
-ORDER BY expression +
-LIMIT valeur+
 </code> </code>
  
-^ Directive ^ Description ^ +===Configuration du Client===
-| LOW_PRIORITY | L'opération se fera quand la table n'est pas utilisée par un client | +
-| IGNORE | La mise à jour continue malgré des problèmes éventuels rencontrés. Les enregistrements posant problème ne seront PAS mis à jour |+
  
-//Exemples//+<WRAP center round important> 
 +**Important** : Arrêtez votre VM. Créez une clône de votre VM. Démarrez la VM clonée. 
 +</WRAP>
  
-  UPDATE familles SET Adresse2='*******', nb_enfants=2;+Re-configurez ensuite l'interface réseau de votre VM Client :
  
-  UPDATE familles SET nb_enfants=8 ORDER BY Nom LIMIT 3;+<code> 
 +[root@centos7 ~]# nmcli connection del ip_fixe
  
-===DELETE FROM===+[root@centos7 ~]# nmcli connection show ip_fixe 
 +Error: ip_fixe - no such connection profile.
  
-Supprimer des enregistrements d'une table.+[root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 10.0.2.17/24 gw4 10.0.2.2 
 +Connection 'ip_fixe' (5b54ad20-c3e2-4606-b54d-38b225cc578f) successfully added.
  
-**Syntaxe**+[root@centos7 ~]# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8
  
-<code> +[root@centos7 ~]# nmcli connection mod ip_fixe +ipv4.addresses 192.168.1.1/24
-DELETE [LOW_PRIORITY[QUICK] [IGNORE] FROM nom_table +
-       [WHERE where_definition] +
-       [ORDER BY ...+
-       [LIMIT row_count] +
-</code>+
  
-//Exemple//+[root@centos7 ~]# nmcli connection up ip_fixe  
 +Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
  
-  DELETE FROM familles WHERE Nom = Durant;+[root@centos7 ~]# systemctl restart NetworkManager.service 
 +</code>
  
-===DROP TABLE===+<WRAP center round important > 
 +**Important** : Démarrez la VM d'origine. 
 +</WRAP>
  
-**Syntaxe**+Dans la VM d'origine (serveur) passez SELinux en mode permissive et arrêtez le pare-feu :
  
 <code> <code>
-DROP DATABASE [IF EXISTSdb_name+[root@centos7 ~]# getenforce 
 +Enforcing 
 +[root@centos7 ~]# setenforce permissive 
 +[root@centos7 ~]# systemctl status firewalld.service 
 +firewalld.service - firewalld - dynamic firewall daemon 
 +   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) 
 +   Active: active (running) since Thu 2015-10-01 14:54:57 CEST; 19min ago 
 + Main PID: 479 (firewalld) 
 +   CGroup: /system.slice/firewalld.service 
 +           └─479 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 
 + 
 +Oct 01 14:54:57 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon. 
 +[root@centos7 ~]# systemctl stop firewalld.service
 </code> </code>
  
-Supprimer une table d'une base de données.+A partir de votre client, consultez les répertoire exportés du serveur :
  
-//Exemple// +<code> 
- +[root@centos7 ~]# showmount --exports 192.168.1.2 
-  DROP TABLE Test; +Export list for 192.168.1.2: 
- +/tmp          * 
-===INSERT===+/home/trainee 192.168.1.1 
 +</code>
  
-**Syntaxe**+Créez maintenant le répertoire **/nfs** dans le client et montez le partage **192.168.1.2:/home/trainee** :
  
 <code> <code>
-INSERT [LOW_PRIORITY] | [DELAYED] [IGNORE+[root@centos7 ~]# mkdir /nfs 
-[INTOnom_table [(nom_colonne ...)] +[root@centos7 ~]# mount -t nfs 192.168.1.2:/home/trainee /nfs
-VALUES ((expression | DEFAULT) ...) , (...)+
 </code> </code>
  
-ou+Notez que quand vous essayer de rentrer dans le répertoire en tant que root, vous obtenez le message **-bash: cd: /nfs: Permission non accordée** :
  
 <code> <code>
-INSERT [LOW_PRIORITY] | [DELAYED] [IGNORE] +[root@centos7 ~]# cd /nfs 
-[INTO] nom_table [(nom_colonne ...)+-bash: cd: /nfs: Permission denied
-SELECT ...+
 </code> </code>
  
-^ Directive ^ Description ^ +<WRAP center round important> 
-| LOW_PRIORITY | L'opération se fera quand la table n'est pas utilisée par un client | +**Important** : Puisque le répertoire **/home/trainee** a été exporté avec l'option par défaut **root_squash**. Ceci implique que root perd ses droits sur le répertoire quand il est monté. En fait, le service nfs remplace l'UID de 0 avec l'UID de l'utilisateur **nobody**. 
-| DELAYED | Permet à un client d'utiliser la table sans attendre la fin de l'opération | +</WRAP>
-| IGNORE | La mise à jour continue malgré des problèmes éventuels rencontrésLes enregistrements posant problème ne seront PAS mis à jour |+
  
 +Retournez donc dans le serveur et modifiez le fichier **/etc/exports** ainsi :
  
-**INSERT VALUES**+<code> 
 +[root@centos7 ~]# cat /etc/exports 
 +/home/trainee 192.168.1.1(async,rw,no_root_squash)  
 +/tmp * 
 +</code>
  
-Insérer des valeurs dans une table.+Redémarrez le service nfs :
  
-//Exemple//+<code> 
 +[root@centos7 ~]# systemctl restart nfs.service 
 +</code>
  
-  INSERT INTO familles (Nom, Prenom) VALUES ('Smith', 'John');+Vous noterez que maintenant vous êtes capable de vous positionner dans le répertoire **/nfs** du client en tant que **root** 
  
-**INSERT SELECT**+<code> 
 +[root@centos7 ~]# cd /nfs 
 +[root@centos7 nfs]#  
 +</code>
  
-Insérer des valeurs en provenance d'une autre table dans la table cible.+====Surveillance du Serveur====
  
-//Exemple//+===La Commande rpcinfo===
  
-  INSERT INTO familles (Prenom) SELECT enfants.prenom FROM enfants;+La commande **rpcinfo** permet de faire une requête RPC sur le serveur et de voir les démons gérés :
  
-===ALTER===+<code> 
 +[root@centos6 ~]# rpcinfo 
 +   program version netid     address                service    owner 
 +    100000    4    tcp6      ::.0.111               portmapper superuser 
 +    100000    3    tcp6      ::.0.111               portmapper superuser 
 +    100000    4    udp6      ::.0.111               portmapper superuser 
 +    100000    3    udp6      ::.0.111               portmapper superuser 
 +    100000    4    tcp       0.0.0.0.0.111          portmapper superuser 
 +    100000    3    tcp       0.0.0.0.0.111          portmapper superuser 
 +    100000    2    tcp       0.0.0.0.0.111          portmapper superuser 
 +    100000    4    udp       0.0.0.0.0.111          portmapper superuser 
 +    100000    3    udp       0.0.0.0.0.111          portmapper superuser 
 +    100000    2    udp       0.0.0.0.0.111          portmapper superuser 
 +    100000    4    local     /var/run/rpcbind.sock  portmapper superuser 
 +    100000    3    local     /var/run/rpcbind.sock  portmapper superuser 
 +    100024    1    udp       0.0.0.0.182.127        status     29 
 +    100024    1    tcp       0.0.0.0.182.157        status     29 
 +    100024    1    udp6      ::.146.50              status     29 
 +    100024    1    tcp6      ::.139.119             status     29 
 +    100011    1    udp       0.0.0.0.3.107          rquotad    superuser 
 +    100011    2    udp       0.0.0.0.3.107          rquotad    superuser 
 +    100011    1    tcp       0.0.0.0.3.107          rquotad    superuser 
 +    100011    2    tcp       0.0.0.0.3.107          rquotad    superuser 
 +    100005    1    udp       0.0.0.0.204.191        mountd     superuser 
 +    100005    1    tcp       0.0.0.0.196.122        mountd     superuser 
 +    100005    1    udp6      ::.177.18              mountd     superuser 
 +    100005    1    tcp6      ::.229.141             mountd     superuser 
 +    100005    2    udp       0.0.0.0.215.201        mountd     superuser 
 +    100005    2    tcp       0.0.0.0.174.127        mountd     superuser 
 +    100005    2    udp6      ::.199.96              mountd     superuser 
 +    100005    2    tcp6      ::.147.162             mountd     superuser 
 +    100005    3    udp       0.0.0.0.210.10         mountd     superuser 
 +    100005    3    tcp       0.0.0.0.155.14         mountd     superuser 
 +    100005    3    udp6      ::.147.130             mountd     superuser 
 +    100005    3    tcp6      ::.220.126             mountd     superuser 
 +    100003    2    tcp       0.0.0.0.8.1            nfs        superuser 
 +    100003    3    tcp       0.0.0.0.8.1            nfs        superuser 
 +    100003    4    tcp       0.0.0.0.8.1            nfs        superuser 
 +    100227    2    tcp       0.0.0.0.8.1            nfs_acl    superuser 
 +    100227    3    tcp       0.0.0.0.8.1            nfs_acl    superuser 
 +    100003    2    udp       0.0.0.0.8.1            nfs        superuser 
 +    100003    3    udp       0.0.0.0.8.1            nfs        superuser 
 +    100003    4    udp       0.0.0.0.8.1            nfs        superuser 
 +    100227    2    udp       0.0.0.0.8.1            nfs_acl    superuser 
 +    100227    3    udp       0.0.0.0.8.1            nfs_acl    superuser 
 +    100003    2    tcp6      ::.8.1                 nfs        superuser 
 +    100003    3    tcp6      ::.8.1                 nfs        superuser 
 +    100003    4    tcp6      ::.8.1                 nfs        superuser 
 +    100227    2    tcp6      ::.8.1                 nfs_acl    superuser 
 +    100227    3    tcp6      ::.8.1                 nfs_acl    superuser 
 +    100003    2    udp6      ::.8.1                 nfs        superuser 
 +    100003    3    udp6      ::.8.1                 nfs        superuser 
 +    100003    4    udp6      ::.8.1                 nfs        superuser 
 +    100227    2    udp6      ::.8.1                 nfs_acl    superuser 
 +    100227    3    udp6      ::.8.1                 nfs_acl    superuser 
 +    100021    1    udp       0.0.0.0.163.78         nlockmgr   superuser 
 +    100021    3    udp       0.0.0.0.163.78         nlockmgr   superuser 
 +    100021    4    udp       0.0.0.0.163.78         nlockmgr   superuser 
 +    100021    1    tcp       0.0.0.0.137.82         nlockmgr   superuser 
 +    100021    3    tcp       0.0.0.0.137.82         nlockmgr   superuser 
 +    100021    4    tcp       0.0.0.0.137.82         nlockmgr   superuser 
 +    100021    1    udp6      ::.175.250             nlockmgr   superuser 
 +    100021    3    udp6      ::.175.250             nlockmgr   superuser 
 +    100021    4    udp6      ::.175.250             nlockmgr   superuser 
 +    100021    1    tcp6      ::.188.197             nlockmgr   superuser 
 +    100021    3    tcp6      ::.188.197             nlockmgr   superuser 
 +    100021    4    tcp6      ::.188.197             nlockmgr   superuser 
 +</code>
  
-Ajouter, supprimer ou modifier une colonne, index ou nom de table.+<code> 
 +[root@centos7 ~]# rpcinfo 
 +   program version netid     address                service    owner 
 +    100000    4    tcp6      ::.0.111               portmapper superuser 
 +    100000    3    tcp6      ::.0.111               portmapper superuser 
 +    100000    4    udp6      ::.0.111               portmapper superuser 
 +    100000    3    udp6      ::.0.111               portmapper superuser 
 +    100000    4    tcp       0.0.0.0.0.111          portmapper superuser 
 +    100000    3    tcp       0.0.0.0.0.111          portmapper superuser 
 +    100000    2    tcp       0.0.0.0.0.111          portmapper superuser 
 +    100000    4    udp       0.0.0.0.0.111          portmapper superuser 
 +    100000    3    udp       0.0.0.0.0.111          portmapper superuser 
 +    100000    2    udp       0.0.0.0.0.111          portmapper superuser 
 +    100000    4    local     /var/run/rpcbind.sock  portmapper superuser 
 +    100000    3    local     /var/run/rpcbind.sock  portmapper superuser 
 +    100024    1    udp       0.0.0.0.231.232        status     29 
 +    100024    1    tcp       0.0.0.0.176.90         status     29 
 +    100024    1    udp6      ::.168.173             status     29 
 +    100024    1    tcp6      ::.234.102             status     29 
 +    100005    1    udp       0.0.0.0.78.80          mountd     superuser 
 +    100005    1    tcp       0.0.0.0.78.80          mountd     superuser 
 +    100005    1    udp6      ::.78.80               mountd     superuser 
 +    100005    1    tcp6      ::.78.80               mountd     superuser 
 +    100005    2    udp       0.0.0.0.78.80          mountd     superuser 
 +    100005    2    tcp       0.0.0.0.78.80          mountd     superuser 
 +    100005    2    udp6      ::.78.80               mountd     superuser 
 +    100005    2    tcp6      ::.78.80               mountd     superuser 
 +    100005    3    udp       0.0.0.0.78.80          mountd     superuser 
 +    100005    3    tcp       0.0.0.0.78.80          mountd     superuser 
 +    100005    3    udp6      ::.78.80               mountd     superuser 
 +    100005    3    tcp6      ::.78.80               mountd     superuser 
 +    100003    3    tcp       0.0.0.0.8.1            nfs        superuser 
 +    100003    4    tcp       0.0.0.0.8.1            nfs        superuser 
 +    100227    3    tcp       0.0.0.0.8.1            nfs_acl    superuser 
 +    100003    3    udp       0.0.0.0.8.1            nfs        superuser 
 +    100003    4    udp       0.0.0.0.8.1            nfs        superuser 
 +    100227    3    udp       0.0.0.0.8.1            nfs_acl    superuser 
 +    100003    3    tcp6      ::.8.1                 nfs        superuser 
 +    100003    4    tcp6      ::.8.1                 nfs        superuser 
 +    100227    3    tcp6      ::.8.1                 nfs_acl    superuser 
 +    100003    3    udp6      ::.8.1                 nfs        superuser 
 +    100003    4    udp6      ::.8.1                 nfs        superuser 
 +    100227    3    udp6      ::.8.1                 nfs_acl    superuser 
 +    100021    1    udp       0.0.0.0.193.97         nlockmgr   superuser 
 +    100021    3    udp       0.0.0.0.193.97         nlockmgr   superuser 
 +    100021    4    udp       0.0.0.0.193.97         nlockmgr   superuser 
 +    100021    1    tcp       0.0.0.0.132.11         nlockmgr   superuser 
 +    100021    3    tcp       0.0.0.0.132.11         nlockmgr   superuser 
 +    100021    4    tcp       0.0.0.0.132.11         nlockmgr   superuser 
 +    100021    1    udp6      ::.151.89              nlockmgr   superuser 
 +    100021    3    udp6      ::.151.89              nlockmgr   superuser 
 +    100021    4    udp6      ::.151.89              nlockmgr   superuser 
 +    100021    1    tcp6      ::.234.241             nlockmgr   superuser 
 +    100021    3    tcp6      ::.234.241             nlockmgr   superuser 
 +    100021    4    tcp6      ::.234.241             nlockmgr   superuser 
 +</code>
  
 +===La Commande nfsstat===
  
-**ALTER ADD**+La Commande **nfsstat** permet de vérifier l'activité sur le serveur NFS :
  
-^ Commande ^ Description ^ +<code> 
-| ADD [COLUMN| Ajouter un champ | +[root@centos6 ~]# nfsstat 
-| ADD INDEX | Ajouter un index  | +Server rpc stats: 
-| ADD PRIMARY KEY | Ajouter une clef primaire | +calls      badcalls   badauth    badclnt    xdrcall 
-| ADD UNIQUE | Ajouter un index unique +50                  0          0          0       
-| ADD FULLTEXT | Ajouter une recherche texte entier | +
-  +
-//Exemples//+
  
-  ALTER TABLE familles ADD Sports VARCHAR(50) NOT NULL;+Server nfs v4: 
 +null         compound      
 +2         4% 48       96% 
  
-  ALTER TABLE familles ADD INDEX (Sports);+Server nfs v4 operations: 
 +op0-unused   op1-unused   op2-future   access       close        commit        
 +0         0% 0         0% 0         0% 5         4% 0         0% 0         0%  
 +create       delegpurge   delegreturn  getattr      getfh        link          
 +0         0% 0         0% 0         0% 45       41% 5         4% 0         0%  
 +lock         lockt        locku        lookup       lookup_root  nverify       
 +0         0% 0         0% 0         0% 3         2% 0         0% 0         0%  
 +open         openattr     open_conf    open_dgrd    putfh        putpubfh      
 +0         0% 0         0% 0         0% 0         0% 46       42% 0         0%  
 +putrootfh    read         readdir      readlink     remove       rename        
 +2         1% 0         0% 3         2% 0         0% 0         0% 0         0%  
 +renew        restorefh    savefh       secinfo      setattr      setcltid      
 +0         0% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +setcltidconf verify       write        rellockowner bc_ctl       bind_conn     
 +0         0% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +exchange_id  create_ses   destroy_ses  free_stateid getdirdeleg  getdevinfo    
 +0         0% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence      
 +0         0% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +set_ssv      test_stateid want_deleg   destroy_clid reclaim_comp  
 +0         0% 0         0% 0         0% 0         0% 0         0%  
 +</code>
  
 +<code>
 +[root@centos7 ~]# nfsstat
 +Server rpc stats:
 +calls      badcalls   badclnt    badauth    xdrcall
 +34                  0          0          0       
  
-**ALTER CHANGE**+Server nfs v4: 
 +null         compound      
 +1         2% 33       97% 
  
-Permet de modifier le nom ou le type d'une colonne.+Server nfs v4 operations: 
 +op0-unused   op1-unused   op2-future   access       close        commit        
 +0         0% 0         0% 0         0% 5         7% 0         0% 0         0%  
 +create       delegpurge   delegreturn  getattr      getfh        link          
 +0         0% 0         0% 0         0% 22       31% 4         5% 0         0%  
 +lock         lockt        locku        lookup       lookup_root  nverify       
 +0         0% 0         0% 0         0% 5         7% 0         0% 0         0%  
 +open         openattr     open_conf    open_dgrd    putfh        putpubfh      
 +0         0% 0         0% 0         0% 0         0% 23       33% 0         0%  
 +putrootfh    read         readdir      readlink     remove       rename        
 +1         1% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +renew        restorefh    savefh       secinfo      setattr      setcltid      
 +5         7% 0         0% 0         0% 0         0% 0         0% 2         2%  
 +setcltidconf verify       write        rellockowner bc_ctl       bind_conn     
 +2         2% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +exchange_id  create_ses   destroy_ses  free_stateid getdirdeleg  getdevinfo    
 +0         0% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence      
 +0         0% 0         0% 0         0% 0         0% 0         0% 0         0%  
 +set_ssv      test_stateid want_deleg   destroy_clid reclaim_comp  
 +0         0% 0         0% 0         0% 0         0% 0         0%  
 +</code>
  
-//Exemple//+=====Gestion du Serveur SMB/CIFS Samba=====
  
-  ALTER TABLE familles CHANGE PrenomPere Prenom_Pere VARCHAR(45) NOT NULL;+====Les Réseaux Microsoft====
  
-**ALTER DROP**+Le fonctionnement d'un réseau Windows(tm) se repose sur le protocole **CIFS** (//Common Internet %%FileSystem%%//) le successeur du protocole **SMB** (//Server Message Block//). 
  
-^ Commande ^ Description ^ +===Types de Réseaux Microsoft===
-| DROP [COLUMN] | Supprimer un champ | +
-| DROP INDEX | Supprimer un index  | +
-| DROP PRIMARY KEY | Supprimer une clef primaire |+
  
-//Exemple//+Les réseaux Microsoft(tm) se divisent en trois types distincts :
  
-  ALTER TABLE familles DROP Sports;+  * **Un groupe de travail**, 
 +    * Windows (tm) 3.11, 9x, ME, NT Workstation, 2000 Workstation, XP, Vista, Seven, 
 +    * Les systèmes se trouvent sur le même réseau physique, 
 +    * La gestion des partages n'est pas centralisée, 
 +    * La sécurité est fournie par des mots de passe qui protègent les ressources individuelles, 
 +  * **Un domaine**, 
 +    * Windows(tm) NT Server 3.5, 3.51 ou 4, 
 +    * Nécessite la mise en place d'un **PDC** (//Primary Domain Controller//), 
 +    * La gestion des utilisateurs est accomplie via le service **SAM** (//Security Account Manager//), 
 +    * La sécurité s'appuie sur des objets appelés **SIDs** (//Security %%IDentifiers%%//), 
 +    * Peut contenir un ou plusieurs **BDC** (//Backup Domain Controller//), 
 +  * **Active Directory**, 
 +    * Windows(tm) 2000 Server, Server 2003, Server 2008, 
 +    * La gestion de l'authentification des utilisateurs est assurée par un annuaire **LDAP** (//Lightweight Directory Access Protocol//), 
 +    * Le service des noms est assurée par le **DNS** (//Domain Name Service//),
  
-**ALTER KEYS**+===Types de Clients Windows===
  
-Permet de désactiver la clef primaire momentanément.+Le fonctionnement du client Windows(tm) 2000 et les versions ultérieures implique que le protocole SMB s'appuie directement sur **TCP/IP** en utilisant le port **445**.
  
-//Exemples//+Le fonctionnement du client Windows(tm) antérieur à Windows(tm) 2000 nécessite le protocole **NBT** (//Network Basic Import/Export System over TCP/IP//) qui utilise les ports suivants :
  
-  ALTER TABLE familles DISABLE KEYS;+  * **137**, 
 +    * //Name Service// - La résolution des noms et le parcours du réseau (//Browsing//), 
 +  * **138**, 
 +    * //Datagram Service//, 
 +  * **139**, 
 +    * //Session Service// - Le partage de fichiers et d'imprimante.
  
-  ALTER TABLE familles ENABLE KEYS;+Un nom %%NetBIOS%% est codé sur 16 octets dont les 15 premiers sont définis par l'utilisateur. Le dernier contient une valeur hexadécimale qui indique le type de ressource fournie par le système :
  
 +^  Valeur Hexadécimale  ^ Type de Ressource 
 +|  00  | Standard Workstation 
 +|  03  | Messenger Service 
 +|  06  | RAS Server Service 
 +|  21  | RAS Client Service 
 +|  1B  | Domain Master Browser Service 
 +|  1D  | Master Browser Name  | 
 +|  20  | Fileserver et/ou Printserver 
 +|  BE  | Network Monitor Agent  | 
 +|  BF  | Network Monitor Utility 
  
-**ALTER RENAME**+Les noms %%NetBIOS%% peuvent aussi être utilisés pour des noms de groupes :
  
-Permet de renommer une table.+^  Valeur Hexadécimale  ^ Type de Ressource  ^  
 +|  00  | Standard Workstation Group  |  
 +|  1C  | Logon Server |  
 +|  1D  | Master Browser Name  |  
 +|  1E  | Normal Group Name  | 
  
-//Exemple//+<WRAP center round important> 
 +**Important** : Le nom NetBIOS ne doit pas contenir les charactères suivants : **"** **/** **\** **[** **]** **:** **;** **|** **=** **,** **^** ***** **?** **>** **<**  
 +</WRAP>
  
-  ALTER TABLE enfants RENAME familles_enfants;+La commande Windows(tm) **NBTSTAT** peut être utilisée pour visualiser la liste des types de ressources et les noms %%NetBIOS%% :
  
 +<code>
 +C:\Documents and Settings\Administrateur>NBTSTAT -n
  
-**ALTER ORDER BY**+Connexion au réseau local: 
 +Adresse IP du noeud : [192.168.1.29] ID d'étendue : []
  
-Permet de reclasser physiquement une table.+                Table nom local NetBIOS
  
-//Exemple//+       Nom                Type         Statut 
 +    --------------------------------------------- 
 +    WINDOWS-FFC9AFA<00>  UNIQUE      Inscrit 
 +    WORKGROUP      <00>  Groupe      Inscrit 
 +    WINDOWS-FFC9AFA<20>  UNIQUE      Inscrit 
 +    WORKGROUP      <1E>  Groupe      Inscrit
  
-  ALTER TABLE familles ORDER BY Prenom_Pere;+</code>
  
 +====Présentation de Samba====
  
-===MATCH===+Le serveur Samba est en réalité un ensemble de programmes qui permettent le **partage de fichiers et d'imprimantes** entre un serveur Unix ou Linux et des stations **Windows(tm)** ( 3.11, 9x, NT4, 2000, XP, Vista, 2003, Seven et 10 ) ainsi que des stations **OS/2 **, **Linux** et **Mac**.
  
-Permet la recherche d'un mot, d'une phrase ou d'une expression sur un **texte entier**+Le serveur Samba3 était capable offrir :
  
-//Exemple//+  * des services classiques d'un serveur de fichiers et d'impression, 
 +  * l'authentification des utilisateurs, 
 +  * la gestion des droits d'accès, 
 +  * la résolution des noms, 
 +  * le parcours du voisinage réseau (//Local Master Browser//, //Local Backup Browser//, //Domain Master Browser//), 
 +  * les services d'un serveur **WINS** primaire, 
 +  * les services d'un serveur **PDC** (//Primary Domain Controller//), 
 +  * les services d'un serveur Microsoft(tm) **DFS** (//Distributed %%FileSystem%%//),
  
-  SELECT * FROM familles WHERE MATCH (Commentaire) AGAINST ('fleuve');+Le serveur Samba n'est **pas** capable d'offrir :
  
-====Opérateurs====+  * les services d'un serveur **WINS** secondaire, 
 +  * les services d'un contrôleur de domaine Active Directory, 
 +  * les services d'un **BDC** - contrôleur secondaire de domaine (//Backup Domain Controller//) quand le PDC est un serveur Windows(tm).
  
-===Mathémathiques===+Samba4 apporte les nouveautés suivantes :
  
-^ Nom ^ Description ^ +  * Support de l'authentification et de l'administration d'Active Directory, 
-| + | Addition | +  * Support complet de NTFS, 
-| - | Soustraction  | +  * Annuaire LDAP, 
-| Multiplication | +  Serveur Kerberos, 
-| / | Division  | +  * Serveur DNS, 
-| () | Le calcul entre parenthèses est effectué en priorité |+  * Support du nouveau protocole RPC et de Python.
  
-===Logiques===+===Daemons Samba===
  
-^ Nom ^ Description ^ +Samba se repose sur trois **Daemons** (//Disk And Extension %%MONitor%%//) :
-| ! | NON | +
-%%||%% | OU  | +
-| && | ET | +
-| XOR | XOR exclusif  |+
  
 +  * **smbd** qui :
 +    * fournit les services de gestion des ressources partagées et les fonctionnalités d'authentification,
 +    * génère un processus fils pour chaque connexion active,
 +  * **nmbd** qui :
 +    * participe à la fonctionnalité du parcours du voisinage réseau et fournit un serveur compatible Microsoft(tm) WINS,
 +    * génère une deuxième instance de lui-même dans le cas où Samba joue le rôle d'un serveur WINS,
 +  * **winbindd** qui : 
 +    * permet d'obtenir des informations sur les utilisateurs définis sur des contrôleurs de domaine Windows(tm) NT ou 2000,
 +    * facilite l'intégration d'un serveur Samba dans un domaine ayant déjà un PDC.
  
-===Comparaison===+===Commandes Samba===
  
-^ Nom ^ Description ^ +Samba propose un nombre important de commandes et utilitaires :
-| = | Egal | +
-| != ou <>| Non égal  | +
-| < | Inférieur | +
-| < = | Inférieur ou égal  | +
-| > | Supérieur | +
-| > =| Supérieur ou égal  | +
-| < = > | Egal gérant la nullité | +
-| IS NULL | Nullité +
-| IS NOT NULL | Non nullité  |+
  
-====Fonctions====+^  Commande  ^  Description 
 +|  findsmb  | Obtention d'informations sur les systèmes utilisant le protocole SMB  | 
 +|  net  | Commande similaire à la commande Windows(tm) du même nom  | 
 +|  nmblookup  | Interrogation d'un serveur de noms %%NetBIOS%% 
 +|  pdbedit  | Gestion de comptes stockés dans une base de données SAM  | 
 +|  rpcclient  | Exécution de programmes d'administration sur des clients Windows(tm) 
 +|  smbcacls  | Gestion des ACL  | 
 +|  smbclient  | Programme interactif multifonction 
 +|  smbcontrol  | Interrogations simples auprès des deamons 
 +|  smbmount  | Montage des ressources SMB sous Linux  | 
 +|  smbpasswd  | Gestion des mots de passe  | 
 +|  smbspool  | Gestion des impressions 
 +|  smbstatus  | Etat des connexions 
 +|  smbtar  | Utilitaire de sauvegarde 
 +|  smbumount  | Démontage d'une ressource SMB sous Linux  | 
 +|  swat  | Utilitaire de configuration 
 +|  testparm  | Vérification du fichier de configuration 
 +|  testprns  | Vérification des informations sur les imprimantes 
 +|  wbinfo  | Interrogation du deamon winbindd  |
  
-===Mathémathiques===+====Installation de Samba====
  
-^ Nom ^ Description ^ +<WRAP center round important> 
-| ABS(nbr) | Valeur absolue de nbr| +**Important** : Configurez votre machine virtuelle CentOS 7 en mode réseau ponté avant de la démarrer
-| SIGN(nbr)| -1 0 ou 1 en fonctionne du signe de nbr  | +</WRAP>
-| MOD(nbr1, nbr2) | Indique le reste de la division de nbr1 par nbr2 | +
-| FLOOR(nbr) | Indique le plus grande nombre entier inférieur à nbr | +
-| CEILING(nbr) | Indique la plus petite valeur entière supérieure à nbr | +
-| ROUND(nbr)| Indique l'arrondi entier le plus proche de nbr | +
-| ROUND(nbr,D) | Indique l'arrondi à D décimales plus plus proche de nbr | +
-| EXP(nbr) | Indique l'exponentielle de nbr  | +
-| POW(nbr,nbr2) | indique nbr à la puissance nbr2  | +
-| SQRT(nbr) | Indique la racine carrée de nbr | +
-| PI()| Indique la valeur de PI  | +
-| COS(nbr) | Indique le cosinus de nbr | +
-| ACOS(nbr) | Indique l'arc cosinus de nbr | +
-| SIN(nbr) | Indique le sinus de nbr  | +
-| ASIN(nbr) | Indique l'arc sinus de nbr | +
-| TAN(nbr)| Indique le tangent de nbr  | +
-| ATAN(nbr) | Indique l'arc tangent de nbr | +
-| COT(nbr) | Indique la cotangente de nbr  | +
-| RAND() | Indique une valeur en virgule flottante entre 0 et 1.0 | +
-| RAND(nbr) | Indique une valeur en virgule flottante entre 0 et 1.0. La valeur de nbr indique la limite haute | +
-| LEAST(nbr1, nbr2 ...)| Indique le plus petit des nombres nbr1 à nbrX  | +
-| GREATEST(nbr1, nbr2 ...) | Indique le plus grand des nombres nbr1 à nbrX | +
-| DEGREES(nbr) | Convertit nbr de gradiants vers degrés | +
-| RADIANS(nbr) | Convertit nbr de degrés vers gradiants | +
-| TRUNCATE(nbr,D) | Indique nbr tronqué à D décimales  |+
  
-===Chaînes===+Désactivez SELINUX afin de ne pas avoir des erreurs de ce dernier :
  
-^ Nom ^ Description ^ +<code> 
-| LIKE | Effectue une comparaison en fonction d'un motif  | +[root@centos7 /]# setenforce permissive 
-| NOT LIKE | L'inverse de LIKE  | +[root@centos7 /]# getenforce 
-| _ | Remplace un caractère dans le motif d'une chaîne   | +Permissive 
-| % | Remplace un ou plusieurs caractère(s) dans le motif d'une chaîne +</code>
-| \ | Caractère d'échappement +
-| BINARY| Rend la comparaison avec un motif sensible à la casse  | +
-| STRCMP(chaîne1, chaîne2) | Compare deux chaînes. Retourne -1 si chaîne 1 chaîne 2. Retourne 0 si chaîne 1 = chaîne 2. Retourne 1 si chaîne 1 chaîne 2.  | +
-| MATCH | Utilisé pour des recherches de texte intégral   | +
-| UPPER('chaîne') | Transforme les minuscules en majuscules   | +
-| LOWER('chaîne') | Transforme les majuscules en majuscules  |+
  
-===Dates===+Editez ensuite le fichier **/etc/sysconfig/selinux** ainsi :
  
-^ Nom ^ Description ^ +<code> 
-| NOW() | Retourne la date au format 'AAAA-MM-JJ HH:MM:SS' +[root@centos7 /]# vi /etc/sysconfig/selinux 
-| DATE_FORMAT(date,format)| Retourne la date selon le format spécifié   | +[root@centos7 /]# cat /etc/sysconfig/selinux
-| DAYOFWEEK(date) | Retourne un chiffre qui représente le jour de la semaine ( 1 pour dimanche, 7 pour samedi )  | +
-| WEEKDAY(date) | Retourne un chiffre qui représente le jour de la semaine ( 7 pour dimanche, 0 pour lundi )  | +
-| DAYOFMONTH(date) | Retourne un chiffre de 1 à 31   | +
-| DAYOFYEAR(date)| Retourne un chiffre de 1 à 366   | +
-| MONTH(date) | Retourne un chiffre de 1 à 12   | +
-| DAYNAME(date) | Retourne le nom du jour ( lundi, mardi ... )   | +
-| MONTHNAME(date) | Retourne le nom du mois   | +
-| QUARTER(date) | Retourne un chiffre de 1 à 4 ( 1 = premier trimestre de l'année )  | +
-| WEEK(date [,depart| Retourne une valeur de 1 à 52. La valeur de //depart// peut être 0 ou 1. Dans le cas de 0, le dimanche est considéré comme le premier jour de la semaine. Dans le cas de 1, c'est le lundi.   | +
-| YEAR(date) | Retourne un chiffre de 1000 à 9999  | +
-| HOUR(date) | Retourne l'heure +
-| MINUTE(date) | Retourne les minutes   | +
-| SECOND(date) | Retourne les secondes +
-| TO_DAYS(date)| Retourne le nombre de jours écoulés depuis le début de l'an 0   | +
-| FROM_DAYS(date) | Retourne la date à partir d'un nombre de jours écoulés depuis le début de l'an 0  | +
-| CURDATE() | Retourne la date courante au format AAAA-MM-JJ +
-| CURRENT_DATE() | Retourne la date courante au format AAAA-MM-JJ +
-| CURTIME()| Retourne la date courante au format HH:MM:SS +
-| CURRENT_TIME() | Retourne la date courante au format HH:MM:SS +
-| UNIX_TIMESTAMP([date]) | Retourne le nombre de secondes depuis la date 1970-01-01 00:00:00 +
-| FROM_UNIXTIME(unix_timestamp[,format]) | Retourne la date en fonction d'un nombre de secondes depuis la date 1970-01-01 00:00:00  |+
  
-==Motifs==+# This file controls the state of SELinux on the system. 
 +# SELINUXcan take one of these three values: 
 +#     enforcing - SELinux security policy is enforced. 
 +#     permissive - SELinux prints warnings instead of enforcing. 
 +#     disabled - No SELinux policy is loaded. 
 +SELINUX=permissive 
 +# SELINUXTYPEcan take one of three two values: 
 +#     targeted - Targeted processes are protected, 
 +#     minimum - Modification of targeted policy. Only selected processes are protected.  
 +#     mls - Multi Level Security protection. 
 +SELINUXTYPE=targeted 
  
-^ Nom ^ Description ^ Exemple ^ +</code>
-| %M | Le mois  | janvier +
-| %W | Le jour de la semaine  | lundi  | +
-| %D | La date du mois  | 1st  | +
-| %Y | L'année  | 2009  | +
-| %y | L'année  | 09  | +
-| %a | L'abréviation du jour  | lun  | +
-| %d | Le jour du mois  | 01  | +
-| %m | Le numéro du mois  | 01  | +
-| %b | L'abréviation du mois  | lun  | +
-| %j | Le jour de l'année  | 031  | +
-| %H | L'heure  | 00  | +
-| %h | L'heure  | 12  | +
-| %i | Les minutes  | 05  | +
-| %r | L'heure au format américain  | 11:01:00 PM   | +
-| %T | L'heure au format 24 heures  | 23:01:00   | +
-| %S | Les secondes  | 06  | +
-| %p | AM ou PM  | PM  | +
-| %w | Le numéro du jour de la semaine  | 0 //(=dimanche)//   | +
-| %U | Le numéro de la semaine avec le début de la semaine étant un dimanche  | 03  | +
-| %u | Le numéro de la semaine avec le début de la semaine étant un lundi  | 02  |+
  
-Par exemple :+Afin d'éviter les problèmes liés au pare-feu arrêtez le service firewalld :
  
 <code> <code>
-mysql> select DATE_FORMAT(now(), '%W %d %M %Y'); +[root@centos7 /]# systemctl status firewalld.service 
-+-----------------------------------+ +● firewalld.service - firewalld - dynamic firewall daemon 
-| DATE_FORMAT(now(), '%W %d %M %Y') | +   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
-+-----------------------------------+ +   Active: active (runningsince Fri 2017-07-28 11:10:59 CEST; 42min ago 
-| Friday 19 October 2012            | +     Docs: man:firewalld(1) 
-+-----------------------------------+ + Main PID: 616 (firewalld
-1 row in set (0.00 sec)+   CGroup: /system.slice/firewalld.service 
 +           └─616 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
  
-mysql> +Jul 28 11:10:52 centos7.fenestros.loc systemd[1]: Starting firewalld - dynamic firewall daemon... 
 +Jul 28 11:10:59 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon. 
 +[root@centos7 /]# systemctl stop firewalld.service 
 +[root@centos7 /]# systemctl disable firewalld.service 
 +Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. 
 +Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service. 
 +[root@centos7 /]# systemctl status firewalld.service 
 +● firewalld.service - firewalld - dynamic firewall daemon 
 +   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) 
 +   Active: inactive (dead) 
 +     Docs: man:firewalld(1) 
 + 
 +Jul 28 11:10:52 centos7.fenestros.loc systemd[1]: Starting firewalld - dynamic firewall daemon... 
 +Jul 28 11:10:59 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon. 
 +Jul 28 11:54:00 centos7.fenestros.loc systemd[1]: Stopping firewalld - dynamic firewall daemon... 
 +Jul 28 11:54:00 centos7.fenestros.loc systemd[1]: Stopped firewalld - dynamic firewall daemon.
 </code> </code>
  
-===Contrôle===+Modifiez ensuite le fichier **/etc/hosts** pour définir votre **hostname** et votre adresse IP :
  
-^ Nom ^ Description ^ +<code> 
-| IF(exp1, exp2, exp3) | Si exp1 est vrai, exp2 est retournée sinon exp3 est retournée +[root@centos7 ~]# cat /etc/hosts 
-| IFNULL(exp1,exp2)| Si exp1 est NULL, exp2 est retournée sinon exp1 est retournée   | +127.0.0.1 localhost.localdomain localhost 
-| NULLIF(exp1,exp2) | Si exp1 = exp2, NULL est retournée sinon exp1 est retournée +::1 localhost6.localdomain6 localhost6 
-| CASE value WHEN comp1 THEN res1 [WHEN comp2 THEN res2][ELSE elseres] END | La fonction compare //value// à comp1 ( comp2 ... )Si une égalité est trouvée, res1 ( res2 ... ) est retournéeSi aucune égalité n'est trouvée, elseres est retournée  |+192.168.1.103 centos7.fenestros.loc 
 +</code>
  
-===Agrégation===+<WRAP center round todo> 
 +**Important** : Modifiez l'adresse IP dans votre fichier **/etc/hosts** en fonction de **votre** adresse IP réelle. 
 +</WRAP>
  
-^ Nom ^ Description ^ +Maintenant installez le paquet samba-swat :
-| AVG(colonne) | Moyenne de la colonne +
-| COUNT(items)| Le nombre de valeurs non nulles de la colonne   | +
-| MIN(colonne) | Valeur minimum de la colonne +
-| MAX(colonne) | Valeur maximum de la colonne +
-| STD(colonne) | Écart type des valeurs de la colonne +
-| SUM(colonne) | Somme des valeurs de la colonne +
-| BIT_OR(colonne) | Ou logique effectué sur les valeurs de la colonne | +
-| BIT_AND(colonne) | ET logique effectué sur les valeurs de la colonne   |+
  
-===Autres===+<code> 
 +[root@centos7 ~]# yum install samba-swat 
 +Loaded plugins: fastestmirror, langpacks 
 +adobe-linux-x86_64                                                                                              | 2.9 kB  00:00:00      
 +base                                                                                                            | 3.6 kB  00:00:00      
 +extras                                                                                                          | 3.4 kB  00:00:00      
 +updates                                                                                                         | 3.4 kB  00:00:00      
 +(1/3): adobe-linux-x86_64/primary_db                                                                            | 2.7 kB  00:00:00      
 +(2/3): extras/7/x86_64/primary_db                                                                               | 191 kB  00:00:00      
 +(3/3): updates/7/x86_64/primary_db                                                                              | 7.8 MB  00:00:47      
 +Determining fastest mirrors 
 + * base: centos.mirrors.ovh.net 
 + * extras: mirrors.standaloneinstaller.com 
 + * updates: mirrors.standaloneinstaller.com 
 +Resolving Dependencies 
 +--> Running transaction check 
 +---> Package samba.x86_64 0:4.4.4-14.el7_3 will be installed 
 +--> Processing Dependency: samba-libs 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64 
 +--> Processing Dependency: samba-common-tools 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64 
 +--> Processing Dependency: samba-common-libs 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64 
 +--> Processing Dependency: samba-common 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64 
 +--> Processing Dependency: samba-client-libs 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64 
 +--> Processing Dependency: libwbclient 4.4.4-14.el7_3 for package: samba-4.4.4-14.el7_3.x86_64 
 +--> Running transaction check 
 +---> Package libwbclient.x86_64 0:4.4.4-12.el7_3 will be updated 
 +---> Package libwbclient.x86_64 0:4.4.4-14.el7_3 will be an update 
 +---> Package samba-client-libs.x86_64 0:4.4.4-12.el7_3 will be updated 
 +--> Processing Dependency: samba-client-libs = 4.4.4-12.el7_3 for package: samba-client-4.4.4-12.el7_3.x86_64 
 +--> Processing Dependency: samba-client-libs = 4.4.4-12.el7_3 for package: libsmbclient-4.4.4-12.el7_3.x86_64 
 +---> Package samba-client-libs.x86_64 0:4.4.4-14.el7_3 will be an update 
 +---> Package samba-common.noarch 0:4.4.4-12.el7_3 will be updated 
 +---> Package samba-common.noarch 0:4.4.4-14.el7_3 will be an update 
 +---> Package samba-common-libs.x86_64 0:4.4.4-12.el7_3 will be updated 
 +---> Package samba-common-libs.x86_64 0:4.4.4-14.el7_3 will be an update 
 +---> Package samba-common-tools.x86_64 0:4.4.4-12.el7_3 will be updated 
 +---> Package samba-common-tools.x86_64 0:4.4.4-14.el7_3 will be an update 
 +---> Package samba-libs.x86_64 0:4.4.4-12.el7_3 will be updated 
 +---> Package samba-libs.x86_64 0:4.4.4-14.el7_3 will be an update 
 +--> Running transaction check 
 +---> Package libsmbclient.x86_64 0:4.4.4-12.el7_3 will be updated 
 +---> Package libsmbclient.x86_64 0:4.4.4-14.el7_3 will be an update 
 +---> Package samba-client.x86_64 0:4.4.4-12.el7_3 will be updated 
 +---> Package samba-client.x86_64 0:4.4.4-14.el7_3 will be an update 
 +--> Finished Dependency Resolution
  
-^ Nom ^ Description ^ +Dependencies Resolved
-| CAST(expression) CONVERT(expression) | Convertit l'expression vers le type demandé - //BINARY, DATE, DATETIME, SIGNED, TIME, UNSIGNED// | +
-| LAST_INSERT_ID()| Retourne la valeur d'une colonne //AUTO_INCREMENT// lors du dernier //insertion//   | +
-| VERSION() | La version du serveur %%MySQL%% +
-| CONNECTION_ID() | L'identifiant du thread de la connexion courante   | +
-| DATABASE() | La base de données courante   | +
-| USER() | L'utilisateur courant   | +
-| PASSWORD(chaîne) | Encrypte un mot de passe  | +
-| ENCRYPT(chaîne, [,force]) | Encrypte un mot de passe avec la fonction //crypt// d'Unix   | +
-| ENCODE(chaîne,mdp) | Encode la chaîne avec le mot de passe //mdp// +
-| DECODE(chaîne,mdp) | Décode la chaîne avec le mot de passe //mdp// +
-| MD5(chaîne) | Retourne une chaîne encodée à la norme MD5  | +
-| SHA1() | Retourne une chaîne encodée à la norme SHA1   |+
  
 +=======================================================================================================================================
 + Package                               Arch                      Version                              Repository                  Size
 +=======================================================================================================================================
 +Installing:
 + samba                                 x86_64                    4.4.4-14.el7_3                       updates                    610 k
 +Updating for dependencies:
 + libsmbclient                          x86_64                    4.4.4-14.el7_3                       updates                    126 k
 + libwbclient                           x86_64                    4.4.4-14.el7_3                       updates                    100 k
 + samba-client                          x86_64                    4.4.4-14.el7_3                       updates                    547 k
 + samba-client-libs                     x86_64                    4.4.4-14.el7_3                       updates                    4.6 M
 + samba-common                          noarch                    4.4.4-14.el7_3                       updates                    191 k
 + samba-common-libs                     x86_64                    4.4.4-14.el7_3                       updates                    161 k
 + samba-common-tools                    x86_64                    4.4.4-14.el7_3                       updates                    451 k
 + samba-libs                            x86_64                    4.4.4-14.el7_3                       updates                    260 k
  
-=====Types de Champs=====+Transaction Summary 
 +======================================================================================================================================= 
 +Install  1 Package 
 +Upgrade             ( 8 Dependent packages)
  
-====Nombres entiers====+Total download size: 7.0 M 
 +Is this ok [y/d/N]: y 
 +</code>
  
-^ Type ^ Intervalle ^ Taille en octets ^ Description ^ +Les paquets ainsi installés sont :
-| TINYINT[(M)]  | -127 à 128 | 1 | Entiers très courts +
-| TINYINT[(M)] UNSIGNED  | 0 à 255 | 1 | Entiers très courts +
-| SMALLINT[(M)]  | -32 768 à 32 767 | 2 | Entiers courts +
-| SMALLINT[(M)] UNSIGNED  | 0 à 65 535 | 2 | Entiers courts +
-| MEDIUMINT[(M)]  | - 8 388 608 à 8 388 607 | 3 | Entiers de taille moyenne +
-| MEDIUMINT[(M)] UNSIGNED  | 0 16 777 215 | 3 | Entiers de taille moyenne +
-| INT[(M)]  | -2<sup>31</sup> à 2<sup>31</sup> - 1 | 4 | Entiers +
-| INT[(M)] UNSIGNED  | 0 à 2<sup>32</sup> - 1 | 4 | Entiers +
-| INTEGER[(M)]  | - | - | Synonyme de INT  | +
-| BIGINT[(M)]  | -2<sup>63</sup> à 2<sup>63</sup> - 1 | 8 | Entiers larges +
-| BIGINT[(M)] UNSIGNED  | 0 à 2<sup>64</sup> - 1 | 8 | Entiers larges  |+
  
 +<code>
 +[root@centos7 ~]# rpm -qa | grep samba
 +samba-libs-4.4.4-14.el7_3.x86_64
 +samba-client-4.4.4-14.el7_3.x86_64
 +samba-client-libs-4.4.4-14.el7_3.x86_64
 +samba-common-tools-4.4.4-14.el7_3.x86_64
 +samba-common-4.4.4-14.el7_3.noarch
 +samba-4.4.4-14.el7_3.x86_64
 +samba-common-libs-4.4.4-14.el7_3.x86_64
 +</code>
  
-====Nombres à virgule flottante====+Les deamons **smb** et **nmb** ne sont pas démarrés : 
  
-^ Type ^ Intervalle ^ Taille en octets ^ Description ^ +<code
-| FLOAT(precision)  | Varie selon //precision// | Varie | =24 pour un nombre en simple précision ou >24 et < =53 pour un nombre ne double précision  | +[root@centos7 ~]# systemctl status smb 
-| FLOAT[(M,D) | + ou - 1.175494351E-38 à + ou - 3.402823466E+38 | 4 | Simple précision  | +● smb.service Samba SMB Daemon 
-| DOUBLE[(M,D)]  | + ou - 1.7976931348623157E+308 à + ou - 2.2250738585072014E-308 | 8 | Double précision  | +   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled
-| DOUBLEPRECISION[(M,D)]  | - | - | Synonyme de DOUBLE[(M,D) | +   Active: inactive (dead) 
-| REAL[(M,D)] | - | Synonyme de DOUBLE[(M,D)]  | +[root@centos7 ~]# systemctl status nmb 
-| DECIMAL[(M[,D])]  | Varie | M +2 | Nombre à virgule flottante  | +● nmb.service Samba NMB Daemon 
-| NUMERIC  | - | - | Synonyme de DECIMAL  |+   Loaded: loaded (/usr/lib/systemd/system/nmb.service; disabled; vendor preset: disabled
 +   Active: inactive (dead
 +</code>
  
-====Dates et Heures====+Notez que le démarrage automatique de Samba n'est pas configuré. Configurez donc le démarrage automatique de Samba :
  
-^ Type ^ Intervalle ^ +<code> 
-| DATE  | 1000-01-01 à 9999-12-31 | +[root@centos7 ~]# systemctl enable smb 
-| TIME  | -838:59:59 à 838:59:59 | +Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service. 
-| DATETIME  | 1000-01-01 00:00:00 à 9999-12-31 23:59:59 | +[root@centos7 ~]# systemctl enable nmb 
-| TIMESTAMP[(M) | Voir tableau ci-dessous | +Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service. 
-| YEAR[(2)]  | 70 à 69 (1970 à 2069) | +</code>
-| YEAR[(4)]  | 1901 à 2155 |+
  
-===Types de données TIMESTAMP===+===Configuration de base===
  
-^ Type ^ Affichage ^ +La configuration de Samba est obtenue en éditant le fichier **/etc/samba/smb.conf**. Lors de l'installation des paquets Samba, un fichier smb.conf minimaliste est créé. Vérifiez ce fichier à l'aide de la commande **testparm** :
-| TIMESTAMP  | YYYYMMDDHHMMSS +
-| TIMESTAMP(14)  | YYYYMMDDHHMMSS +
-| TIMESTAMP(12)  | YYMMDDHHMMSS +
-| TIMESTAMP(10)  | YYMMDDHHMM +
-| TIMESTAMP(8)  | YYYYMMDD +
-| TIMESTAMP(6)  | YYMMDD +
-| TIMESTAMP(4)  | YYMM  | +
-| TIMESTAMP(2)  | YY  |+
  
-====Chaînes====+<code> 
 +[root@centos7 ~]# testparm 
 +Load smb config files from /etc/samba/smb.conf 
 +rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) 
 +Processing section "[homes]" 
 +Processing section "[printers]" 
 +Processing section "[print$]" 
 +Loaded services file OK. 
 +Server role: ROLE_STANDALONE
  
-^ Type ^ Longeur ^ Description ^ +Press enter to see a dump of your service definitions
-| CHAR(M)  | 1 à 255 | Chaîne de longueur fixe où M varie entre 1 et 255 | +
-| VARCHAR(M) | 1 à 255 | Chaîne de longueur variable où M varie entre 1 et 255 |+
  
-====TEXT et BLOB====+# Global parameters 
 +[global] 
 + workgroup SAMBA 
 + printcap name cups 
 + security USER 
 + idmap config * : backend tdb 
 + cups options raw
  
-  * **TEXT**, 
-    * TEXT respecte la casse des données, 
-  * **BLOB** (Binary Large OBject), 
-    * BLOB permet de stocker toute information binaire telle une image ou un son. 
  
-^ Type ^ Longueur Maximale en caractères ^ Description ^ +[homes] 
-| TINYBLOB  | 255 | Objet binaire court  | + comment = Home Directories 
-| TINYTEXT  | 255 | Texte court  | + browseable = No 
-| BLOB  | 65 535 | Objet binaire de taille normale  | + inherit acls = Yes 
-| TEXT  | 65 535 | Texte de taille normale  | + read only = No 
-| MEDIUM BLOB  | 16 777 215 | Objet binaire de taille moyenne | + valid users = %S %D%w%S
-| MEDIUM TEXT  | 16 777 215 | Texte de taille moyenne | +
-| LONG BLOB  | 4 294 967 295 | Objet binaire de grande taille | +
-| LONG TEXT  | 4 294 967 295 | Texte de grande taille |+
  
-====ENUM et SET==== 
  
-  * **ENUM**, +[printers] 
-    * permet de prendre une valeur ou NULL parmi une liste de valeurs prédéfinies à la création de la colonne, + comment = All Printers 
-  * **SET** + path = /var/tmp 
-    * permet de prendre un maximum de 64 valeurs ou NULL parmi une liste de valeurs prédéfinies à la création de la colonne,+ browseable = No 
 + printable = Yes 
 + create mask = 0600
  
-^ Type ^ Maximum des valeurs dans l'ensemble ^ Description ^ 
-| ENUM('valeur1','valeur2',...)  | 65 535 | Les valeurs de ce type ne peuvent contenir qu'une seule des valeurs de la liste ou NULL  | 
-| SET('valeur1','valeur2',...) | 64 | Les valeurs de ce type ne peuvent contenir un ensemble des valeurs de la liste ou NULL   | 
  
-=====Types de Moteurs de Stockage=====+[print$] 
 + comment Printer Drivers 
 + path /var/lib/samba/drivers 
 + create mask 0664 
 + directory mask 0775 
 + write list root 
 +</code>
  
-Le type de moteur est spécifié lors de la création de la table. Le moteur d'une table existant peut être modifié avec la commande **ALTER TABLE**. Les différents types **principaux** sont résumés ci-après :+===Démarrage manuel de Samba===
  
-^ Type de Moteur  ^ Description ^ +Démarrez maintenant les daemons smb et nmb et constatez les processus ainsi créés :
-| %%InnoDB%% | Le format par défaut. Supportent les transactions  sécurisées avec **[[http://www.manuelphp.com/mysql/commit.php|COMMIT]]** et **[[http://www.manuelphp.com/mysql/commit.php|ROLLBACK]]**. Permet de verrouiller des enregistrements un-à-un au lieu de la table entière. | +
-| %%MyISAM%% | Données stockées dans un fichier .MYD. Index stockés dans un fichier .MYI. Structure da la table stockée dans un fichier .frm | +
-| MEMORY | Anciennement connues sous le nom HEAP. Les données sont stockées en mémoire tandis que la structure de la table est stockée sur disque dans un fichier .frm. Ne supportent pas les champs TEXT, BLOB. Ne supportent pas l'attribut AUTO_INCREMENT. Utilisé pour augmenter la vitesse de traitement d'une requête. | +
-| ARCHIVE | Ne supportent que des requêtes de lecture et d'insertion. Utilisé pour stocker des données des journaux d'application. Structure stockée dans un fichier .frm. Données stockées dans un fichier .ARZ. Métadonnées sont stockées dans un fichier .ARM | +
-| CSV | Données sont stockées dans un fichier texte au format CSV. Utilisé pour échanger des données avec d'autres applications. Structure stockée dans un fichier .frm. Données stockées dans un fichier .CSV. | +
-| FEDERATED | Ne stocke pas de données. Extrait des données de tables en provenance de bases sur des serveurs distants. |+
  
-Bien que possible techniquement, il n'est pas préférable d'utiliser des types de moteurs différents dans la même base de données car ceci complique la tâche d'optimisation, augmente le nombre de buffers et de caches et complexifie le travail de l'administrateur.+<code> 
 +[root@centos7 ~]# systemctl start smb 
 +[root@centos7 ~]# systemctl start nmb 
 +[root@centos7 ~]# systemctl status smb 
 +● smb.service - Samba SMB Daemon 
 +   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled) 
 +   Active: active (running) since Sat 2017-07-29 11:53:31 CEST; 11s ago 
 + Main PID: 6793 (smbd) 
 +   Status: "smbd: ready to serve connections..." 
 +   CGroup: /system.slice/smb.service 
 +           ├─6793 /usr/sbin/smbd 
 +           ├─6794 /usr/sbin/smbd 
 +           ├─6795 /usr/sbin/smbd 
 +           └─6796 /usr/sbin/smbd
  
-Le choix d'un moteur de stockage se fait en fonction de l'adéquation entre les besoins et les caractéristiques suivants :+Jul 29 11:53:31 centos7.fenestros.loc systemd[1]: Starting Samba SMB Daemon... 
 +Jul 29 11:53:31 centos7.fenestros.loc smbd[6793]: [2017/07/29 11:53:31.692284,  0] ../lib/util/become_daemon.c:124(daemon_ready) 
 +Jul 29 11:53:31 centos7.fenestros.loc systemd[1]: Started Samba SMB Daemon. 
 +Jul 29 11:53:31 centos7.fenestros.loc smbd[6793]:   STATUS=daemon 'smbdfinished starting up and ready to serve connections 
 +[root@centos7 ~]# systemctl status nmb 
 +● nmb.service - Samba NMB Daemon 
 +   Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled) 
 +   Active: active (running) since Sat 2017-07-29 11:53:36 CEST; 15s ago 
 + Main PID: 6825 (nmbd) 
 +   Status: "nmbd: ready to serve connections..." 
 +   CGroup/system.slice/nmb.service 
 +           └─6825 /usr/sbin/nmbd
  
-^ Moteur ^ Verrous ^ Transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** ^ **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** ^ Clef Etrangère ^ Données sur Disque ^ Sauvegarde à Chaud ^ **[[http://www.manuelphp.com/mysql/commit.php|COMMIT]]** ^ **[[http://www.manuelphp.com/mysql/commit.php|ROLLBACK]]** ^ Crash Recovery ^ +Jul 29 11:53:36 centos7.fenestros.loc systemd[1]: Starting Samba NMB Daemon..
-| InnoDB | Enregistrement | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui | +Jul 29 11:53:36 centos7.fenestros.loc nmbd[6825][2017/07/29 11:53:36.108613,  0] ../lib/util/become_daemon.c:124(daemon_ready) 
-| MyISAM | Table | Non | Non | Non | Oui | Non | Non | Non | Non | +Jul 29 11:53:36 centos7.fenestros.loc systemd[1]: Started Samba NMB Daemon. 
-| Memory | Table | Non | Non | Non | Non | Non | Non | Non | Non | +Jul 29 11:53:36 centos7.fenestros.loc nmbd[6825]:   STATUS=daemon 'nmbd' finished starting up and ready to serve connections
-| Archive | Enregistrement | Non | Non | Non | Oui | Non | Non | Non | Non | +
-| CSV | Table | Non | Non | Non | Oui | Non | Non | Non | Non | +
-| Federated | Table | Non | Non | Non | Oui | Non | Non | Non | Non | +
-| NDB Cluster | Enregistrement | Oui | Non | Oui | Oui | Oui | Oui | Oui | Oui |+
  
-=====Caractéristiques des Moteurs=====+[root@centos7 ~]# ps aux | grep mb 
 +root      6793  0.0  0.3 410660  6164 ?        Ss   11:53   0:00 /usr/sbin/smbd 
 +root      6794  0.0  0.1 404480  2880 ?        S    11:53   0:00 /usr/sbin/smbd 
 +root      6795  0.0  0.1 404472  2600 ?        S    11:53   0:00 /usr/sbin/smbd 
 +root      6796  0.0  0.1 410668  3512 ?        S    11:53   0:00 /usr/sbin/smbd 
 +root      6825  0.0  0.1 337320  2716 ?        Ss   11:53   0:00 /usr/sbin/nmbd 
 +root      7296  0.0  0.0 112648   960 pts/0    R+   11:54   0:00 grep --color=auto mb 
 +</code>
  
-====InnoDB====+Testez ensuite le bon fonctionnement de Samba grâce à la commande **smbclient** :
  
-Le moteur InnoDB est le moteur par défaut de MySQL depuis la version 5.5Les principaux caractéristiques du moteur %%InnoDB%% sont :+<code> 
 +[root@centos7 ~]# smbclient -U% -L localhost 
 +Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
  
-  * Il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), + Sharename       Type      Comment 
-  * Il implémente le **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** (Multi Version Concurrency Control) qui permet d'avoir des lectures qui ne bloquent pas des écritures et inversement, + ---------       ----      ------- 
-  * Il implémente un verrou au niveau enregistrement, + print$          Disk      Printer Drivers 
-  * Il implémente un mécanisme de restauration automatique en utilisant des journaux de transactions **ib_logfile*** ou ***** est **0**, **1**, **2** etc, + IPC$            IPC       IPC Service (Samba 4.4.4
-  * La structure de la table est stockée dans un fichier .frm, +Domain=[SAMBA] OS=[Windows 6.1Server=[Samba 4.4.4]
-  * Il supporte l'utilisation de clefs étrangères, +
-  * Il peut être sauvegardé à chaud, +
-  * Il est recommandé pour des applications avec beaucoup d'écritures+
  
-===Mécanisme Interne===+ Server               Comment 
 + ---------            ------- 
 + CENTOS7              Samba 4.4.4
  
-{{ free:innodb.png }}+ Workgroup            Master 
 + ---------            ------- 
 + SAMBA                CENTOS7      
 +</code>
  
-Les transactions en cours sont stockées en mémoire dans le **buffer des journaux de transactions** (//log_buffer//). La taille du buffer est fixée par la valeur de l'option **innodb_log_buffer_size**. Chaque seconde les informations dans le buffer sont écrites sur disque dans l'un des deux journaux des transactions **ib_logfile0** ou **ib_logfile1**. Le nombre de journaux des transactions est fixé par la valeur de l'option **innodb_log_files_in_group**. La taille des logs ib_logfile*, aussi appelés le **Redo log**, est fixée par l'option **innodb_log_file_size** mais ne peut pas dépasser 512 Go. Le buffer est aussi écrit sur disque lors de chaque **commit** (validation) sauf si ce mécanisme a été modifié par la valeur de l'option **innodb_flush_log_at_trx_commit**.+Les options de la commande smbclient sont nombreuses :
  
-Une partie des données ainsi que les index sont stockés en mémoire dans le **buffer pool**.  La taille du buffer est fixée par la valeur de l'option **innodb_buffer_pool_size**. Il faut éviter que la taille de cette mémoire tampon dépasse les 80 % de la RAM du serveur. Chaque secondeles informations dans le buffer sont écrites sur disque dans le tablespace. L'emplacement du tablespace est fixé par la valeur de l'option **innodb_data_file_path**.+<code> 
 +[root@centos7 ~]# smbclient --help 
 +Usage: smbclient service <password> 
 +  -R--name-resolve=NAME-RESOLVE-ORDER     Use these name resolution services only 
 +  -M, --message=HOST                        Send message 
 +  -I, --ip-address=IP                       Use this IP to connect to 
 +  -E, --stderr                              Write messages to stderr instead of stdout 
 +  -L, --list=HOST                           Get a list of shares available on a host 
 +  -m, --max-protocol=LEVEL                  Set the max protocol level 
 +  -T, --tar=<c|x>IXFqgbNan                  Command line tar 
 +  -D, --directory=DIR                       Start from directory 
 +  -c, --command=STRING                      Execute semicolon separated commands 
 +  -b, --send-buffer=BYTES                   Changes the transmit/send buffer 
 +  -t, --timeout=SECONDS                     Changes the per-operation timeout 
 +  -p, --port=PORT                           Port to connect to 
 +  -g, --grepable                            Produce grepable output 
 +  -B, --browse                              Browse SMB servers using DNS
  
-===Transactions===+Help options: 
 +  -?, --help                                Show this help message 
 +  --usage                                   Display brief usage message
  
-Le moteur Innodb est transactionnel. Ceci implique que le moteur collectionne des requêtes jusqu'à la commande **COMMIT**. A ce moment le moteur applique les modifications à toutes les tables concernées **en même temps**. Soit toutes les modifications réussissentsoit il y a un **ROLLBACK**. Par défautMySQL utilise un autocommit avec le moteur Innodb. Ceci implique qu'à la fin de chaque requête SQLle serveur voit un commit virtuel.+Common samba options: 
 +  -d--debuglevel=DEBUGLEVEL               Set debug level 
 +  -s--configfile=CONFIGFILE               Use alternate configuration file 
 +  -l, --log-basename=LOGFILEBASE            Base name for log files 
 +  -V--version                             Print version 
 +  --option=name=value                       Set smb.conf option from command line
  
-Il est possible de modifier ce comportement automatique en utilisant la commande **BEGIN**. Par exemple :+Connection options: 
 +  -O, --socket-options=SOCKETOPTIONS        socket options to use 
 +  -n, --netbiosname=NETBIOSNAME             Primary netbios name 
 +  -W, --workgroup=WORKGROUP                 Set the workgroup name 
 +  -i, --scope=SCOPE                         Use this Netbios scope
  
-<file> +Authentication options: 
-mysql> BEGIN; +  -U, --user=USERNAME                       Set the network username 
-mysql> INSERT INTO table (colonneVALUES (value); +  -N, --no-pass                             Don't ask for a password 
-mysql> COMMIT; +  -k, --kerberos                            Use kerberos (active directoryauthentication 
-</file>+  -A, --authentication-file=FILE            Get the credentials from a file 
 +  -S, --signing=on|off|required             Set the client signing state 
 +  -P, --machine-pass                        Use stored machine account password 
 +  -e, --encrypt                             Encrypt SMB transport 
 +  -C, --use-ccache                          Use the winbind ccache for authentication 
 +  --pw-nt-hash                              The supplied password is the NT hash 
 +</code>
  
-Si la dernière commande est remplacée par la commande ROLLBACK la modification apportée par la requête INSERT INTO sera effacée :+Celles qui nous intéressent ici sont :
  
-<file> +  * **-U%**  
-mysql> BEGIN; +    * sert à éviter une authentification avec mot de passe, 
-mysql> INSERT INTO table (colonne) VALUES (value); +  * **-L** 
-mysql> ROLLBACK; +    * liste les ressources disponibles sur **localhost**.
-</file>+
  
-===Tablespace===+=== Configuration de Samba ===
  
-Depuis la version 5.6.6 de MySQL, il existe l'option **innodb_file_per_table**. Si cette option est **0**, Innodb se comporte comme les versions précédentes, à savoir les données et les index de toutes les tables sont centralisées dans la **Tablespace**, c'est-à-dire, dans le fichier **ibdata** par défaut. Avec une valeur de **1**, les données et index de chaque table sont stockées dans un fichier individuel ayant une extension **.ibd** se trouvant dans le répertoire du schéma à côté du fichier de définition de la structure, le **.frm**.+==Gestion des comptes et des groupes ==
  
-Cette modification permet le stockage des fichiers .ibd sur un autre espace de stockage physique. De cette façonil est possible d'utiliser des espaces de stockage très rapides.+Vous allez maintenant créer le groupe **staff**utilisé pour le partage **Public**:
  
-Malgré l'utilisation des fichiers .ibd, il est toujours necéssaire d'avoir le fichier **ibdata** car ce dernier stocke le **dictionnaire des données** qui est une copie de tous les fichiers .frm ainsi que les Redo logs. Les Redo logs journalisent toute requête de modification des objets.+  [root@centos7 ~]# groupadd staff
  
-<note warning> +Pour insérer des utilisateurs dans le groupe **staff**, ouvrez le fichier **/etc/group** et ajoutez tous les utilisateurs à qui vous souhaitez donner accès au partage public de samba au groupe staff.
-Malgré l'utilisation des fichiers **.ibd**, il n'est pas possible de manipuler les fichiers dans un gestionnaire de fichiersNe les déplacez pas, ne les copiez pas sous peine de perdre des données. +
-</note> +
  
-<note important+<code
-La quantité de mémoire libre dans un fichier *.ibd ou dans la Tablespace est indiquée par la sortie de la commande **SHOW TABLE STATUS**. Cette valeur est en pages et chaque page vaut 16 Ko. Bien que vous puissiez libérer de l'espace mémoire utilisée dans la Tablespace en passant la valeur de l'option **innodb_file_per_table** de **0** à **1** et en saisissant la commande **ALTER TABLE table ENGINE=InnoDB** pour chaque table, la taille du fichier ibdata ne diminuera pasLa seule façon de réduire la taille de ce fichier est d'exporter la base de données avec mysqldump puis de recréer la base de données à partir du dump+[root@centos7 ~]# vi /etc/group 
-</note>+[root@centos7 ~]# cat /etc/group 
 +root:x:0
 +..
 +trainee:x:1000:trainee 
 +vboxsf:x:983: 
 +staff:x:1001:trainee 
 +</code>
  
-===Multiversion Concurrency Control===+Faites la même procédure pour le fichier **/etc/gshadow** :
  
-Chaque table Innodb contient deux colonnes cachées :+<code> 
 +[root@centos7 ~]# vi /etc/gshadow 
 +[root@centos7 ~]# cat /etc/gshadow 
 +root::: 
 +... 
 +trainee:!!::trainee 
 +vboxsf:!:: 
 +staff:!::trainee 
 +</code>
  
-  * le numéro de transaction - **txn#**, +== Création du fichier smbpasswd ==
-  * un pointeur vers la version précédente de la ligne qui se trouve dans le Undo log. Ce pointeur s'appelle le **Pointeur ROLLBACK**.+
  
-Quand une ligne est modifiéel'ancienne version de la ligne y compris son numéro de transaction est copiée dans le Undo log. La nouvelle version de la ligne y compris son numéro de transaction est copiée dans la Tablespace ou dans le fichier .ibd. Le pointeur de la nouvelle ligne identifie l'ancienne ligne dans le Undo log. Ce processus s'appelle le **MVCC** (//Multiversion Concurrency Control//).+Afin de pouvoir permettre des connexions au serveur Sambail faut créer le fichier **/var/lib/samba/private/smbpasswd** qui contiendra les utilisateurs autorisés.
  
-===Transaction Isolation Levels===+En effet, le serveur Samba n'utilise pas le fichier de mots de passe de la machine Linux, à savoir le fichier **/etc/passwd**. Cependant, une fois le serveur Samba fonctionnel, nous pouvons stipuler que les deux fichiers soient synchronisés lors des modifications futures.
  
-Créez la base de données **nombres** :+Modifiez la directive **passdb backend** du fichier **/etc/samba/smb.conf** afin d'utiliser le fichier **/var/lib/samba/private/smbpasswd** pour stocker les mots de passe samba :
  
 <code> <code>
-mysql> CREATE DATABASE `Nombres` ; +[root@centos7 ~]# vi /etc/samba/smb.conf 
-Query OK, 1 row affected (0.01 sec)+[root@centos7 ~]# cat /etc/samba/smb.conf 
 +# See smb.conf.example for a more detailed config file or 
 +# read the smb.conf manpage. 
 +# Run 'testparm' to verify the config is correct after 
 +# you modified it.
  
-mysql> USE Nombres; +[global] 
-Database changed+ workgroup = SAMBA 
 + security = user
  
-mysql> CREATE TABLE english (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Number VARCHAR(10)); + #passdb backend = tdbsam 
-Query OK, 0 rows affected (0.08 sec)+ passdb backend = smbpasswd
  
-mysql> INSERT INTO english (Number) VALUES ('One'); + printing = cups 
-Query OK, 1 row affected (0.01 sec)+ printcap name = cups 
 + load printers = yes 
 + cups options = raw
  
-mysql> INSERT INTO english (Number) VALUES ('Two'); +[homes] 
-Query OK1 row affected (0.01 sec)+ comment = Home Directories 
 + valid users = %S%D%w%S 
 + browseable = No 
 + read only = No 
 + inherit acls = Yes
  
-mysql> INSERT INTO english (Number) VALUES ('Three'); +[printers] 
-Query OK, 1 row affected (0.01 sec)+ comment = All Printers 
 + path = /var/tmp 
 + printable = Yes 
 + create mask = 0600 
 + browseable = No
  
-mysql> SELECT * FROM english; +[print$] 
-+----+--------+ + comment = Printer Drivers 
-| id | Number | + path = /var/lib/samba/drivers 
-+----+--------+ + write list = root 
-|  1 | One    | + create mask = 0664 
-|  2 | Two    | + directory mask = 0775
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.00 sec) +
- +
-mysql> +
 </code> </code>
  
-==Read Uncomitted==+Le système de stockage des mots de passe peut être un des suivants :
  
-Mettez à jour l'enregistrement 1 sans faire de COMMIT ou de ROLLBACK :+  * smbpasswd - utilise un fichier. Par défaut: **/etc/samba/smbpasswd**, 
 +  * tdbsam - utilise une base de données de type Trivial Database. Par défaut : **/var/lib/samba/private/passdb.tdb**, 
 +  * ldapsam - utilise un URL vers un LDAP, Par défaut : **ldap://localhost**.
  
-<code> +**La Commande smbpasswd**
-mysql> BEGIN; +
-Query OK, 0 rows affected (0.00 sec)+
  
-mysql> UPDATE english SET Number = "Un" WHERE id = 1; +Créez maintenant les mots de passe samba pour chaque utilisateur dans le fichier /var/lib/samba/private/smbpasswd :
-Query OK, 1 row affected (0.04 sec) +
-Rows matched1  Changed: 1  Warnings: 0+
  
-mysqlSELECT * FROM english; +<code
-+----+--------+ +[root@centos7 ~]# smbpasswd -a root 
-| id | Number | +New SMB password: 
-+----+--------+ +Retype new SMB password: 
-|  1 | Un     | +startsmbfilepwent_internal: file /var/lib/samba/private/smbpasswd did not exist. File successfully created. 
-|  2 | Two    | +Added user root. 
-|  3 | Three  | +[root@centos7 ~]# smbpasswd -a trainee 
-+----+--------+ +New SMB password: 
-3 rows in set (0.00 sec) +Retype new SMB password: 
- +Added user trainee.
-mysql> +
 </code> </code>
  
-Ouvrez une autre terminal, connectez-vous à mysql et visualisez la modification :+Consultez le fichier **/var/lib/samba/private/smbpasswd**. Vous devez constater une ligne pour chaque utilisateur. Chaque ligne doit comporter une chaîne de caractères alphanumérique :
  
 <code> <code>
-[root@node01 ~]# mysql +[root@centos7 ~]# cat /var/lib/samba/private/smbpasswd 
-Welcome to the MySQL monitor.  Commands end with ; or \g. +root:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E183384163AA4BFFAF24CC678CF19EAB:[U          ]:LCT-597C6334: 
-Your MySQL connection id is 3 +trainee:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:2A217A32BDE94A23B26A8EEA26C70874:[U          ]:LCT-597C6343:
-Server version: 5.5.33-cll-lve MySQL Community Server (GPL) by Atomicorp +
- +
-Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. +
- +
-Oracle is a registered trademark of Oracle Corporation and/or its +
-affiliates. Other names may be trademarks of their respective +
-owners. +
- +
-Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. +
- +
-mysql> USE Nombres; +
-Reading table information for completion of table and column names +
-You can turn off this feature to get a quicker startup with -A +
- +
-Database changed +
- +
-mysql> SELECT * FROM english; +
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | One    | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.01 sec) +
- +
-mysql> +
 </code> </code>
  
-<note important> +Créez ensuite un lien symbolique :
-Notez que le deuxième client voit l'ancienne valeur de l'enregistrement 1. Ceci est parce que la base de données a suivi le Pointeur ROLLBACK vers le Undo log pour afficher la valeur de la colonne. Notez que **MVCC** ne bloque pas la lecture malgré le fait qu'il y a une transaction en cours ! +
-</note> +
- +
-Pour voir la valeur dans la Tablespace, il faut modifier la valeur de l'option TRANSACTION ISOLATION LEVEL :+
  
 <code> <code>
-mysql> SET TRANSACTION ISOLATION LEVEL read uncommitted; +[root@centos7 ~]# ln -s /var/lib/samba/private/smbpasswd /etc/samba/smbpasswd
-Query OK, 0 rows affected (0.00 sec) +
- +
-mysql> SELECT * FROM english; +
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | Un     | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.01 sec) +
- +
-mysql> +
 </code> </code>
  
-<note warning> +**La Commande pdbedit**
-Dans ce mode, le client voit une donnée fictive car il n'y a pas encore eu de COMMIT ! +
-</note>+
  
-==Read Comitted== +La commande pdbedit est utilisée pour la gestion de la base de données de SAMBA. Par exemple pour lister les utilisateurs de SAMBA :
- +
-Dans ce mode de fonctionnement InnoDB suit les Pointeurs ROLLBACK jusqu'à il trouve la dernière version ayant subi un COMMIT :+
  
 <code> <code>
-mysql> SET TRANSACTION ISOLATION LEVEL read committed; +[root@centos7 ~]# pdbedit -L 
-Query OK, 0 rows affected (0.00 sec) +root:0:root 
- +trainee:1000:trainee
-mysql> SELECT * FROM english; +
-+----+--------+ +
-| id | Number | +
-+----+--------+ +
-|  1 | One    | +
-|  2 | Two    | +
-|  3 | Three  | +
-+----+--------+ +
-3 rows in set (0.01 sec) +
- +
-mysql> +
 </code> </code>
  
-Retournez au premier terminal :+Pour créer un compte SAMBA, l'utilisateur doit d'abord posséder un compte Unix :
  
 <code> <code>
-mysql> COMMIT; +[root@centos7 ~]# useradd sambauser
-Query OK, 0 rows affected (0.01 sec) +
- +
-mysql> +
 </code> </code>
  
-Retournez au deuxième terminal :+Il est ensuite possible d'utiliser la commande pdbedit pour créer l'utilisateur dans la base de données de SAMBA :
  
 <code> <code>
-<mysql> SELECT * FROM english; +[root@centos7 ~]# useradd sambauser 
-+----+--------+ +[root@centos7 ~]# pdbedit -a sambauser 
-| id | Number | +new password: 
-+----+--------+ +retype new password: 
-|  1 | Un     | +Unix username:        sambauser 
-|  2 | Two    | +NT username:           
- 3 | Three  | +Account Flags:        [U          ] 
-+----+--------+ +User SID:             S-1-5-21-3392617607-4065925175-2212523533-3002 
-3 rows in set (0.00 sec) +Primary Group SID:    S-1-5-21-3392617607-4065925175-2212523533-513 
- +Full Name:             
-mysql> +Home Directory:       \\centos7\sambauser 
 +HomeDir Drive:         
 +Logon Script:          
 +Profile Path:         \\centos7\sambauser\profile 
 +Domain:               CENTOS7 
 +Account desc:          
 +Workstations:          
 +Munged dial:           
 +Logon time:           0 
 +Logoff time:          never 
 +Kickoff time:         never 
 +Password last set:    Tue, 15 Aug 2017 16:21:39 CEST 
 +Password can change:  Tue, 15 Aug 2017 16:21:39 CEST 
 +Password must change: never 
 +Last bad password   : 
 +Bad password count  : 0 
 +Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
 </code> </code>
  
-====MyISAM==== +Cette commande a donc ajouté l'utilisateur au fichier **/var/lib/samba/private/smbpasswd** :
- +
-L'architecture du moteur %%MyISAM%% est plus simple que le moteur %%InnoDB%%. Les principaux caractéristiques du moteur %%MyISAM%% sont : +
- +
-  * Il n'est pas transactionnel, +
-  * Il implémente un verrou au niveau table, +
-  * Il n'y a pas de recouvrement automatique des données lors d'un crash, +
-  * La structure de la table est stockée dans un fichier .frm, +
-  * Les données sont stockées dans un fichier .MYD tandis que les index sont stockés dans un fichier .MYI, +
-  * Il ne supporte pas de clefs étrangères, +
-  * Il ne peut pas être sauvegardé à chaud, +
-  * Il peut être compressé, +
-  * Il supporte les index plain text (fulltext), +
-  * Il est recommandé pour des applications avec beaucoup de lectures.   +
- +
-Il existe trois types de moteurs %%MyISAM%% : FIXED , DYNAMIC et COMPRESSED : +
- +
-=== MyISAM FIXED=== +
- +
-Une table est FIXED si elle ne contient aucun champ de type VARCHAR, VARBINARY, TEXT ou BLOB ou si la valeur de l'option **row_format** est FIXED ( row_format=FIXED ). Tous les enregistrements sont de la même taille. De ce fait, les tables sont plus rapides et plus robustes que les tables dynamiques mais elles prennent plus d'espace disque. Les données de la table ne peuvent pas être fragmentées. Une table devient FIXED quand la valeur de l'option **row_format** est FIXED ( row_format=FIXED ) :+
  
 <code> <code>
-mysql> SHOW TABLE STATUS LIKE 'db' \G; +[root@centos7 ~]# cat /var/lib/samba/private/smbpasswd 
-*************************** 1. row *************************** +root:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E183384163AA4BFFAF24CC678CF19EAB:[U          ]:LCT-5993021B
-           Namedb +trainee:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:2A217A32BDE94A23B26A8EEA26C70874:[U          ]:LCT-5993022B
-         EngineMyISAM +sambauser:1001:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:C27F8C725297C4466C963B7F88906297:[U          ]:LCT-59930373:
-        Version10 +
-     Row_formatFixed +
-           Rows+
- Avg_row_length440 +
-    Data_length880 +
-Max_data_length123848989752688639 +
-   Index_length5120 +
-      Data_free+
- Auto_increment: NULL +
-    Create_time2014-01-22 15:28:03 +
-    Update_time2014-01-22 15:28:04 +
-     Check_time2014-01-22 15:28:04 +
-      Collation: utf8_bin +
-       Checksum: NULL +
- Create_options:  +
-        Comment: Database privileges +
-1 row in set (0.01 sec) +
- +
-ERROR:  +
-No query specified +
- +
-mysql> +
 </code> </code>
  
-=== MyISAM DYNAMIC === +Pour visualiser les informations d'un utilisateur SAMBA existantil convient d'utiliser les options **-Lv** :
- +
-Une table est DYNAMIC si elle contient au moins un champ de type VARCHAR, VARBINARY, TEXT ou BLOB ou la valeur de l'option **row_format** est DYNAMIC ( row_format=DYNAMIC ). Les données de la table peuvent être fragmentées. Dans ce casl'utilisation de la commande OPTIMIZE TABLE ou **myisamchk** est nécessaire :+
  
 <code> <code>
-mysql> SHOW TABLE STATUS LIKE 'proc' \G; +[root@centos7 ~]# pdbedit -Lv sambauser 
-*************************** 1. row *************************** +Unix username:        sambauser 
-           Name: proc +NT username:           
-         EngineMyISAM +Account Flags:        [U          ] 
-        Version10 +User SID:             S-1-5-21-3392617607-4065925175-2212523533-3002 
-     Row_formatDynamic +Primary Group SID:    S-1-5-21-3392617607-4065925175-2212523533-513 
-           Rows0 +Full Name:             
- Avg_row_length0 +Home Directory      \\centos7\sambauser 
-    Data_length0 +HomeDir Drive        
-Max_data_length281474976710655 +Logon Script         
-   Index_length2048 +Profile Path        \\centos7\sambauser\profile 
-      Data_free: 0 +Domain              CENTOS7 
- Auto_incrementNULL +Account desc         
-    Create_time2014-01-22 15:28:04 +Workstations         
-    Update_time2014-01-22 15:28:04 +Munged dial          
-     Check_timeNULL +Logon time          
-      Collationutf8_general_ci +Logoff time         never 
-       ChecksumNULL +Kickoff time        never 
- Create_options:  +Password last set   Tue, 15 Aug 2017 16:21:39 CEST 
-        CommentStored Procedures +Password can change Tue, 15 Aug 2017 16:21:39 CEST 
-1 row in set (0.01 sec) +Password must changenever 
- +Last bad password   : 0 
-ERROR +Bad password count  : 0 
-No query specified +Logon hours         FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- +
-mysql> +
 </code> </code>
  
-===MyISAM COMPRESSED=== +La commande peut aussi être utiliser pour supprimer un utilisateur SAMBA :
- +
-Après avoir arrêté le serveur, la compression est obtenue en utilisant la commande **myisampack** suivi de la commande **myisamchk -rq**. Le décompression est obtenue en utilisant la commande **myisamchk --unpack**. La compression peut atteindre les 70% maximum. Une fois compressée les requêtes UPDATE, DELETE et INSERT ne peuvent pas être utilisées :+
  
 <code> <code>
-[root@centos ~]# myisampack /var/lib/mysql/mysql/help_keyword.MYI +[root@centos7 ~]# pdbedit -x sambauser 
-Compressing /var/lib/mysql/mysql/help_keyword.MYD: (467 records) +[root@centos7 ~]# cat /var/lib/samba/private/smbpasswd 
-Calculating statistics +root:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E183384163AA4BFFAF24CC678CF19EAB:[U          ]:LCT-5993021B: 
-- Compressing file +trainee:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:2A217A32BDE94A23B26A8EEA26C70874:[U          ]:LCT-5993022B
-95.21%      +[root@centos7 ~]# cat /etc/passwd | grep sambauser 
-Remember to run myisamchk -rq on compressed tables +sambauser:x:1001:1002::/home/sambauser:/bin/bash
- +
-[root@centos ~]# myisamchk -rq /var/lib/mysql/mysql/help_keyword.MYI +
-check record delete-chain +
-recovering (with sort) MyISAM-table '/var/lib/mysql/mysql/help_keyword.MYI' +
-Data records467 +
-- Fixing index 1 +
-- Fixing index 2 +
- +
-[root@centos ~]# myisamchk --unpack /var/lib/mysql/mysql/help_keyword.MYI +
-- recovering (with sort) MyISAM-table '/var/lib/mysql/mysql/help_keyword.MYI' +
-Data records: 467 +
-- Fixing index 1 +
-- Fixing index 2+
 </code> </code>
  
-===Particularités=== 
  
-  * Le moteur MyISAM est particulièrement portable car il suffit de copier les fichiers *.frm, *.MYD et *.MYI pour obtenir une sauvegarde physique, +== Comprendre la structure du fichier de configuration smb.conf ==
-  * Le nombre d'enregistrements est stocké dans la table, +
-  * Les index non-uniques peuvent être désactivés momentanément, +
-  * Il est possible d'avoir des INSERT et SELECT simultanés en utilisant l'option **concurrent_insert**+
  
 +Ayant maintenant créé un fichier smbpasswd, il est le moment de terminer la configuration de votre serveur Samba.
  
-====Memory====+Cette configuration est dictée par un seul et unique fichier – **/etc/samba/smb.conf**.
  
-Les principaux caractéristiques du moteur Memory sont :+Avant de faire des manipulations, veillez à sauvegarder votre fichier smb.conf actuel :
  
-  * Il n'est pas transactionnel, +<code> 
-  * Il implémente un verrou au niveau table, +[root@centos7 ~]# cp /etc/samba/smb.conf /etc/samba/smb.old 
-  * Il n'y a pas de recouvrement automatique des données lors d'un crash, +</code>
-  * La structure de la table est stockée dans un fichier .frm, +
-  * Les données sont stockées dans la mémoire, +
-  * Il ne supporte pas de clefs étrangères, +
-  * Il ne peut pas être sauvegardé à chaud, +
-  * Il est recommandé pour des applications ayant besoin de la vitesse.  +
  
-===Particularités===+Examinez le fichier smb.conf suivant ainsi que le tableau récapitulatif des paramètres :
  
-  * La consommation de la mémoire est fixée par les options **MAX_ROWS** et **max_heap_table_size**, +<file> 
-  * Le moteur peut implémenter soit l'algorithme **HASH** pour les index pour augmenter la performance pour les recherches d'égalité soit l'algorithme **BTREE** pour les index pour augmenter la performance pour les recherches d'inégalité, +# Example d'un fichier smb.conf pour des partages par ressources 
-  * Au démarrage du serveur les tables sont évidement vides. Il est possible de les pré-remplir grâce à des instructions SQL contenues dans un fichier référencé par l'option **init-file**.+# Toute ligne commencant par un # ou un ; est un commentaire et  
 +# n'est pas prise en compte lors de la lecture de ce fichier par  
 +# samba. N'oubliez pas de lancer la commande 'service smb restart'  
 +# lors de chaque changement et enregistrement de ce fichier. 
  
 +#======================= Section Globale ======================== 
  
-===En Pratique===+[global]
  
-Créez une table au format MEMORY en utilisant les données de la tables famille issue de la base carnetadresses :+# 1. Options du nom du serveur:  
 +# Modifiez la ligne qui suit pour votre workgroup  
 +workgroup = WORKGROUP 
 +# Modifiez la ligne qui suit pour votre nom de machine. Par défaut sa valeur est la valeur de hostname 
 +netbios name = Machine01 
 +server string = Samba Server %v
  
-  mysql> CREATE TABLE tempfamilles TYPE=MEMORY SELECT * FROM familles ;+# 2. Options d'impression :  
 +printcap name cups 
 +load printers = yes  
 +printing = cups
  
-Visualisez les enregistrements de la table tempfamilles :+# 3. Options de journalisation  
 +log file = /var/log/samba/log.%m  
 +max log size = 50  
 +log level = 5
  
-  mysql> SELECT FROM tempfamilles;+# 4. Options de sécurité :  
 +# Modifiez la ligne qui suit pour votre adresse reseau  
 +hosts allow = 192.168.1.  127. 
 +hosts deny = all 
 +security = user 
 +passdb backend = smbpasswd 
 +encrypt passwords = yes  
 +smb passwd file = /etc/samba/smbpasswd  
 +unix password sync = Yes  
 +passwd program = /usr/bin/passwd %u  
 +passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n  
 +*passwd:*all*authentication*tokens*updated*successfully*
  
-Supprimez la table tempfamilles :+# 5. Options du reseau 
 +# Modifiez la ligne qui suit pour l'adresse IP de votre carte reseau  
 +interfaces = 192.168.1.22/255.255.255.0 
 +# Modifiez la ligne qui suit à l'adresse de diffussion de votre reseau  
 +remote announce = 192.168.1.255
  
-  mysql > DROP TABLE tempfamilles;+# 6.Options de resolutions de nom Netbios:  
 +name resolve order = wins lmhosts bcast host  
 +dns proxy = yes
  
-====Archive====+# 7. Options de nommage de fichiers:  
 +dos charset 850  
 +unix charset ISO8859-1
  
-Les principaux caractéristiques du moteur Archive sont :+#======================== Definitions des Partages ============================== 
  
-  * Il n'est pas transactionnel, +[homes]  
-  * Il implémente un verrou au niveau enregistrement, +comment = Repertoires Personnels  
-  * Il n'y a pas de recouvrement automatique des données lors d'un crash, +browseable = no  
-  * Les données sont stockées en les compressant, +writable = yes
-  * Il ne supporte pas de clefs étrangères, +
-  * Il ne peut pas être sauvegardé à chaud, +
-  * Il ne supporte pas d'Index, +
-  * Il est recommandé pour réduire l'espace disque utilisé par les tables. +
  
-===Particularités===+[public]  
 +comment Repertoire Public  
 +path /home/samba/public  
 +write list @staff  
 +read list @staff  
 +writable yes  
 +guest ok no  
 +create mode = 0755 
 +#Fin 
 +</file>
  
-  Le moteur ne permet que des requêtes INSERT et SELECT.+Ce fichier est un exemple d'un smb.conf avec **security = user**. De cette façon chaque utilisateur ne verra que les partages auxquels il a un droit d'accès. En équivalence Windows(tm), ceci correspond à mettre en place un réseau poste-à-poste avec Windows(tm) NT4.0 Workstation.
  
 +Toute ligne commençant par **#** ou **;** est un commentaire et n'est pas prise en compte lors de la lecture du fichier par Samba. Le fichier est divisé en deux parties – la section **globale **et la section **partages**.
  
-====CSV====+L'exemple de smb.conf ci-dessus établira un **niveau de sécurité par ressource**. Dans ce cas, un utilisateur verra toutes les ressources partagées sur le serveur Linux dans le Voisinage Réseau Windows, mais il n'aura accès qu'aux ressources pour lesquelles il existe une autorisation explicite pour lui.
  
-Les principaux caractéristiques du moteur CSV sont :+Afin de comprendre les paramètres dans le fichier précédent, consultez le tableau suivant :
  
-  Il n'est pas transactionnel, +**Paramètre ** ^ **Valeur Par Défaut ** ^ **Description ** ^ 
-  Il implémente un verrou au niveau table, +| Workgroup = | s/o | Le nom du groupe de travail | 
-  Il n'y a pas de recouvrement automatique des données lors d'un crash, +| Netbios name = | La valeur de hostname | Le nom NetBIOS du serveur | 
-  La structure de la table est stockée dans un fichier .frm+| Server string = | s/o |La description du serveur | 
-  * Les données sont séparées par des **;** et stockées dans un fichier .CSV tandis que les informations concernant l'état de la table ainsi que le nombre d'enregistrements sont stockées dans un fichier .CSM, +| path = | s/o | Désigne le chemin du répertoire à partager | 
-  * Il ne supporte pas de clefs étrangères, +| comment = | s/o | Désigne le nom du partage visible dans le voisinage réseau Windows | 
-  * Il ne peut pas être sauvegardé à chaud, +| guest ok = yes | no | Si yesle partage est en accès libre sans restrictions de mot de passe. | 
-  * Il ne supporte pas d'Index, +| guest account =  | nobody | Le nom du compte d'accès libre. | 
-  Il est recommandé pour des tables ayant besoin d'être manipulées par des logiciels tiers+| valid users = | tout utilisateur | Désigne une liste d'utilisateurs qui peuvent avoir accès à la ressource. La liste d'utilisateurs est séparé par des espaces. Chaque groupe commence avec @. Ex: **valid users = user1 user2 @groupe3 ** 
 +| printable = true | false | Partager un service d'impression | 
 +| writeable = yes | no | Désigne si oui ou non le droit d'écriture est accordé dans le répertoire concerné. | 
 +| write list = | tout utilisateur | Désigne la liste des utilisateurs qui peuvent écrire dans un répertoire. | 
 +| read list = | tout utilisateur | Désigne la liste des utilisateurs qui peuvent lire dans un répertoire. | 
 +| browseable = | yes | Désigne si oui ou non le partage sera visible par tous, y compris les utilisateurs non authentifiés. | 
 +| create mode = | 0744 | Désigne les droits maximum accordés à un fichier créés dans le répertoire concerné
 +| create mask = | 0744 | Idem create mode =. | 
 +| directory mode = | 0755 | Désigne les droits maximum accordés à un répertoire créé dans la ressource. | 
 +| directory mask = | 0755 | Idem directory mode =. | 
 +| force create mode | s/o | Désigne les droits accordés à un fichier créés dans le répertoire concerné. | 
 +| force directory mode| s/o | Désigne les droits accordés à un répertoire créé dans la ressource. | 
 +| force group = | s/o | Impose un groupe propriétaire pour tout fichier créé dans le répertoire| 
 +| hide dot files = | yes | Cache les fichiers cachés de Linux. | 
 +| hosts allow = | toute station | Liste d'adresses IP ayant accès à une ressource. | 
 +| hosts deny = | aucune | Liste d'adresses IP n'ayant pas accès à une ressource. | 
 +| max connections = | 0 | Désigne un nombre de connections illimités à la ressource concernée. Sinon spécifiez un nombre maximum de connexions. | 
 +| Log file = /chemin/log.%m | s/o | Désigne le chemin des logs. L'opérateur **%m **implique que chaque log aura le nom de la machine associé. Ex: log.station1, log.station2 etc. | 
 +| max log size = | s/o | La taille est à définir en Ko. C'est la taille maximale du fichier log. | 
 +| interfaces = | s/o | Désigne l'adresse IP de la carte réseau connecté au réseau Windows. A exprimer sous la forme **N° IP/N° sous-masque. ** | 
 +| remote announce = | s/o | L'adresse de Broadcast du réseau, ici le 192.168.1.255|
  
-====FEDERATED====+Notez que lors de chaque changement et enregistrement de ce fichier, il faut que smb relise le fichier.
  
-Les principaux caractéristiques du moteur FEDERATED sont :+Le fichier smb.conf utilise également des variables :
  
-  Il n'est pas transactionnel+**Variable ** ^ **Description ** ^ 
-  * Il n'y a pas de recouvrement automatique des données lors d'un crash, +| %a | L'architecture du client (SambaWindows 2000, Windows NT, Unknown | 
-  * Il ne supporte pas de clefs étrangères, +| %l | L'adresse IP du client | 
-  * Il ne peut pas être sauvegardé à chaud, +| %M | Le nom DNS du client | 
-  * Il ne supporte pas d'Index, +| %m | Le nom NetBIOS du client | 
-  * Il supporte des requêtes SELECT, INSERT, UPDATE, DELETE, TRUNCATE et DROP TABLE, +| %u | L'identité de l'utilisateur | 
-  * Il n'utilise pas le cache de requêtes, +| %U | L'identité souhaité par l'utilisateur | 
-  * Il est utilisé pour accéder à des données localisées sur un serveur **MySQL** distant.+| %H | Le répertoire de connexion de l'utilisateur | 
 +| %g | Le groupe principal de l'utilisateur | 
 +| %S | Le nom du partage | 
 +| %P | Le répertoire racine du partage | 
 +| %| Le PID du process courant | 
 +| %h | Le nom DNS du serveur SAMBA | 
 +| %L | Le nom NetBIOS du serveur SAMBA | 
 +| %N | Idem %L | 
 +| %v | La version de SAMBA | 
 +| %T | La date et l'heure du système | 
 +| %var | La valeur de la variable var |
  
-====NDB Cluster====+Créez donc le fichier smb.conf ci-dessous et placez-le dans le répertoire **/etc/samba**. Modifiez les directives **hosts allow**, **interfaces** et **remote announce** en fonction de votre adresse IP :
  
-Le moteur NDB Cluster est le moteur de MySQL ClusterLes principaux caractéristiques du moteur NDB Cluster sont :+<file text smb.conf> 
 +[global] 
 +workgroup = WORKGROUP  
 +netbios name = Machine01 
 +server string = Samba Server %v 
 +printcap name = cups 
 +load printers = yes 
 +printing = cups 
 +log file = /var/log/samba/log.%m 
 +max log size = 50 
 +log level = 5 
 +hosts allow = 192.168.1.  127. 
 +hosts deny = all 
 +security = user 
 +passdb backend = smbpasswd 
 +encrypt passwords = yes 
 +smb passwd file = /etc/samba/smbpasswd 
 +unix password sync = Yes 
 +passwd program = /usr/bin/passwd %u 
 +passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* 
 +interfaces = 192.168.1.103/255.255.255.0 
 +remote announce = 192.168.1.255 
 +name resolve order = wins lmhosts bcast host 
 +dns proxy = yes  
 +dos charset = 850 
 +unix charset = ISO8859-1
  
-  * Il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), +[homes
-  * Il implémente le **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** (Multi Version Concurrency Control) qui permet d'avoir des lectures qui ne bloquent pas des écritures et inversement, +comment = Repertoires Personnels 
-  * Il implémente un verrou au niveau enregistrement, +browseable = no 
-  * Il implémente la réplication synchrone, +writable = yes
-  * Il implémente le basculement automatique sur un autre nœud en cas de panne et la synchronisation automatique du nœud à son démarrage, +
-  * Il peut être sauvegardé à chaud, +
-  * Il permet le dimensionnement des requêtes de lecture et d'écriture, +
-  * Il utilise l'architecture **Shared Nothing** où les nœuds ne partagent pas un disque de données, +
-  * Il implémente l’absence du **[[http://fr.wikipedia.org/wiki/SPOF|SPOF]]** (//Single Point Of Failure//). +
  
 +[public]
 +comment = Repertoire Public
 +path = /home/samba/public
 +write list = @staff
 +read list = @staff
 +writable = yes
 +guest ok = no
 +create mode = 0755
 +</file>
  
-====Autres Moteurs Non Standards==== +Rechargez le fichier de configuration smb.conf :
- +
-===XtraDB=== +
- +
-**[[http://www.percona.com/software/percona-xtradb|XtraDB]]** est le moteur de la société **Percona**Il est basé sur InnoDB et a pour but d'être plus performant. Les principaux caractéristiques du moteur XtraDB sont : +
- +
-  * Il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), +
-  * Il implémente le **[[http://fr.wikipedia.org/wiki/Multiversion_Concurrency_Control|MVCC]]** (Multi Version Concurrency Control) qui permet d'avoir des lectures qui ne bloquent pas des écritures et inversement, +
-  * Il implémente un verrou au niveau enregistrement, +
-  * Il implémente un mécanisme de restauration automatique, +
-  * Il supporte l'utilisation de clefs étrangères, +
-  * Il peut être sauvegarder à chaud, +
-  * Le moteur peut implémenter soit l'algorithme **HASH** pour les index pour augmenter la performance pour les recherches d'égalité soit l'algorithme **B+TREE** pour les index pour augmenter la performance pour les recherches d'inégalité. +
- +
-===Aria=== +
- +
-**[[https://mariadb.com/kb/en/aria/|Aria]]** est le moteur de **Michael Widenius**. Il a été créé pour être un alternatif au moteur MyISAM. Les principaux caractéristiques du moteur Aria sont : +
- +
-  * En version 2.0, il est transactionnel de type **[[http://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID|ACID]]** (Atomicité, Cohérence, Isolation, Durabilité), +
-  * Il implémente un verrou au niveau enregistrement, +
-  * Il implémente un mécanisme de restauration automatique. +
- +
- +
-=====Jointures===== +
- +
-Les jointures permettent de créer un lien entre deux tables. Le champ utilisé pour la jointure dans la première table est souvent la **clef primaire**. Le champs utilisé dans la deuxième table est appelé le **clef étrangère**. La clef primaire et la clef étrangère doivent être du même **type**. +
- +
-Dans le cas où on utilise un champs autre que la clef primaire pour assurer la jointure, cet autre champs doit être **indexé**. +
- +
-====FULL JOIN==== +
- +
-Ce type de jointure permet de renvoyer uniquement les enregistrements des **deux** tables 1 et 2 ayant une correspondance : +
- +
-  mysql> SELECT table1.champ1, table2.champ1 FROM table1, table2 WHERE table1.clefprimaire = table2.clefetrangere; +
-  +
-ou +
- +
-  mysql> SELECT table1.champ1, table2.champ1 FROM table1 JOIN table2 WHERE table1.clefprimaire = table2.clefetrangere; +
- +
-====LEFT JOIN==== +
- +
-Ce type de jointure permet de renvoyer les enregistrements de la première table qui ont une correspondance dans la deuxième table. La syntaxe est la suivante : +
- +
-  mysql> SELECT table1.champ1, table2.champ1 FROM table1 LEFT JOIN table2 ON table1.clefprimaire = table2.clefetrangere; +
- +
-Le résultat de cette requête est l'affichage de **tous** les enregistrements de la **table 1** avec ou sans les enregistrements correspondants de la **table 2**. Dans le cas où la table 2 ne contient pas d'enregistrement correspondant un un enregistrement de la table 1, la valeur retournée est **NULL**. Cette information nous permet de rechercher uniquement les enregistrements dans la table1 n'ayant **pas** d'enregistrements dans la table 2 : +
- +
-  mysql> SELECT table1.champ1, table2.champ1 FROM table1 LEFT JOIN table2 ON table1.clefprimaire = table2.clefetrangere WHERE table2.clefetrangere IS NULL; +
- +
-====RIGHT JOIN==== +
- +
-Ce type de jointure est l'inverse d'un LEFT JOIN. +
- +
-=====LAB #1 - Le Langage SQL===== +
- +
-Créez maintenant la base de données **%%CarnetAdresses%%** :+
  
 <code> <code>
-mysql> CREATE DATABASE `CarnetAdresses` ; +[root@centos7 ~]# systemctl reload smb
-Query OK, 1 row affected (0.00 sec) +
- +
-mysql> +
 </code> </code>
  
-Créez ensuite deux tables **familles** et **enfants** dans la base **CarnetAdresses** :+Créez maintenant le répertoire **/home/samba/public** :
  
 <code> <code>
-mysql> USE CarnetAdresses ; +[root@centos7 ~]# mkdir -p /home/samba/public
-Database changed +
-mysql> +
 </code> </code>
  
-<code> +Ensuiteafin que chaque utilisateur puisse écrire dans le répertoire public mais supprimer uniquement ses propres fichiers et répertoiresil faut modifier les permissions pour le répertoire **/home/samba/public ** :
-mysql> CREATE TABLE familles (CodeFamille BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEYNom VARCHAR(40), +
-    -> PrenomPere VARCHAR(40) , PrenomMere VARCHAR(40) , Adresse1 VARCHAR(40) , Adresse2 VARCHAR(40), +
-    -> CodePostal VARCHAR(5), Ville VARCHAR(40), ProfPere VARCHAR(40), ProfMere VARCHAR(40)); +
-Query OK, 0 rows affected (0.03 sec) +
- +
-mysql>  +
-</code> +
- +
-Pour plus de facilité, copiez simplement la requête et collez-la dans votre terminal : +
- +
-<file text familles> +
-CREATE TABLE familles (CodeFamille BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nom VARCHAR(40), PrenomPere VARCHAR(40) , PrenomMere VARCHAR(40) , Adresse1 VARCHAR(40) , Adresse2 VARCHAR(40), CodePostal VARCHAR(5), Ville VARCHAR(40), ProfPere VARCHAR(40), ProfMere VARCHAR(40)); +
-</file>+
  
 <code> <code>
-mysql> CREATE TABLE Enfants ( CodeFamille BIGINT NOT NULL, Prenom VARCHAR(40) NOT NULL, +[root@centos7 ~]# chmod 1777 /home/samba/public
-    -> Sexe VARCHAR(1) NOT NULL, DateNaissance DATE NOT NULL, PRIMARY KEY (CodeFamille)); +
-Query OK, 0 rows affected (0.01 sec) +
- +
-mysql> +
 </code> </code>
  
-Pour plus de facilité, copiez simplement la requête et collez-la dans votre terminal : +Vous pouvez tester votre fichier **smb.conf** avec la commande **testparm** 
- +
-<file text enfants> +
-CREATE TABLE Enfants ( CodeFamille BIGINT NOT NULL, Prenom VARCHAR(40) NOT NULL, Sexe VARCHAR(1) NOT NULL, DateNaissance DATE NOT NULL, PRIMARY KEY (CodeFamille)); +
-</file> +
- +
-Utilisez ensuite la commande SHOW pour visualiser le résultat de chaque instruction, par exemple :+
  
 <code> <code>
-mysql> SHOW DATABASES; +[root@centos7 ~]# testparm 
-+--------------------+ +Load smb config files from /etc/samba/smb.conf 
-| Database           | +rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) 
-+--------------------+ +Processing section "[homes]" 
-| information_schema | +Processing section "[public]" 
-| CarnetAdresses     | +Loaded services file OK. 
-| mysql              | +Server role: ROLE_STANDALONE
-| test               | +
-+--------------------+ +
-4 rows in set (0.00 sec)+
  
-mysql>   +Press enter to see a dump of your service definitions
-</code>+
  
-<code> +# Global parameters 
-mysql> SHOW TABLES FROM CarnetAdresses; +[global] 
-+--------------------------+ + dos charset = 850 
-| Tables_in_CarnetAdresses | + interfaces = 192.168.1.103/255.255.255.0 
-+--------------------------+ + netbios name = MACHINE01 
-| Enfants                  | + server string = Samba Server %v 
-| familles                 | + unix charset = ISO8859-1 
-+--------------------------+ + log file = /var/log/samba/log.%m 
-2 rows in set (0.00 sec)+ max log size = 50 
 + remote announce = 192.168.1.255 
 + printcap name = cups 
 + name resolve order = wins lmhosts bcast host 
 + passdb backend = smbpasswd 
 + passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* 
 + passwd program = /usr/bin/passwd %u 
 + security = USER 
 + smb passwd file = /etc/samba/smbpasswd 
 + unix password sync = Yes 
 + idmap config * : backend = tdb 
 + hosts allow = 192.168.1. 127. 
 + hosts deny = all
  
-mysql>  
-</code> 
  
-<code> +[homes] 
-mysql> SHOW COLUMNS FROM familles FROM CarnetAdresses; + comment = Repertoires Personnels 
-+-------------+-------------+------+-----+---------+----------------+ + browseable = No 
-| Field       | Type        | Null | Key | Default | Extra          | + read only = No
-+-------------+-------------+------+-----+---------+----------------+ +
-| CodeFamille | bigint(20)  | NO   | PRI | NULL    | auto_increment | +
-| Nom         | varchar(40) | YES  |     | NULL    |                | +
-| PrenomPere  | varchar(40) | YES  |     | NULL    |                | +
-| PrenomMere  | varchar(40) | YES  |     | NULL    |                | +
-| Adresse1    | varchar(40) | YES  |     | NULL    |                | +
-| Adresse2    | varchar(40) | YES  |     | NULL    |                | +
-| CodePostal  | varchar(5)  | YES  |     | NULL    |                | +
-| Ville       | varchar(40) | YES  |     | NULL    |                | +
-| ProfPere    | varchar(40) | YES  |     | NULL    |                | +
-| ProfMere    | varchar(40) | YES  |     | NULL    |                | +
-+-------------+-------------+------+-----+---------+----------------+ +
-10 rows in set (0.00 sec)+
  
-mysql>  
-</code> 
  
-<code> +[public] 
-mysql> SHOW INDEX FROM familles; + comment = Repertoire Public 
-+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ + path = /home/samba/public 
-| Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | + create mask = 0755 
-+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ + read list = @staff 
-| familles |          0 | PRIMARY  |            1 | CodeFamille | A                   0 |     NULL | NULL        | BTREE      |         | + read only = No 
-+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ + write list = @staff
-1 row in set (0.00 sec) +
- +
-mysql> +
 </code> </code>
  
-<code> +==== LAB #2 Tester Samba en tant que Serveur de Fichiers ====
-mysql> SHOW TABLE STATUS FROM CarnetAdresses; +
-+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ +
-| Name     | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation         | Checksum | Create_options | Comment | +
-+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ +
-| Enfants  | InnoDB |      10 | Compact    |    0 |              0 |       16384 |               0 |            0 |   9437184 |           NULL | 2014-01-27 10:46:10 | NULL        | NULL       | latin1_swedish_ci |     NULL |                |         | +
-| familles | InnoDB |      10 | Compact    |    0 |              0 |       16384 |               0 |            0 |   9437184 |              1 | 2014-01-27 10:45:39 | NULL        | NULL       | latin1_swedish_ci |     NULL |                |         | +
-+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ +
-2 rows in set (0.00 sec)+
  
-mysql>  +Pour tester votre configuration :
-</code>+
  
-Créez les enregistrements dans la table **familles** :+  * Consultez la section **Réseau** de l'**Explorateur de Fichiers** de votre machine hôte Windows(tm), 
 +  * Identifiez la machine **MACHINE01**, 
 +  * Connectez-vous à la **MACHINE01** avec le compte **trainee/trainee**, 
 +  * Vérifiez que vous pouvez créer un fichier dans le partage du serveur samba appelé **public** ainsi que dans le partage du répertoire personnel de trainee.
  
-<file text data> +-----
-INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durant', 'Jacques', 'Jane', '23 rue Dutor','','92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tortua', 'Benoît', 'Carole', '7 rue Verget','', '75005', 'Paris', 'Cadre', 'Cadre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Portier', 'Pierre', 'Elisabeth', '5 rue Toulet','', '92200', 'Neuilly', 'Dentiste',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Renault', 'Damien', 'Anne', '2 rue Ragon','', '75007', 'Paris', 'Comptable', 'Enseignante'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet', 'Jean','','','','','','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Rodier', 'Gérard', 'Aurélie', '6 rue Agien', '', '77000', 'Fontainebleau', 'Professeur',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Dupont2', 'Bruno', 'Odile', '12 rue Sébastien','', '75008', 'PARIS', 'Electricien', 'Comptable'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Durand2', 'Jacques', 'Jane', '23 rue Dutor','', '92200', 'Neuilly', 'Plombier',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darmon2', 'Bruno', 'Béatrice', '2 rue Nicolo','', '13008', 'Marseille', 'Cadre', 'Peintre'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Darduet2', 'Jean', '','' ,'' ,'' ,'','',''); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Tarte2', 'Alla', 'Crème', '1 allée Durond','', '92200', 'Neuilly', 'Cuisinier', 'Cuisinière'); INSERT INTO familles (Nom , PrenomPere , PrenomMere , Adresse1 , Adresse2 , CodePostal , Ville , ProfPere , ProfMere) VALUES ('Cohen2', 'David', 'Sarah', '7 Av d\'Eylau','', '75016', 'Paris', 'PDG', 'Assistante Direction'); +
-</file>+
  
 +Copyright © 2023 Hugh Norris.
  
-Saisissez maintenant chacune des commandes suivantes et expliquez le résultat obtenu. Les instructions sont numérotées pour faciliter vos prises de notes. 
- 
-| 1 | ALTER TABLE Enfants ADD INDEX (Prenom); | 
-| 2 | ALTER TABLE Enfants DROP INDEX Prenom; | 
-| 3 | ALTER TABLE Enfants ADD %%TelPort%% VARCHAR(50) NOT NULL; | 
-| 4 | ALTER TABLE Enfants CHANGE %%TelPort%% %%TelPort%% VARCHAR( 22 ) NOT NULL; | 
-| 5 | ALTER TABLE Enfants ADD Test VARCHAR( 40 ) NOT NULL; | 
-| 6 | ALTER TABLE Enfants DROP Test; | 
-| 7 | SELECT * FROM familles; | 
-| 8 | SELECT * FROM familles LIMIT 8,12; | 
- 
-<note tip> 
-**LIMIT** - Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début du jeu de résultat. Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner. Le décalage du premier enregistrement est 0 (pas 1). 
-</note> 
- 
- 
-| 9 | UPDATE familles SET Adresse1 = '120 rue de Vaugirard', %%CodePostal%% = '75015', Ville = 'PARIS' WHERE Nom = 'DARDUET' AND %%PrenomPere%% = 'Jean' LIMIT 1; | 
-| 10 | DELETE FROM familles WHERE Nom = 'DURANT' AND %%PrenomPere%% = 'Jacques'; | 
-| 11 | DELETE FROM familles WHERE Ville = 'Neuilly'; | 
-| 12 | SELECT * FROM familles LIMIT 8,12; | 
-| 13 | SELECT nom, %%PrenomPere%% FROM familles; | 
-| 14 | SELECT Nom AS 'Nom de famille', %%PrenomPere%% AS 'Prenom du Père' FROM familles; | 
-| 15 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Georges', 'M', '14'); | 
-| 16 | SELECT familles.nom, familles.%%PrenomPere%% FROM familles, Enfants; | 
- 
-<note> 
-Créez la colonne **familles.nb_enfants**. 
-</note> 
- 
-| 17 | UPDATE familles SET nb_enfants = '2' WHERE %%CodeFamille%% = '2'; | 
-| 18 | UPDATE familles SET nb_enfants = '1' WHERE %%CodeFamille%% = '4'; | 
-| 19 | UPDATE familles SET nb_enfants = '3' WHERE %%CodeFamille%% = '5'; | 
-| 20 | UPDATE familles SET nb_enfants = '2' WHERE %%CodeFamille%% = '6'; | 
-| 21 | UPDATE familles SET nb_enfants = '4' WHERE %%CodeFamille%% = '8'; | 
-| 22 | UPDATE familles SET nb_enfants = '5' WHERE %%CodeFamille%% = '9'; 
-| 23 | UPDATE familles SET nb_enfants = '3' WHERE %%CodeFamille%% = '11'; | 
-| 24 | UPDATE familles SET nb_enfants = '1' WHERE %%CodeFamille%% = '12'; | 
-| 25 | UPDATE familles SET nb_enfants = '5' WHERE %%CodeFamille%% = '14'; | 
-| 26 | SELECT SUM(nb_enfants) FROM familles; | 
-| 27 | SELECT MIN(nb_enfants) AS 'Nb enfants minimum', MAX(nb_enfants) AS 'Nb enfants maximum', AVG(nb_enfants) AS 'Nb enfants moyen' FROM familles; | 
-| 28 | SELECT nom FROM familles WHERE ville = 'Paris'; | 
-| 29 | SELECT nom FROM familles WHERE ville = 'Paris' OR ville = 'Neuilly'; | 
-| 30 | ALTER TABLE Enfants DROP PRIMARY KEY; | 
-| 31 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Alex', 'F', '12'); | 
-| 32 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Mila', 'F', '2'); | 
-| 33 | INSERT INTO Enfants (Prenom, Sexe, %%CodeFamille%%) VALUES ('Amandine', 'F', '5'); | 
-| 34 | SELECT  familles.Nom , Enfants.Prenom FROM familles, Enfants WHERE ( Enfants.%%CodeFamille%% = familles.%%CodeFamille%% ); | 
-| 35 | SELECT familles.nom, familles.%%PrenomPere%% FROM familles, Enfants; | 
-| 36 | SELECT ville, min(nb_enfants) as 'Nb enfants minimum', max(nb_enfants) as ' Nb enfants maximum', avg(nb_enfants) as 'Nb enfants moyen' from familles GROUP BY Ville; | 
-| 37 | SELECT * FROM familles ORDER BY nom; | 
-| 38 | SELECT * FROM familles GROUP BY ville, Nom; | 
-| 39 | %%UPDATE familles SET Adresse2 = '-';%% | 
-| 40 | %%UPDATE familles SET Adresse2 = '___',nb_enfants=2;%% | 
-| 41 | UPDATE familles SET nb_enfants=4 WHERE Ville = 'Paris'; | 
-| 42 | UPDATE familles SET nb_enfants=7 LIMIT 4; | 
-| 43 | UPDATE familles SET nb_enfants=8 ORDER BY Nom LIMIT 3; | 
-| 44 | DELETE FROM familles WHERE Nom = 'Dupont'; | 
-| 45 | CREATE TABLE loisirs( Nom VARCHAR( 30 ) NOT NULL ); | 
-| 46 | DROP TABLE loisirs; | 
-| 47 | INSERT INTO familles (Nom, %%PrenomPere%%) VALUES ('Alouet','Jean'),('Rahtmi','Patrick'); | 
-| 48 | INSERT INTO familles (%%PrenomPere%%) SELECT Enfants.prenom FROM Enfants; | 
-| 49 | ALTER TABLE familles ADD Sports VARCHAR(50) NOT NULL; | 
-| 50 | ALTER TABLE familles ADD INDEX (Sports); | 
-| 51 | ALTER TABLE familles ADD INDEX (%%PrenomPere%%), ADD %%EmailPere%% VARCHAR( 50 ) NOT NULL; | 
-| 52 | ALTER TABLE familles CHANGE %%PrenomPere%% Prenom_Pere VARCHAR( 45 ) NOT NULL; | 
-| 53 | ALTER TABLE familles DROP Sports; | 
-| 54 | ALTER TABLE familles DROP INDEX %%PrenomPere%%; | 
-| 55 | ALTER TABLE familles DISABLE KEYS; | 
-| 56 | ALTER TABLE Enfants RENAME familles_enfants; | 
-| 57 | ALTER TABLE familles ORDER BY Prenom_Pere; | 
-| 58 | ALTER TABLE familles ADD Commentaire LONGTEXT NOT NULL ; | 
-| 59 | ALTER TABLE familles ADD FULLTEXT (Commentaire); | 
-| 60 | UPDATE familles SET Commentaire = 'La vie est un long fleuve tranquille' WHERE %%CodeFamille%% = '11'; | 
-| 61 | UPDATE familles SET Commentaire = 'Paris, capitale de la France est traversée par un fleuve' WHERE %%CodeFamille%% ='4'; | 
-| 62 | UPDATE familles SET Commentaire = 'Le ruisseau se jette dans la rivière qui se jette dans le FLEUVE' WHERE %%CodeFamille%% = '6'; | 
-| 63 | SELECT * FROM familles WHERE MATCH (Commentaire) AGAINST ('fleuve'); | 
-| 64 | SELECT Nom, Commentaire FROM familles WHERE  MATCH (Commentaire) AGAINST ('-capitale+fleuve'IN BOOLEAN MODE); | 
- 
------ 
-<html> 
-<div align="center"> 
-Copyright © 2020 Hugh Norris. 
-</html> 
Menu