Wisemapping Configuration MySQL

De EjnTricks

L'application Wisemapping s'appuye sur une base de données, HSQL par défaut. Les bases PostgreSQL et MySql sont supportées et disponibles dans les fichiers de configuration.

Cet article présente l'initialisation d'une base de données sous MySql ainsi que la configuration dans l'application.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Etude

Lors de la décompression de l'archive, des fichiers sont mis à disposition pour initialisation de la base, soit dans le répertoire config/database/mysql. A noter qu'il existe également les fichiers pour les différentes bases de données.

#sudo  ls -l /var/opt/wisemapping/4.0.3/config/database
total 12
drwxr-xr-x 2 root root 4096 oct.  29  2015 hsql
drwxr-xr-x 2 root root 4096 oct.  29  2015 mysql
drwxr-xr-x 2 root root 4096 oct.  29  2015 postgres

Dans le cadre d'une installation initiale de 4.0.3, seuls les fichiers create-schemas.sql, create-database.sql et apopulate-schemas.sql sont utilisés.


Icon-database-init.png Création de la base

Un nouveau schéma est créé, en utilisant les instructions du script create-schemas.sql dont le contenu est le suivant.

#
# Command: mysql -u root -p < create_database.sql
#
DROP DATABASE IF EXISTS wisemapping;

CREATE DATABASE IF NOT EXISTS wisemapping
  CHARACTER SET = 'utf8'
  COLLATE = 'utf8_unicode_ci';
GRANT ALL ON wisemapping.* TO 'wisemapping'@'localhost';
SET PASSWORD FOR 'wisemapping'@'localhost' = PASSWORD('password');

Attention, ce script comporte le mot de passe du compte wisemapping. Il est important de le modifier afin de ne pas avoir le mot de passe par défaut password.

mysql>  CREATE DATABASE IF NOT EXISTS wisemapping
    ->   CHARACTER SET = 'utf8'
    ->   COLLATE = 'utf8_unicode_ci';
Query OK, 1 row affected (0,15 sec)


User-icon.png Création du compte MySQL

Un compte est mis en place comme indiqué dans le fichier d'initialisation.

mysql> CREATE USER 'wisemapping'@'localhost' IDENTIFIED BY 'WISEMAPPING_PASSWORD';
Query OK, 0 rows affected (0,14 sec)
 
mysql> GRANT ALL ON wisemapping.* TO 'wisemapping'@'localhost';
Query OK, 0 rows affected, 1 warning (0,02 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,11 sec)

WISEMAPPING_PASSWORD est remplacé par le mot de passe souhaité.

Une fois le schéma créé, la base de données est créé à l'aide du script create-schemas.sql. La ligne de commande est rappelée est commentaire dans ce fichier, à savoir mysql -u root -p < create-schemas.sql

#sudo  mysql -u root -p < /var/opt/wisemapping/4.0.3/config/database/mysql/create-schemas.sql
Enter password:

Afin de s'assurer que tout est bien déroulé, il est possible d'afficher les tables de la base de données.

#mysql -u root -p
#Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 49053
Server version: 5.7.12-0ubuntu1 (Ubuntu)

Copyright (c) 2000, 2016, 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 wisemapping
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> show tables;
+--------------------------+
| Tables_in_wisemapping    |
+--------------------------+
| ACCESS_AUDITORY          |
| COLLABORATION            |
| COLLABORATION_PROPERTIES |
| COLLABORATOR             |
| LABEL                    |
| MINDMAP                  |
| MINDMAP_HISTORY          |
| R_LABEL_MINDMAP          |
| TAG                      |
| USER                     |
+--------------------------+
10 rows in set (0,00 sec)

Warning-icon.png Droits accès

Dans certain cas, observé dans le cadre de cette installation, l'accès à la base de données ne sera pas effective. La log Tomcat, fichier catalina.out, dans le cadre de cet article fichier /var/log/tomcat6/catalina.out, indique les messages suivants.

2016-05-31 12:11:27,516 WARN org.hibernate.cfg.SettingsFactory - Could not obtain connection to query metadata
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'wisemapping'@'127.0.0.1' (using password: YES))
        at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
        at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
        at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
        at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:114)
        at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2833)

