Chaque article peut avoir plusieurs codes remise d'achat et 1 ou 0 code
remise de vente. Ce type est caractérisés par la colonne TYPE qui prend la
valeur 1 pour achat et 2 pour vente.
Je cherche à retourner tous les articles qui n'ont pas de code remise de
vente (type 2) !! sans succès...
j'ai essayé avec la requète:
select IDARTICLE,if(isnull(IDCODEREM),-1,0) as IDCODEREM
from ARTICLE
left join LIEN
on LIEN.IDARTICLE = ARTICLE.IDARTICLE
left join CODEREM
on CODEREM.IDCODEREM = LIEN.IDCODEREM
and TYPE = 2
group by IDARTICLE
having IDCODEREM = -1
mais ca me retourne des doublons sur les articles, même ceux qui ont un code
de vente
"Firetox" a écrit dans le message de news: 4b0bae59$0$8911$
oui car en fait tu obtiens les articles sans liens article dons sans codeRemise mais est cela que tu voulais ?
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2 where LIEN.IDARTICLE is null
oui je cherche avant tout à trouver les articles qui n'ont pas de code remise de vente (type 2) ! mais je ne comprends pas pourquoi ça marche avec lien.idarticle et pas avec idcoderem
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
4b0bae59$0$8911$426a74cc@news.free.fr...
oui
car en fait tu obtiens les articles sans liens article dons sans
codeRemise
mais est cela que tu voulais ?
select IDARTICLE
from ARTICLE
left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE
left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2
where LIEN.IDARTICLE is null
oui je cherche avant tout à trouver les articles qui n'ont pas de code
remise de vente (type 2) !
mais je ne comprends pas pourquoi ça marche avec lien.idarticle et pas avec
idcoderem
"Firetox" a écrit dans le message de news: 4b0bae59$0$8911$
oui car en fait tu obtiens les articles sans liens article dons sans codeRemise mais est cela que tu voulais ?
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2 where LIEN.IDARTICLE is null
oui je cherche avant tout à trouver les articles qui n'ont pas de code remise de vente (type 2) ! mais je ne comprends pas pourquoi ça marche avec lien.idarticle et pas avec idcoderem
Firetox
Bonjour,
donc la requete precedente ne renvoie ce qu'il faut car elle ne renverra pas les article qui on un codeRem <> 2 avec le IdcodRem is null renvoie donc tout les articles qui ont des lien ou non mais pas de lien code 2
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2 where CODEREM.IDCODEREM is null
va generer une ligne avec le lien qui va avec s'il y a en mais mettra null dans le cas ou le code remise n'est pas de type 2 dans codeRem ce qui est vrai aussi pour les lien de type achat tu a le lien mais si tu join sur codRem avec type = 2 tu obtiens null et donc il te laisse la ligne
pour avoir ce que tu demande il faut bien faire la requete avec les lien mais il faut egalement dans le where mettre une chose qui permet d'identifer les codeRem
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM where CODEREM.IDCODEREM is null or CODEREM.TYPE = 2
dans cette requete on va prendre tous les article et leur lien, ton analyse dit que le type 2 a une seule ligne par article donc en faisant cette joiture on garde ceux qui n'ont pas de code remise + ceux ui ont des remise mais de type = 2 et on devrait avoir 1 seule ligne par article
"I.G.LOG" a écrit dans le message de news:4b0bb3ad$0$973$
"Firetox" a écrit dans le message de news: 4b0bae59$0$8911$
oui car en fait tu obtiens les articles sans liens article dons sans codeRemise mais est cela que tu voulais ?
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2 where LIEN.IDARTICLE is null
oui je cherche avant tout à trouver les articles qui n'ont pas de code remise de vente (type 2) ! mais je ne comprends pas pourquoi ça marche avec lien.idarticle et pas avec idcoderem
Bonjour,
donc la requete precedente ne renvoie ce qu'il faut car elle ne renverra pas
les article qui on un codeRem <> 2
avec le IdcodRem is null renvoie donc tout les articles qui ont des lien ou
non mais pas de lien code 2
select IDARTICLE
from ARTICLE
left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE
left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2
where CODEREM.IDCODEREM is null
va generer une ligne avec le lien qui va avec s'il y a en mais mettra null
dans le cas ou le code remise n'est pas de type 2 dans codeRem ce qui est
vrai aussi pour les lien de type achat tu a le lien mais si tu join sur
codRem avec type = 2 tu obtiens null et donc il te laisse la ligne
pour avoir ce que tu demande il faut bien faire la requete avec les lien
mais il faut egalement dans le where mettre une chose qui permet d'identifer
les codeRem
select IDARTICLE
from ARTICLE
left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE
left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM
where
CODEREM.IDCODEREM is null
or CODEREM.TYPE = 2
dans cette requete on va prendre tous les article et leur lien, ton analyse
dit que le type 2 a une seule ligne par article donc en faisant cette
joiture on garde ceux qui n'ont pas de code remise + ceux ui ont des remise
mais de type = 2 et on devrait avoir 1 seule ligne par article
"I.G.LOG" <iglog@free.fr> a écrit dans le message de
news:4b0bb3ad$0$973$ba4acef3@news.orange.fr...
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
4b0bae59$0$8911$426a74cc@news.free.fr...
oui
car en fait tu obtiens les articles sans liens article dons sans
codeRemise
mais est cela que tu voulais ?
select IDARTICLE
from ARTICLE
left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE
left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2
where LIEN.IDARTICLE is null
oui je cherche avant tout à trouver les articles qui n'ont pas de code
remise de vente (type 2) !
mais je ne comprends pas pourquoi ça marche avec lien.idarticle et pas
avec idcoderem
donc la requete precedente ne renvoie ce qu'il faut car elle ne renverra pas les article qui on un codeRem <> 2 avec le IdcodRem is null renvoie donc tout les articles qui ont des lien ou non mais pas de lien code 2
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2 where CODEREM.IDCODEREM is null
va generer une ligne avec le lien qui va avec s'il y a en mais mettra null dans le cas ou le code remise n'est pas de type 2 dans codeRem ce qui est vrai aussi pour les lien de type achat tu a le lien mais si tu join sur codRem avec type = 2 tu obtiens null et donc il te laisse la ligne
pour avoir ce que tu demande il faut bien faire la requete avec les lien mais il faut egalement dans le where mettre une chose qui permet d'identifer les codeRem
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM where CODEREM.IDCODEREM is null or CODEREM.TYPE = 2
dans cette requete on va prendre tous les article et leur lien, ton analyse dit que le type 2 a une seule ligne par article donc en faisant cette joiture on garde ceux qui n'ont pas de code remise + ceux ui ont des remise mais de type = 2 et on devrait avoir 1 seule ligne par article
"I.G.LOG" a écrit dans le message de news:4b0bb3ad$0$973$
"Firetox" a écrit dans le message de news: 4b0bae59$0$8911$
oui car en fait tu obtiens les articles sans liens article dons sans codeRemise mais est cela que tu voulais ?
select IDARTICLE from ARTICLE left join LIEN on LIEN.IDARTICLE = ARTICLE.IDARTICLE left join CODEREM on CODEREM.IDCODEREM = LIEN.IDCODEREM and TYPE = 2 where LIEN.IDARTICLE is null
oui je cherche avant tout à trouver les articles qui n'ont pas de code remise de vente (type 2) ! mais je ne comprends pas pourquoi ça marche avec lien.idarticle et pas avec idcoderem
I.G.LOG
je vais esssayer de mieux comprendre tout ça. Une nouvelle fois merci pour ces explications qui me permettent d'avancer. Sans vouloir abuser, j'ai posté plusieurs messages concernant un problème de droits sur MySQL 4.1.9 (serveur Linux FC3) sans réponse qui ne règle mon problème. Peut-être aurais tu une explication. Voici le problème: J'ai développé en 2 semaines une fonction multi-sociétés. Lors de l'ajout d'une société, je dois créer une database (une base par société) et faire certaines recopies d'une base à l'autre. Sur mon poste de développement (Win XP, MySQL 4.1.22), tout fonctionne bien. En revanche, chez le client, ça ne passe pas, j'ai une erreur "1044 access denied from " sur la commande "create database ta_bases". En fait, sur mon poste je suis en root, alors que les users du client ne le sont pas. Je suis donc allé sur le serveur MySQL et j'ai tapé "grant create on *.* to 'tauser'@'%';" puis "flush privileges;" Mais rien n'y fait, on dirait que les droits de création ne sont pas pris pour les user 'tauser', toujours impossible de créer la base ! J'ai même sur le serveur linux executé mysql_fix_privilèges... toujours le même problème. Dans my.cnf, pas de skip-network et, de toute façon, rien de particulier (5 lignes seulement) Aurais tu une idée ? Encore merci
je vais esssayer de mieux comprendre tout ça.
Une nouvelle fois merci pour ces explications qui me permettent d'avancer.
Sans vouloir abuser, j'ai posté plusieurs messages concernant un problème de
droits sur MySQL 4.1.9 (serveur Linux FC3) sans réponse qui ne règle mon
problème. Peut-être aurais tu une explication. Voici le problème:
J'ai développé en 2 semaines une fonction multi-sociétés. Lors de l'ajout
d'une société, je dois créer une database (une base par société) et faire
certaines recopies d'une base à l'autre.
Sur mon poste de développement (Win XP, MySQL 4.1.22), tout fonctionne bien.
En revanche, chez le client, ça ne passe pas, j'ai une erreur "1044 access
denied from tauser@192.168.0.x" sur la commande "create database ta_bases".
En fait, sur mon poste je suis en root, alors que les users du client ne le
sont pas. Je suis donc allé sur le serveur MySQL et j'ai tapé
"grant create on *.* to 'tauser'@'%';" puis "flush privileges;"
Mais rien n'y fait, on dirait que les droits de création ne sont pas pris
pour les user 'tauser', toujours impossible de créer la base !
J'ai même sur le serveur linux executé mysql_fix_privilèges... toujours le
même problème.
Dans my.cnf, pas de skip-network et, de toute façon, rien de particulier (5
lignes seulement)
Aurais tu une idée ?
Encore merci
je vais esssayer de mieux comprendre tout ça. Une nouvelle fois merci pour ces explications qui me permettent d'avancer. Sans vouloir abuser, j'ai posté plusieurs messages concernant un problème de droits sur MySQL 4.1.9 (serveur Linux FC3) sans réponse qui ne règle mon problème. Peut-être aurais tu une explication. Voici le problème: J'ai développé en 2 semaines une fonction multi-sociétés. Lors de l'ajout d'une société, je dois créer une database (une base par société) et faire certaines recopies d'une base à l'autre. Sur mon poste de développement (Win XP, MySQL 4.1.22), tout fonctionne bien. En revanche, chez le client, ça ne passe pas, j'ai une erreur "1044 access denied from " sur la commande "create database ta_bases". En fait, sur mon poste je suis en root, alors que les users du client ne le sont pas. Je suis donc allé sur le serveur MySQL et j'ai tapé "grant create on *.* to 'tauser'@'%';" puis "flush privileges;" Mais rien n'y fait, on dirait que les droits de création ne sont pas pris pour les user 'tauser', toujours impossible de créer la base ! J'ai même sur le serveur linux executé mysql_fix_privilèges... toujours le même problème. Dans my.cnf, pas de skip-network et, de toute façon, rien de particulier (5 lignes seulement) Aurais tu une idée ? Encore merci
Firetox
Bonjour,
probleme epineux
pour voir deja si ton user a des droits sur la base - mysql.db stocke les droits des utilisateurs sur des bases de données :
alors que mysql.user stocke les permissions générales des utilisateurs :
attention aussi je sais qu'il y a vait un bug de ce cote la depuis la 4.1.16 ou donner les droits a un utilisateur lui permettait de creer d'autre base mais du meme nom o a l'erreur 1044 si je me connecte sur sample et que je cree TOTO mais je peux creer sAMple (sur les case sensitif)
bref
pour les grant tu utilise bien ceci GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'password' FLUSH PRIVILEGES;
donc verifier par un select * from mySQL.db les droits sur les base de données de ton user
si tu insert des enreg dans la table il faudra faire un FLUSH PRIVILEGES; apres
Bonjour,
probleme epineux
pour voir deja si ton user a des droits sur la base
- mysql.db stocke les droits des utilisateurs sur des bases de données :
alors que
mysql.user stocke les permissions générales des utilisateurs :
attention aussi je sais qu'il y a vait un bug de ce cote la depuis la 4.1.16
ou donner les droits a un utilisateur lui permettait de creer d'autre base
mais du meme nom o a l'erreur 1044 si je me connecte sur sample et que je
cree TOTO mais je peux creer sAMple (sur les case sensitif)
bref
pour les grant tu utilise bien ceci
GRANT ALL PRIVILEGES ON *.* TO MonUser@srv_name IDENTIFIED BY 'password'
FLUSH PRIVILEGES;
donc verifier par un select * from mySQL.db
les droits sur les base de données de ton user
si tu insert des enreg dans la table il faudra faire un FLUSH PRIVILEGES;
apres
pour voir deja si ton user a des droits sur la base - mysql.db stocke les droits des utilisateurs sur des bases de données :
alors que mysql.user stocke les permissions générales des utilisateurs :
attention aussi je sais qu'il y a vait un bug de ce cote la depuis la 4.1.16 ou donner les droits a un utilisateur lui permettait de creer d'autre base mais du meme nom o a l'erreur 1044 si je me connecte sur sample et que je cree TOTO mais je peux creer sAMple (sur les case sensitif)
bref
pour les grant tu utilise bien ceci GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'password' FLUSH PRIVILEGES;
donc verifier par un select * from mySQL.db les droits sur les base de données de ton user
si tu insert des enreg dans la table il faudra faire un FLUSH PRIVILEGES; apres
Firetox
complement
* Les droits de table et colonnes prennent effet à la prochaine requête du client. * Les droits de bases prennent effet à la prochaine commande USE nom_de_base . * Les droits globaux et les modifications de droits prennent effets lors de la prochaine connexion.
complement
* Les droits de table et colonnes prennent effet à la prochaine requête
du client.
* Les droits de bases prennent effet à la prochaine commande USE
nom_de_base .
* Les droits globaux et les modifications de droits prennent effets lors
de la prochaine connexion.
* Les droits de table et colonnes prennent effet à la prochaine requête du client. * Les droits de bases prennent effet à la prochaine commande USE nom_de_base . * Les droits globaux et les modifications de droits prennent effets lors de la prochaine connexion.
I.G.LOG
Je veux éviter de donner tous les droits aux users 'tauser', donc je ne voudrais affecter que le droit création database (CREATE) La seule différence que je vois avec la commande grant "classique", c'est que les users 'tauser' sont définis sans mot de passe, je n'ai donc pas mis le paramètre IDENTIFIED BY ! Dans ce cas, est-ce qu'il faudrait écrire :
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY '' au lieu de GRANT CREATE ON *.* TO 'tauser'@'%' ?
complement
* Les droits de table et colonnes prennent effet à la prochaine requête du client. * Les droits de bases prennent effet à la prochaine commande USE nom_de_base . * Les droits globaux et les modifications de droits prennent effets lors de la prochaine connexion.
Pour créer la base, j'utilise le code suivant, qui crée la database, ferme la connexion courante et ré-ouvre une nouvelle connexion sur la nouvelle base. Je pense donc qu'il ne devrait pas y avoir de problème avec le complement ci-dessus ?!
// Script de création de la base lCond = "" SQLExec("show create database " + Projet:CnxNomBase,"ReqB") SI SQLFetch("ReqB") = 0 ALORS lCond = Remplace(SQLLitCol("ReqB",2),Projet:CnxNomBase,"ta_bases") FIN SQLFerme("ReqB") SI PAS SQLExec(lCond,"ReqB") ALORS SQLInfoGene("ReqB") // Erreur 1044, access denied Erreur(sql.MesErreur) FIN SQLFerme("ReqB") SI PAS Projet:InitConnexion("Connexion",Projet:CnxServer,Projet:CnxUser,Projet:CnxPwd,"ta_bases",Projet:CnxTypeBase) ALORS // Nouvelle connexion Ferme FIN ...
Je veux éviter de donner tous les droits aux users 'tauser', donc je ne
voudrais affecter que le droit création database (CREATE)
La seule différence que je vois avec la commande grant "classique", c'est
que les users 'tauser' sont définis sans mot de passe, je n'ai donc pas mis
le paramètre IDENTIFIED BY !
Dans ce cas, est-ce qu'il faudrait écrire :
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''
au lieu de GRANT CREATE ON *.* TO 'tauser'@'%' ?
complement
* Les droits de table et colonnes prennent effet à la prochaine requête
du client.
* Les droits de bases prennent effet à la prochaine commande USE
nom_de_base .
* Les droits globaux et les modifications de droits prennent effets
lors de la prochaine connexion.
Pour créer la base, j'utilise le code suivant, qui crée la database, ferme
la connexion courante et ré-ouvre une nouvelle connexion sur la nouvelle
base. Je pense donc qu'il ne devrait pas y avoir de problème avec le
complement ci-dessus ?!
// Script de création de la base
lCond = ""
SQLExec("show create database " + Projet:CnxNomBase,"ReqB")
SI SQLFetch("ReqB") = 0 ALORS
lCond = Remplace(SQLLitCol("ReqB",2),Projet:CnxNomBase,"ta_bases")
FIN
SQLFerme("ReqB")
SI PAS SQLExec(lCond,"ReqB") ALORS
SQLInfoGene("ReqB") // Erreur 1044, access denied
Erreur(sql.MesErreur)
FIN
SQLFerme("ReqB")
SI PAS
Projet:InitConnexion("Connexion",Projet:CnxServer,Projet:CnxUser,Projet:CnxPwd,"ta_bases",Projet:CnxTypeBase)
ALORS // Nouvelle connexion
Ferme
FIN
...
Je veux éviter de donner tous les droits aux users 'tauser', donc je ne voudrais affecter que le droit création database (CREATE) La seule différence que je vois avec la commande grant "classique", c'est que les users 'tauser' sont définis sans mot de passe, je n'ai donc pas mis le paramètre IDENTIFIED BY ! Dans ce cas, est-ce qu'il faudrait écrire :
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY '' au lieu de GRANT CREATE ON *.* TO 'tauser'@'%' ?
complement
* Les droits de table et colonnes prennent effet à la prochaine requête du client. * Les droits de bases prennent effet à la prochaine commande USE nom_de_base . * Les droits globaux et les modifications de droits prennent effets lors de la prochaine connexion.
Pour créer la base, j'utilise le code suivant, qui crée la database, ferme la connexion courante et ré-ouvre une nouvelle connexion sur la nouvelle base. Je pense donc qu'il ne devrait pas y avoir de problème avec le complement ci-dessus ?!
// Script de création de la base lCond = "" SQLExec("show create database " + Projet:CnxNomBase,"ReqB") SI SQLFetch("ReqB") = 0 ALORS lCond = Remplace(SQLLitCol("ReqB",2),Projet:CnxNomBase,"ta_bases") FIN SQLFerme("ReqB") SI PAS SQLExec(lCond,"ReqB") ALORS SQLInfoGene("ReqB") // Erreur 1044, access denied Erreur(sql.MesErreur) FIN SQLFerme("ReqB") SI PAS Projet:InitConnexion("Connexion",Projet:CnxServer,Projet:CnxUser,Projet:CnxPwd,"ta_bases",Projet:CnxTypeBase) ALORS // Nouvelle connexion Ferme FIN ...
Firetox
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
par contre peitite info regarde dans mySQL.user ce que tu as pour l'utilisateur pour avoir un double de root tu ajoute une ligne dans la table mysql.user avec que des Y
ensuite il faut jouer avec ca par defaut je nutilise plus grant mais directement les tables mysql.user et mysql.db (il faut etre en root pour les voir)
@+
"I.G.LOG" a écrit dans le message de news:4b0c00e0$0$934$
Je veux éviter de donner tous les droits aux users 'tauser', donc je ne voudrais affecter que le droit création database (CREATE) La seule différence que je vois avec la commande grant "classique", c'est que les users 'tauser' sont définis sans mot de passe, je n'ai donc pas mis le paramètre IDENTIFIED BY ! Dans ce cas, est-ce qu'il faudrait écrire :
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY '' au lieu de GRANT CREATE ON *.* TO 'tauser'@'%' ?
complement
* Les droits de table et colonnes prennent effet à la prochaine requête du client. * Les droits de bases prennent effet à la prochaine commande USE nom_de_base . * Les droits globaux et les modifications de droits prennent effets lors de la prochaine connexion.
Pour créer la base, j'utilise le code suivant, qui crée la database, ferme la connexion courante et ré-ouvre une nouvelle connexion sur la nouvelle base. Je pense donc qu'il ne devrait pas y avoir de problème avec le complement ci-dessus ?!
// Script de création de la base lCond = "" SQLExec("show create database " + Projet:CnxNomBase,"ReqB") SI SQLFetch("ReqB") = 0 ALORS lCond = Remplace(SQLLitCol("ReqB",2),Projet:CnxNomBase,"ta_bases") FIN SQLFerme("ReqB") SI PAS SQLExec(lCond,"ReqB") ALORS SQLInfoGene("ReqB") // Erreur 1044, access denied Erreur(sql.MesErreur) FIN SQLFerme("ReqB") SI PAS Projet:InitConnexion("Connexion",Projet:CnxServer,Projet:CnxUser,Projet:CnxPwd,"ta_bases",Projet:CnxTypeBase) ALORS // Nouvelle connexion Ferme FIN ...
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
par contre peitite info regarde dans mySQL.user ce que tu as pour
l'utilisateur
pour avoir un double de root tu ajoute une ligne dans la table mysql.user
avec que des Y
ensuite il faut jouer avec ca
par defaut je nutilise plus grant mais directement les tables mysql.user et
mysql.db (il faut etre en root pour les voir)
@+
"I.G.LOG" <iglog@free.fr> a écrit dans le message de
news:4b0c00e0$0$934$ba4acef3@news.orange.fr...
Je veux éviter de donner tous les droits aux users 'tauser', donc je ne
voudrais affecter que le droit création database (CREATE)
La seule différence que je vois avec la commande grant "classique", c'est
que les users 'tauser' sont définis sans mot de passe, je n'ai donc pas
mis le paramètre IDENTIFIED BY !
Dans ce cas, est-ce qu'il faudrait écrire :
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''
au lieu de GRANT CREATE ON *.* TO 'tauser'@'%' ?
complement
* Les droits de table et colonnes prennent effet à la prochaine
requête du client.
* Les droits de bases prennent effet à la prochaine commande USE
nom_de_base .
* Les droits globaux et les modifications de droits prennent effets
lors de la prochaine connexion.
Pour créer la base, j'utilise le code suivant, qui crée la database, ferme
la connexion courante et ré-ouvre une nouvelle connexion sur la nouvelle
base. Je pense donc qu'il ne devrait pas y avoir de problème avec le
complement ci-dessus ?!
// Script de création de la base
lCond = ""
SQLExec("show create database " + Projet:CnxNomBase,"ReqB")
SI SQLFetch("ReqB") = 0 ALORS
lCond = Remplace(SQLLitCol("ReqB",2),Projet:CnxNomBase,"ta_bases")
FIN
SQLFerme("ReqB")
SI PAS SQLExec(lCond,"ReqB") ALORS
SQLInfoGene("ReqB") // Erreur 1044, access denied
Erreur(sql.MesErreur)
FIN
SQLFerme("ReqB")
SI PAS
Projet:InitConnexion("Connexion",Projet:CnxServer,Projet:CnxUser,Projet:CnxPwd,"ta_bases",Projet:CnxTypeBase)
ALORS // Nouvelle connexion
Ferme
FIN
...
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
par contre peitite info regarde dans mySQL.user ce que tu as pour l'utilisateur pour avoir un double de root tu ajoute une ligne dans la table mysql.user avec que des Y
ensuite il faut jouer avec ca par defaut je nutilise plus grant mais directement les tables mysql.user et mysql.db (il faut etre en root pour les voir)
@+
"I.G.LOG" a écrit dans le message de news:4b0c00e0$0$934$
Je veux éviter de donner tous les droits aux users 'tauser', donc je ne voudrais affecter que le droit création database (CREATE) La seule différence que je vois avec la commande grant "classique", c'est que les users 'tauser' sont définis sans mot de passe, je n'ai donc pas mis le paramètre IDENTIFIED BY ! Dans ce cas, est-ce qu'il faudrait écrire :
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY '' au lieu de GRANT CREATE ON *.* TO 'tauser'@'%' ?
complement
* Les droits de table et colonnes prennent effet à la prochaine requête du client. * Les droits de bases prennent effet à la prochaine commande USE nom_de_base . * Les droits globaux et les modifications de droits prennent effets lors de la prochaine connexion.
Pour créer la base, j'utilise le code suivant, qui crée la database, ferme la connexion courante et ré-ouvre une nouvelle connexion sur la nouvelle base. Je pense donc qu'il ne devrait pas y avoir de problème avec le complement ci-dessus ?!
// Script de création de la base lCond = "" SQLExec("show create database " + Projet:CnxNomBase,"ReqB") SI SQLFetch("ReqB") = 0 ALORS lCond = Remplace(SQLLitCol("ReqB",2),Projet:CnxNomBase,"ta_bases") FIN SQLFerme("ReqB") SI PAS SQLExec(lCond,"ReqB") ALORS SQLInfoGene("ReqB") // Erreur 1044, access denied Erreur(sql.MesErreur) FIN SQLFerme("ReqB") SI PAS Projet:InitConnexion("Connexion",Projet:CnxServer,Projet:CnxUser,Projet:CnxPwd,"ta_bases",Projet:CnxTypeBase) ALORS // Nouvelle connexion Ferme FIN ...
I.G.LOG
"Firetox" a écrit dans le message de news: 4b0c024d$0$14576$
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
par contre peitite info regarde dans mySQL.user ce que tu as pour l'utilisateur pour avoir un double de root tu ajoute une ligne dans la table mysql.user avec que des Y
ensuite il faut jouer avec ca par defaut je nutilise plus grant mais directement les tables mysql.user et mysql.db (il faut etre en root pour les voir)
@+
D'accord je vais essayer de voir tout ça. Merci beaucoup !!! Phil
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
4b0c024d$0$14576$426a74cc@news.free.fr...
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
par contre peitite info regarde dans mySQL.user ce que tu as pour
l'utilisateur
pour avoir un double de root tu ajoute une ligne dans la table mysql.user
avec que des Y
ensuite il faut jouer avec ca
par defaut je nutilise plus grant mais directement les tables mysql.user
et mysql.db (il faut etre en root pour les voir)
@+
D'accord je vais essayer de voir tout ça.
Merci beaucoup !!!
Phil
"Firetox" a écrit dans le message de news: 4b0c024d$0$14576$
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
par contre peitite info regarde dans mySQL.user ce que tu as pour l'utilisateur pour avoir un double de root tu ajoute une ligne dans la table mysql.user avec que des Y
ensuite il faut jouer avec ca par defaut je nutilise plus grant mais directement les tables mysql.user et mysql.db (il faut etre en root pour les voir)
@+
D'accord je vais essayer de voir tout ça. Merci beaucoup !!! Phil
Firetox
Bonjour,
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''MonMotdePasse'' si tu es connecté a une base portera sur les tables
GRANT CREATE ON * TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse' remarque le * a la place de *.* dans ce cas si tu n'est pas connecté a une base les droits sont serveur sinon sur la base courante comme un GRANT ON Mabase.*
bon dev @+
Bonjour,
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''MonMotdePasse''
si tu es connecté a une base portera sur les tables
GRANT CREATE ON * TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
remarque le * a la place de *.*
dans ce cas si tu n'est pas connecté a une base les droits sont serveur
sinon sur la base courante comme un GRANT ON Mabase.*
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''MonMotdePasse'' si tu es connecté a une base portera sur les tables
GRANT CREATE ON * TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse' remarque le * a la place de *.* dans ce cas si tu n'est pas connecté a une base les droits sont serveur sinon sur la base courante comme un GRANT ON Mabase.*
bon dev @+
I.G.LOG
"Firetox" a écrit dans le message de news: 4b0c068d$0$9201$
Bonjour,
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''MonMotdePasse'' si tu es connecté a une base portera sur les tables
GRANT CREATE ON * TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse' remarque le * a la place de *.* dans ce cas si tu n'est pas connecté a une base les droits sont serveur sinon sur la base courante comme un GRANT ON Mabase.*
bon dev @+
C'est peut-être alors la deuxieme commande qui faut utiliser sur le serveur mysql !!! Je vais essayer ça jeudi prochain (je ne suis pas chez le client et sur mon poste je n'ai pas de problème) Encore merci
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
4b0c068d$0$9201$426a74cc@news.free.fr...
Bonjour,
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''MonMotdePasse''
si tu es connecté a une base portera sur les tables
GRANT CREATE ON * TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse'
remarque le * a la place de *.*
dans ce cas si tu n'est pas connecté a une base les droits sont serveur
sinon sur la base courante comme un GRANT ON Mabase.*
bon dev
@+
C'est peut-être alors la deuxieme commande qui faut utiliser sur le serveur
mysql !!!
Je vais essayer ça jeudi prochain (je ne suis pas chez le client et sur mon
poste je n'ai pas de problème)
Encore merci
"Firetox" a écrit dans le message de news: 4b0c068d$0$9201$
Bonjour,
GRANT CREATE ON *.* TO 'tauser'@'%' IDENTIFIED BY ''MonMotdePasse'' si tu es connecté a une base portera sur les tables
GRANT CREATE ON * TO 'tauser'@'%' IDENTIFIED BY 'MonMotdePasse' remarque le * a la place de *.* dans ce cas si tu n'est pas connecté a une base les droits sont serveur sinon sur la base courante comme un GRANT ON Mabase.*
bon dev @+
C'est peut-être alors la deuxieme commande qui faut utiliser sur le serveur mysql !!! Je vais essayer ça jeudi prochain (je ne suis pas chez le client et sur mon poste je n'ai pas de problème) Encore merci