Re: comment adapter la syntaxe pour PgSQL
Bonjour,
Le mardi 16 janvier 2018, Bernard Schoenacker a écrit...
> mysql -u root -p
su - postgres
> mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'mot_de_passe';
Perso, je crée un utilisateur ayant mon login (jm) et je me mets proprio
(owner) de mes bases
Toujours en user postgres :
createuser -P bernard
createuser --pwprompt --no-createdb --no-createrole --no-superuser postfix
createdb --encoding=utf8 --owner=bernard postfix
> mysql> GRANT USAGE ON * . * TO 'postfix'@'localhost' IDENTIFIED BY 'mot_de_passe';
> mysql> CREATE DATABASE `postfix` ;
> mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
> mysql> FLUSH PRIVILEGES;
> mysql> quit
> //
> CREATE USER 'postfix'@'localhost' IDENTIFIED BY '***';
> 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 ;
> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
> // importer les tables postfix ou :
> USE postfix;
> CREATE TABLE `domaines` (
> `domaine` varchar(255) NOT NULL default '',
> `etat` tinyint(1) NOT NULL default '1',
> PRIMARY KEY (`domaine`)
> ) ENGINE=InnoDB;
> CREATE TABLE `comptes` (
> `email` varchar(255) NOT NULL default '',
> `password` varchar(255) NOT NULL default '',
> `quota` int(10) NOT NULL default '0',
> `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;
Si 'bernard' est propriétaire de la base, tu peux te connecter dessus avec :
psql postfix
puis
postfix # grant select, update, delete, insert on domaines to postfix;
postfix # grant select, update, delete, insert on comptes to postfix;
postfix # grant select, update, delete, insert on alias to postfix;
En fonction des nécessités, tu supprimes des droits dans ce que j'ai
indiqué. Je suppose que postfix aura besoin du select. Mais du insert,
update, delete ?
Pour la création de table, je pense que c'est pareil, à part que tu évites
le engine=InnoDB à la fin !
> INSERT INTO `postfix`.`comptes` ( `email` , `password` , `quota` , `etat` , `imap` , `pop3` ) VALUES ('happy-tux@happy-tux.org', ENCRYPT( 'mon_beau-mot-de-passe' ) , '0', '1', '1', '1');
Il faut ajouter l'extension pgcrypto à la base.
su - postgres
psql postfix
postfix= #create extension pgcrypto
Mais le crypt() de postgresql prend un 'salt' en plus comme argument :
select crypt('le-mot-de-passe', 'le-salt');
Je ne sais pas si tu peux l'utiliser ?
> service mysql reload
service postgresql reload
> INSERT INTO `postfix`.`alias` ( `source`, `destination` , `etat` ) VALUES ('bernard.schoenacker@happy-tux.org', 'happy-tux@happy-tux.org', '1');
ok.
Question bête: pourquoi vouloir passer de mariadb à postgres ?
--
jm
Reply to: