2016-10-15 19:57:04 +02:00
<!DOCTYPE html>
< html lang = "en" dir = "ltr" >
< head >
< meta charset = "utf-8" / >
< title > documentation:2.0:sqlconfbackend< / title >
< meta name = "generator" content = "DokuWiki" / >
< meta name = "robots" content = "index,follow" / >
< meta name = "keywords" content = "documentation,2.0,sqlconfbackend" / >
< link rel = "search" type = "application/opensearchdescription+xml" href = "lib/exe/opensearch.html" title = "LemonLDAP::NG" / >
< link rel = "start" href = "sqlconfbackend.html" / >
< link rel = "contents" href = "sqlconfbackend.html" title = "Sitemap" / >
< link rel = "stylesheet" type = "text/css" href = "lib/exe/css.php.t.bootstrap3.css" / >
2017-02-07 17:35:26 +01:00
<!-- //if:usedebianlibs
< link rel = "stylesheet" type = "text/css" href = "/javascript/bootstrap/css/bootstrap.min.css" / >
//elsif:useexternallibs
< link rel = "stylesheet" type = "text/css" href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" > < / script >
//elsif:cssminified
< link rel = "stylesheet" type = "text/css" href = "/static/bwr/bootstrap/dist/css/bootstrap.min.css" / >
//else -->
< link rel = "stylesheet" type = "text/css" href = "/static/bwr/bootstrap/dist/css/bootstrap.css" / >
<!-- //endif -->
2016-10-15 19:57:04 +02:00
< script type = "text/javascript" > / * < ! [ C D A T A [ * / v a r N S = ' d o c u m e n t a t i o n : 2 . 0 ' ; v a r J S I N F O = { " i d " : " d o c u m e n t a t i o n : 2 . 0 : s q l c o n f b a c k e n d " , " n a m e s p a c e " : " d o c u m e n t a t i o n : 2 . 0 " } ;
/*!]]>*/< / script >
< script type = "text/javascript" charset = "utf-8" src = "lib/exe/js.php.t.bootstrap3.js" > < / script >
2017-02-07 17:35:26 +01:00
<!-- //if:usedebianlibs
< script type = "text/javascript" src = "/javascript/jquery/jquery.min.js" > < / script >
//elsif:useexternallibs
< script type = "text/javascript" src = "http://code.jquery.com/jquery-2.2.0.min.js" > < / script >
//elsif:jsminified
< script type = "text/javascript" src = "/static/bwr/jquery/dist/jquery.min.js" > < / script >
//else -->
< script type = "text/javascript" src = "/static/bwr/jquery/dist/jquery.js" > < / script >
<!-- //endif -->
<!-- //if:usedebianlibs
< script type = "text/javascript" src = "/javascript/jquery-ui/jquery-ui.min.js" > < / script >
//elsif:useexternallibs
< script type = "text/javascript" src = "http://code.jquery.com/ui/1.10.4/jquery-ui.min.js" > < / script >
//elsif:jsminified
< script type = "text/javascript" src = "/lib/scripts/jquery-ui.min.js" > < / script >
//else -->
< script type = "text/javascript" src = "/lib/scripts/jquery-ui.js" > < / script >
<!-- //endif -->
2016-10-15 19:57:04 +02:00
< / head >
< body >
< div class = "dokuwiki export container" >
<!-- TOC START -->
< div id = "dw__toc" >
< h3 class = "toggle" > Table of Contents< / h3 >
< div >
< ul class = "toc" >
< li class = "level1" > < div class = "li" > < a href = "#lemonldap-ngini_parameters" > Lemonldap-ng.ini parameters< / a > < / div > < / li >
< li class = "level1" > < div class = "li" > < a href = "#configure_your_sql_database" > Configure your SQL database< / a > < / div >
< ul class = "toc" >
< li class = "level2" > < div class = "li" > < a href = "#sql_configuration" > SQL configuration< / a > < / div >
< ul class = "toc" >
< li class = "level3" > < div class = "li" > < a href = "#rdbi" > RDBI< / a > < / div > < / li >
< li class = "level3" > < div class = "li" > < a href = "#cdbi" > CDBI< / a > < / div > < / li >
< / ul >
< / li >
< li class = "level2" > < div class = "li" > < a href = "#grant_lemonldapng_access" > Grant LemonLDAP::NG access< / a > < / div > < / li >
< / ul > < / li >
< / ul >
< / div >
< / div >
<!-- TOC END -->
< h1 class = "sectionedit1" id = "sql_configuration_backends" > SQL configuration backends< / h1 >
< div class = "level1" >
< p >
There is 3 types of SQL configuration backends for LemonLDAP::NG :
< / p >
< ul >
< li class = "level1" > < div class = "li" > < strong > CDBI< / strong > : very simple storage< / div >
< / li >
< li class = "level1" > < div class = "li" > < strong > RDBI< / strong > : triple store storage< / div >
< / li >
< li class = "level1" > < div class = "li" > < strong > < abbr title = "Database Interface" > DBI< / abbr > < / strong > which has been deprecated: it is a read-only backend that exists just for compatibility with older versions of LemonLDAP::NG. See < a href = "changeconfbackend.html" class = "wikilink1" title = "documentation:2.0:changeconfbackend" > how to change configuration backend< / a > .< / div >
< / li >
< / ul >
< / div >
<!-- EDIT1 SECTION "SQL configuration backends" [1 - 382] -->
< h2 class = "sectionedit2" id = "lemonldap-ngini_parameters" > Lemonldap-ng.ini parameters< / h2 >
< div class = "level2" >
< p >
To use a SQL backend, configure your < code > lemonldap-ng.ini< / code > file (section configuration) :
< / p >
< ul >
< li class = "level1" > < div class = "li" > Choose < abbr title = "Database Interface" > DBI< / abbr > type (RDBI, CDBI or < abbr title = "Database Interface" > DBI< / abbr > )< / div >
< / li >
< li class = "level1" > < div class = "li" > Configure the connection string (see < a href = "http://search.cpan.org/perldoc?DBI" class = "urlextern" title = "http://search.cpan.org/perldoc?DBI" rel = "nofollow" > DBI manual page< / a > )< / div >
< / li >
< li class = "level1" > < div class = "li" > Configure user and password< / div >
< / li >
< li class = "level1" > < div class = "li" > If your table is not named lmConfig, set it' s name in < code > dbiTable< / code > parameter.< / div >
< / li >
< / ul >
< p >
Example for MySQL :
< / p >
< pre class = "code ini" > < span class = "re0" > < span class = "br0" > [ < / span > configuration< span class = "br0" > ] < / span > < / span >
< span class = "re1" > type< / span > < span class = "sy0" > =< / span > < span class = "re2" > RDBI< / span >
< span class = "re1" > dbiChain< / span > < span class = "sy0" > =< / span > < span class = "re2" > DBI:mysql:database=lemonldap-ng< / span > < span class = "co0" > ;host=1.2.3.4< / span >
< span class = "re1" > dbiUser< / span > < span class = "sy0" > =< / span > < span class = "re2" > lemonldap< / span >
< span class = "re1" > dbiPassword< / span > < span class = "sy0" > =< / span > < span class = "re2" > password< / span >
< span class = "co0" > ; optional< / span >
< span class = "re1" > dbiTable< / span > < span class = "sy0" > =< / span > < span class = "re2" > mytablename< / span > < / pre >
< / div >
<!-- EDIT2 SECTION "Lemonldap - ng.ini parameters" [383 - 974] -->
< h2 class = "sectionedit3" id = "configure_your_sql_database" > Configure your SQL database< / h2 >
< div class = "level2" >
< / div >
<!-- EDIT3 SECTION "Configure your SQL database" [975 - 1015] -->
< h3 class = "sectionedit4" id = "sql_configuration" > SQL configuration< / h3 >
< div class = "level3" >
< / div >
< h4 id = "rdbi" > RDBI< / h4 >
< div class = "level4" >
< pre class = "code sql" > < span class = "kw1" > CREATE< / span > < span class = "kw1" > TABLE< / span > lmConfig < span class = "br0" > ( < / span >
cfgNum < span class = "kw1" > INT< / span > < span class = "br0" > ( < / span > < span class = "nu0" > 11< / span > < span class = "br0" > ) < / span > < span class = "kw1" > NOT< / span > < span class = "kw1" > NULL< / span > < span class = "sy0" > ,< / span >
< span class = "kw1" > FIELD< / span > < span class = "kw1" > VARCHAR< / span > < span class = "br0" > ( < / span > < span class = "nu0" > 255< / span > < span class = "br0" > ) < / span > < span class = "kw1" > NOT< / span > < span class = "kw1" > NULL< / span > < span class = "kw1" > DEFAULT< / span > < span class = "st0" > ''< / span > < span class = "sy0" > ,< / span >
< span class = "kw1" > VALUE< / span > longblob< span class = "sy0" > ,< / span >
< span class = "kw1" > PRIMARY< / span > < span class = "kw1" > KEY< / span > < span class = "br0" > ( < / span > cfgNum< span class = "sy0" > ,< / span > < span class = "kw1" > FIELD< / span > < span class = "br0" > ) < / span >
< span class = "br0" > ) < / span > ;< / pre >
< / div >
< h4 id = "cdbi" > CDBI< / h4 >
< div class = "level4" >
< pre class = "code sql" > < span class = "kw1" > CREATE< / span > < span class = "kw1" > TABLE< / span > lmConfig < span class = "br0" > ( < / span >
cfgNum < span class = "kw1" > INT< / span > < span class = "kw1" > NOT< / span > < span class = "kw1" > NULL< / span > < span class = "kw1" > PRIMARY< / span > < span class = "kw1" > KEY< / span > < span class = "sy0" > ,< / span >
< span class = "kw1" > DATA< / span > longblob
< span class = "br0" > ) < / span > ;< / pre >
< / div >
<!-- EDIT4 SECTION "SQL configuration" [1016 - 1349] -->
< h3 class = "sectionedit5" id = "grant_lemonldapng_access" > Grant LemonLDAP::NG access< / h3 >
< div class = "level3" >
< p >
You have to grant read/write access for the manager component. Other components needs just a read access. You can also use the same user for all.
< / p >
< div class = "notetip" > You can use different dbiUser strings :< ul >
< li class = "level1" > < div class = "li" > one with read/write rights for servers hosting the manager< / div >
< / li >
< li class = "level1" > < div class = "li" > one with just read rights for other servers< / div >
< / li >
< / ul >
< / div >
< p >
MySQL example (suppose that our servers are in 10.0.0.0/24 network):
< / p >
2017-02-07 17:35:26 +01:00
< pre class = "code sql" > < span class = "kw1" > GRANT< / span > < span class = "kw1" > SELECT< / span > < span class = "sy0" > ,< / span > < span class = "kw1" > INSERT< / span > < span class = "sy0" > ,< / span > < span class = "kw1" > UPDATE< / span > < span class = "sy0" > ,< / span > < span class = "kw1" > DELETE< / span > < span class = "sy0" > ,< / span > < span class = "kw1" > LOCK< / span > < span class = "kw1" > TABLES< / span > < span class = "kw1" > ON< / span > lemonldap< span class = "sy0" > -< / span > ng< span class = "sy0" > .< / span > lmConfig
2016-10-15 19:57:04 +02:00
< span class = "kw1" > TO< / span > lemonldap< span class = "sy0" > -< / span > ng@manager< span class = "sy0" > .< / span > host < span class = "kw1" > IDENTIFIED< / span > < span class = "kw1" > BY< / span > < span class = "st0" > 'mypassword'< / span > ;
2017-02-07 17:35:26 +01:00
< span class = "kw1" > GRANT< / span > < span class = "kw1" > SELECT< / span > < span class = "kw1" > ON< / span > lemonldap< span class = "sy0" > -< / span > ng< span class = "sy0" > .< / span > lmConfig
2016-10-15 19:57:04 +02:00
< span class = "kw1" > TO< / span > lemonldap< span class = "sy0" > -< / span > ng< span class = "sy0" > -< / span > < span class = "kw1" > USER< / span > @< span class = "st0" > '10.0.0.%'< / span > < span class = "kw1" > IDENTIFIED< / span > < span class = "kw1" > BY< / span > < span class = "st0" > 'myotherpassword'< / span > ;< / pre >
< / div >
<!-- EDIT5 SECTION "Grant LemonLDAP::NG access" [1350 - ] --> < / div >
< / body >
< / html >