SQL session backend
SQL session backend can be used with many SQL databases such as:
Setup
Prepare the database
Your database must have a specific table to host sessions. Here are some examples for main databases servers.
Attention
If your database doesn’t accept UTF-8 characters in ‘text’ field, use ‘blob’ instead of ‘text’.
MySQL
Create a database if necessary:
mysqladmin create lemonldap-ng
Create sessions table:
CREATE TABLE sessions (
id char(32) not null primary key,
a_session text
);
Attention
Change char(32)
by varchar(64)
if you use the
now recommended SHA256 hash algorithm. See
Sessions for more details
Tip
You can change table name sessions
to whatever you want,
just adapt the parameter TableName
in module options.
Attention
For a better UTF-8 support, use DBD::MariaDB with Apache::Session*::MySQL instead of DBD::mysql
PostgreSQL
Create user and role:
su - postgres
createuser lemonldap-ng -P
Entrez le mot de passe pour le nouveau rôle : <PASSWORD>
Entrez-le de nouveau : <PASSWORD>
Le nouveau rôle est-il un super-utilisateur ? (o/n) n
Le nouveau rôle doit-il être autorisé à créer des bases de données ? (o/n) n
Le nouveau rôle doit-il être autorisé à créer de nouveaux rôles ? (o/n) n
Create database:
createdb -O lemonldap-ng lemonldap-ng
Create table:
psql -h 127.0.0.1 -U lemonldap-ng -W lemonldap-ng
Mot de passe pour l'utilisateur lemonldap-ng :
[...]
lemonldap-ng=> create unlogged table sessions ( id char(32) not null primary key, a_session text );
lemonldap-ng=> q
Attention
Change char(32)
by varchar(64)
if you use the
now recommended SHA256 hash algorithm. See
Sessions for more details
Manager
Go in the Manager and set the session module (for example
Apache::Session::Postgres
for PostgreSQL) in General parameters
» Sessions
»
Session storage
» Apache::Session module
and add the following
parameters (case sensitive):
Required parameters |
||
---|---|---|
Name |
Comment |
Example |
DataSource |
The DBI string |
dbi:Pg:dbname=sessions;host=10.2.3.1 |
UserName |
The database username |
lemonldap-ng |
Password |
The database password |
mysuperpassword |
Commit |
Required for PostgreSQL |
1 |
TableName |
(Optional) Name of the table |
sessions |
You must read the man page corresponding to your database (Apache::Session::MySQL, …) to learn more about parameters. You must also install the database connector (https://metacpan.org/pod/DBD::Oracle, DBD::Pg,…)
Attention
For MySQL, you need to set additional parameters:
LockDataSource
LockUserName
LockPassword
Tip
For better performances, you can use specific browseable session backend.
Learn more at how to increase Data Base performances.
UTF8 support
If you may store some non-ASCII characters, you must add the parameter corresponding to your database.
Database |
Parameter name |
Value |
---|---|---|
MySQL |
mysql_enable_utf8 |
1 |
PostgreSQL |
pg_enable_utf8 |
1 |
SQLite |
sqlite_unicode |
1 |
Security
Restrict network access to the database.
You can also use different user/password for your servers by overriding
parameters globalStorage
and globalStorageOptions
in
lemonldap-ng.ini file.