[Linux] comment adapter la syntaxe pour PostgreSQL
Christophe Courtois
christophe@::1
Mar 16 Jan 16:45:46 CET 2018
Le 15/01/2018 à 16:19, Bernard Schoenacker a écrit :
> bonjour,
> j'ai un exemple pour mariadb et je souhaite
> le faire passer à postgresql ...
Je mets ce qui suit pour le principe et pour le sport, mais il est un
peu illusoire de vouloir recréer à la main une base pour un outil qui
doit déjà avoir ses scripts de création de base dans un coin, et qui
risque de planter au moindre écart avec ce qu'il attend, sans compter
l'algo de cryptage utilisé à la fin dont je ne sais rien.
Option 1 :
- Si tu as une base déjà fonctionnelle, dégainer l'artillerie lourde
avec le script ora2pg qui convertit aussi les bases MySQL (produit
Oracle), donc sans doute MariaDB;
Option 2
- Exécuter chaque ordre et chercher à le convertir avec
https://www.postgresql.org/docs/10/static/index.html sous la main.
Quelques notes en passant (désolé je n'ai pas respecté les > ). Au
passage, supprimer tous les `
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'mot_de_passe';
PostgreSQL : CREATE ROLE postfix LOGIN PASSWORD 'mdp' ;
(Et le filtrage par IP se fait dans pg_hab.conf)
mysql> GRANT USAGE ON * . * TO 'postfix'@'localhost' IDENTIFIED BY
'mot_de_passe';
PG : Peut-être inutile si les tables sont dans le schémas public.
Sinon: GRANT USAGE ON SCHEMA toto TO postfix ;
mysql> CREATE DATABASE `postfix` ;
PG : pareil
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
GRANT ALL ON ALL TABLES IN SCHEMA toto TO postfix.
mysql> FLUSH PRIVILEGES;
PG: cette horreur est inutile.
mysql> quit
PG: \q
//
CREATE USER 'postfix'@'localhost' IDENTIFIED BY '***';
PG : cf plus haut
GRANT USAGE ON * . * TO 'postfix'@'localhost' IDENTIFIED BY '***' WITH
MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0
MAX_USER_CONNECTIONS 0 ;
PG : pas d'équivalent à ces paramètres
USE postfix;
PG: \c postfix
CREATE TABLE `domaines` (
`domaine` varchar(255) NOT NULL default '',
PG : domaine varchar(255) NOT NULL default '' PRIMARY KEY
`etat` tinyint(1) NOT NULL default '1',
PG: smallint not null default 1
PRIMARY KEY (`domaine`)
PG: déplacé + haut
) ENGINE=InnoDB;
PG : cette abomination n'existe pas
CREATE TABLE `comptes` (
`email` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`quota` int(10) NOT NULL default '0',
je ne connais pas int(10) ?!
`etat` tinyint(1) NOT NULL default '1',
`imap` tinyint(1) NOT NULL default '1',
`pop3` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`email`)
) ENGINE=InnoDB;
CREATE TABLE `alias` (
`source` varchar(255) NOT NULL default '',
`destination` text NOT NULL,
`etat` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`source`)
) ENGINE=InnoDB;
..........................................................................................
INSERT INTO `postfix`.`comptes` ( `email` , `password` , `quota` ,
`etat` , `imap` , `pop3` ) VALUES ('happy-tux@::1', ENCRYPT(
'mon_beau-mot-de-passe' ) , '0', '1', '1', '1');
encrypt, voir l'extension pgcrypto (fournie avec PostgreSQL).
--
Christophe Courtois
Plus d'informations sur la liste de diffusion linux