# Backends de configuration SQL

There is 3 types of SQL configuration backends for LemonLDAP::NG :

- CDBI : stockage très simple
- RDBI : stockage en triplets
- DBI devenu obsolète : il reste un backend en lecture seule qui n'existe que pour la compatibilité avec les anciennes versions de LemonLDAP::NG. Voir comment changer de backend de configuration.

## Paramètres lemonldap-ng.ini

To use a SQL backend, configure your `lemonldap-ng.ini` file (section configuration) :

- Choisir le type DBI (RDBI, CDBI or DBI)
- Configurer la chaîne de connexion (voir la page de manuel DBI)
- Configurer le nom de compte et le mot-de-passe
- Si la table ne se nomme pas lmConfig, mettre son nom dans le paramètre `dbiTable`.

Exemple pour MySQL :

    [configuration]
    type = RDBI
    dbiChain    = DBI:mysql:database=lemonldap-ng;host=1.2.3.4
    dbiUser     = lemonldap
    dbiPassword = password
    ; optional
    dbiTable    = mytablename

## Configurer la base de données SQL

### Configuration SQL

#### RDBI

    CREATE TABLE lmConfig (
        cfgNum INT(11) NOT NULL,
        FIELD VARCHAR(255) NOT NULL DEFAULT '',
        VALUE longblob,
        PRIMARY KEY (cfgNum,FIELD)
        );

#### CDBI

    CREATE TABLE lmConfig (
        cfgNum INT NOT NULL PRIMARY KEY,
        DATA longblob
    );

### Autoriser l'accès pour LemonLDAP::NG

Il faut autoriser l'accès en lecture et écriture pour le manager. Les autres composants n'ont besoin que d'un accès en lecture. On peut également utiliser le même compte pour tous.

Plusieurs chaînes dbiUser sont utilisables :

- une avec des droits en lecture/écriture pour les serveurs hébergeant le manager
- une avec seulement des droits en lecture pour les autres serveurs

Exemple MySQL (on suppose que les serveurs sont sur le réseau 10.0.0.0/24):

    GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES ON lemonldap-ng.lmConfig
      TO lemonldap-ng@manager.host IDENTIFIED BY 'mypassword';
    GRANT SELECT ON lemonldap-ng.lmConfig
      TO lemonldap-ng-USER@'10.0.0.%' IDENTIFIED BY 'myotherpassword';