Wisemapping Configuration MySQL
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.
Sommaire
Votre avis
Nobody voted on this yet
|
|
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.
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)
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)
Où 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)
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)
Où 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)
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)
Où ADMIN_PASSWORD
est remplacé par le mot de passe souhaité pour le compte Admin
.
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.