Cela peut être du à la configuration du paramètre bind-address de Mysql afin d'accéder aux bases depuis un serveur distant.

Donc, la connexion est refusée par MySql avec le compte wisemapping depuis l'emplacement 127.0.0.1. Ceci s'explique par le fait que le compte a créé avec une autorisation localhost. Le compte avec le host 127.0.0.1 doit à présent être créé.

mysql> CREATE USER 'wisemapping'@'127.0.0.1' IDENTIFIED BY 'WISEMAPPING_PASSWORD';
Query OK, 0 rows affected (0,14 sec)
 
mysql> GRANT ALL ON wisemapping.* TO 'wisemapping'@'127.0.0.1';
Query OK, 0 rows affected, 1 warning (0,02 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,11 sec)

WISEMAPPING_PASSWORD est remplacé par le mot de passe souhaité.

Le compte configuré sur localhost peut être supprimé.

mysql> DROP USER 'wisemapping'@'localhost';

La connexion à la base MySql sera ensuite réussie au prochain démarrage et l'application de nouveau disponible.

Les privilèges mis en place sont assez forts, mais seront réduits en fin d'installation à l'aide des requêtes suivantes.

mysql> REVOKE ALL ON wisemapping.* FROM 'wisemapping'@'127.0.0.1';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON wisemapping.* TO 'wisemapping'@'127.0.0.1';
Query OK, 0 rows affected (0.00 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)


Icon-keys.png Initialisation utilisateurs

Le script apopulate-schemas.sql permet de créer un compte administrateur dans l'application et un compte test. Il est donc fortement recommandé de ne pas l'exécuter pour une installation personnalisée, le compte de test n'est pas utile. Seules les requêtes pour le compte administrateur sont donc exécutées.

#mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
root@etienne-server:/var/opt/wisemapping/4.0.3/config/database/mysql# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 49192
Server version: 5.7.12-0ubuntu1 (Ubuntu)

Copyright (c) 2000, 2016, 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 wisemapping
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> INSERT INTO COLLABORATOR (id, email, creation_date) VALUES (2, 'admin@wisemapping.org', CURRENT_DATE());
Query OK, 1 row affected (0,09 sec)

mysql> INSERT INTO USER (colaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email,authentication_type)
    ->   VALUES (2, 'Admin', 'User', 'ADMIN_PASSWORD', 1237, CURRENT_DATE(), 1,'D');
Query OK, 1 row affected (0,06 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0,00 sec)

ADMIN_PASSWORD est remplacé par le mot de passe souhaité pour le compte Admin.


Icon-Configuration-Settings.png Configuration de la base de données

La dernière étape consiste à référencer ce compte au niveau de Wisemapping. Pour cela, il faut éditer le fichier WEB-INF/app.properties. Toute la configuration est disponible et il suffit de l'activer.

##################################################################################
# Database Configuration
##################################################################################

# MySQL 5.X configuration properties
database.url=jdbc:mysql://localhost/wisemapping?useUnicode=yes&characterEncoding=UTF-8
database.driver=com.mysql.jdbc.Driver
database.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
database.username=wisemapping
database.password=password
database.validation.enabled=true
database.validation.query=SELECT 1

## PostgreSQL  configuration properties
#database.url=jdbc:postgresql://<hostname:port>/wisemapping
#database.driver=org.postgresql.Driver
#database.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
#database.username=<username>
#database.password=<password>
#database.validation.enabled=true
#database.validation.query=
#database.validation.enabled=false


# HSQL Configuration properties
#database.url=jdbc:hsqldb:file:webapps/wisemapping/WEB-INF/database/wisemapping
#database.driver=org.hsqldb.jdbc.JDBCDriver
#database.hibernate.dialect=org.hibernate.dialect.HSQLDialect
#database.username=sa
#database.password=
#database.validation.enabled=false
#database.validation.query=

Il faut modifier la valeur de la propriété database.password avec le mot de passe mis en place dans lors de la création du compte d'accès à la base.