Piwigo Configuration MySQL

De EjnTricks
Révision de 19 octobre 2016 à 22:56 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

L'installation de l'application Piwigo est réalisée sur MySql. L'initialisation de la base de données s'effectue lors du premier accès à l'application Piwigo. Il est préférable de créer l'utilisateur et la base de données, afin de ne pase avoir à renseigner le compte administrateur lors de l'installation.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Configuration-icon.png Paramétrage MySql

Après installation de Piwigo, l'utilisation peut entraîner des erreurs de requêtes sur la base de données, comme l'exemple suivant.

Warning:  [mysql error 3065] Expression #1 of ORDER BY clause is not in SELECT list, references column 'piwigo.piwigo_images.hit' which is
not in SELECT list; this is incompatible with DISTINCT

SELECT DISTINCT(id)
  FROM piwigo_images
    INNER JOIN piwigo_image_category AS ic ON id = ic.image_id
  WHERE hit > 0
    
     ORDER BY hit DESC, id DESC
  LIMIT 15
; in /var/opt/piwigo/2.8.2/include/dblayer/functions_mysqli.inc.php on line 832


Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in /var/opt/piwigo/2.8.2/include/dblayer/functions_mysqli.inc.php:893
Stack trace: #0 /var/opt/piwigo/2.8.2/include/section_init.inc.php(499): query2array('\nSELECT DISTINC...', NULL, 'id') #1 /var/opt/piwigo/2.8.2/index.php(27):
include('/var/opt/piwigo...') #2 {main} thrown in /var/opt/piwigo/2.8.2/include/dblayer/functions_mysqli.inc.php on line 893

Ces erreurs sont liées au paramétrage de MySql fourni dans le paquet Ubuntu, et la façon dont sont écrites les requêtes dans Piwigo. Ce problème est connu est a été référencé dans le ticket suivant : https://github.com/Piwigo/Piwigo/issues/376 L'équipe ne considère pas cela comme un bug et founi le paramétrage sql-mode = "" à appliquer dans la configuration de MySql.

Dans le cadre de cette installation, la configuration est mise en place dans le fichier /var/opt/mysql/mysqld_custom.cnf, sur lequel un lien est placé sous /etc/mysql/mysql.conf.d/mysqld_custom.cnf.

[mysqld]
sql-mode = ""


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

Un nouveau schéma est créé.

mysql> CREATE DATABASE piwigo CHARACTER SET UTF8;
Query OK, 1 row affected (0.00 sec)


User-icon.png Création du compte MySQL

Un compte est mis en place pour ne pas interférer avec les autres installations.

mysql> CREATE USER 'piwigo'@'localhost' IDENTIFIED BY 'PIWIGO_PASSWORD';
Query OK, 0 ROWS affected (0.00 sec)

mysql> GRANT ALL ON piwigo.* TO 'piwigo'@'localhost';
Query OK, 0 ROWS affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 ROWS affected (0.00 sec)

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


Lock-icon.png Permissions

Lors de la création du compte, les permissions accordées sont totales. En effet, l'installation va créer tous les éléments dans la base de données. Cependant, une fois l'installation terminée, ces permissions sont trop importantes. Seules les manipulations dans les tables sont nécessaires et les droits doivent être diminués avec les commandes suivantes.

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

mysql> GRANT CREATE, SELECT, INSERT, UPDATE, DELETE, DROP, LOCK TABLES ON piwigo.* TO 'piwigo'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)