IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

create user dynamique


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut create user dynamique
    Bonjour, je voudrais pouvoir créer dynamiquement un utilisateur pour la base de données, j'utilise bds2006 , dans la faq j'ai vu qu'il fallait le composant tibsecurityservice, je n'ai pas ce compo, je pensaios betement faire une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE USER 'tu'@ '%';
     
    GRANT ALL PRIVILEGES ON * . * TO 'tu'@ '%' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    mais il lui faut les ' ', alors avec query.sql.add(' ');
    il plante
    qq'un aurait il une piste ?

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Tu les doubles les ' et tu n'auras plus de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SQL.Add('CREATE USER ''tu''@ ''%'';');
    SQL.Add('GRANT ALL PRIVILEGES ON * . * TO ''tu''@ ''%'' WITH GRANT OPTION');
    SQL.Add('MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 ');
    SQL.Add('MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;');
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    oui j'avais essayé mais ce que je n'avais pas dit c'est que j'utilise un paramètre pour encoder le user

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    queryuser.Close;
    queryuser.SQL.clear;
    queryuser.SQL.Add('CREATE USER '':ut''@ ''%'';');
    queryuser.SQL.Add('GRANT ALL PRIVILEGES ON * . * TO '':ut''@ ''%'' WITH GRANT OPTION');
    queryuser.SQL.Add('MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 ');
    queryuser.SQL.Add('MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;');
    queryuser.paramcheck:=true;
    queryuser.parambyname('ut').asstring:=dbeditini.text;
    queryuser.execsql;

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Essaie comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    With queryuser do
    begin
      Close;
      SQL.clear;
      SQL.Add('CREATE USER :ut@ ''%'';');
      SQL.Add('GRANT ALL PRIVILEGES ON * . * TO :ut@ ''%'' WITH GRANT OPTION');
      SQL.Add('MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 ');
      SQL.Add('MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;');
      paramcheck:=true;
      parambyname('ut').asstring:=QuotedStr(dbeditini.text);
      execsql;
    End;
    Sinon, sasn paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With queryuser do
    begin
      Close;
      SQL.clear;
      SQL.Add('CREATE USER ' + QuotedStr(dbeditini.text) + '@ ''%'';');
      SQL.Add('GRANT ALL PRIVILEGES ON * . * TO ' + QuotedStr(dbeditini.text) + '@ ''%'' WITH GRANT OPTION');
      SQL.Add('MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 ');
      SQL.Add('MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;');
      execsql;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    ok j'essaie ca ce soir ou demain
    with query je ne connaissais pas, ca v ame faire gagner du temps:p

  6. #6
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    il plante avec les deux solutions
    voici l'erreur si ca te dit qq chose....
    First chance exception at $7C812A5B. Exception class EDBEngineError with message 'General SQL error.
    [MySQL][ODBC 3.51 Driver][mysqld-5.0.18-nt]You have an error in your SQL syntax; check the manual that corresponds to your
    MySQL server version for the right syntax to use near ''%'' at line 1'. Process Projecttimesheet.exe (4616)

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Es tu sûr de la synthaxe de la requete ?

    Si tu utilises la deuxieme solution (celle sans les paramètres), sauvegarde la requete pour voir si l'affichage est le bon et test la requete dans le SQL de MySQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    With queryuser do
    begin
      Close;
      SQL.clear;
      SQL.Add('CREATE USER ' + QuotedStr(dbeditini.text) + '@ ''%'';');
      SQL.Add('GRANT ALL PRIVILEGES ON * . * TO ' + QuotedStr(dbeditini.text) + '@ ''%'' WITH GRANT OPTION');
      SQL.Add('MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 ');
      SQL.Add('MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;');
      SQL.SaveToFile(ExtractFilePath(Application.exeName) + 'test.txt');
      execsql;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    salut, en fait, j'ai ajotué un utilisateur au départ de phpmyadmin, lorsque je crée un nouveal utilisateur a partir de phpmyadmin ca fonctionne, mais si j'exécute la même requête en sql ca plante peux-t-on créer un utilisateur directement en sql ??je suppose que oui .

  9. #9
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    voila, il faut le faire en deux étapes et ne pas mettre le @ server

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    With queryuser do
    begin
      Close;
      SQL.clear;
      SQL.Add('CREATE USER '+quotedstr(dbeditini.text)+';');
      execsql;
      close;
      sql.clear;
      SQL.Add('GRANT ALL PRIVILEGES ON * . * TO '+quotedstr(dbeditini.text)+' WITH GRANT OPTION');
      SQL.Add('MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 ');
      SQL.Add('MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;');
      execsql;
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. COmment utiliser un alter user dynamiquement ?
    Par Lust14 dans le forum Forms
    Réponses: 3
    Dernier message: 07/02/2007, 18h19
  2. Pb avec CREATE TABLE "dynamique"
    Par forzaxelah dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/07/2006, 13h14
  3. CREATE USER / tablespace d'index
    Par Carlito_superheros dans le forum Oracle
    Réponses: 10
    Dernier message: 25/10/2005, 14h46
  4. create user, affectation droits et scripts sql
    Par hirochirak dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/02/2004, 10h21
  5. [C#]web control user dynamique??
    Par norkius dans le forum ASP.NET
    Réponses: 3
    Dernier message: 11/12/2003, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo