Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Hier geht es um die Verwaltung von Benutzern und Rechten.
Antworten
Mungo1981
Neuer Benutzer
Beiträge: 19
Registriert: Fr 17. Mai 2019, 08:54

Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Beitrag von Mungo1981 » Fr 24. Mai 2019, 18:03

Liebe Community,
Ich möchte noch einmal danken für die Hilfe libpq4 auf meinem System zu installieren.
viewtopic.php?f=50&t=7967
Jetzt möchte ich gerne ein erstes Script ausführen um zu sehen ob auch wirklich alles funktioniert.
Dazu muss ich eine Rolle erstellen die kein Passwort benötigt - jeden falls bei folgendem Code.:

Code: Alles auswählen

 #include <iostream>
 #include <pqxx/pqxx>

 int main()
 {
   try
   {
     pqxx::connection c;
     pqxx::work w(c);
     pqxx::result r = w.exec("SELECT 1");
     w.commit();

     std::cout << r[0][0].as<int>() << std::endl;
   }
   catch (const std::exception &e)
   {
     std::cerr << e.what() << std::endl;
     return 1;
   }
 }
Dieser Code ist der Erste Code aus der Documentation von libpq4++ selber.

Oder gibt es einen anderen Weg.
Bin noch sehr unerfahren in PostgreSQL, so kann es sein dass die Lösung ganz einfach ist.

Ein etwas auf dem Schlauch stehender
Mungo1981

Mungo1981
Neuer Benutzer
Beiträge: 19
Registriert: Fr 17. Mai 2019, 08:54

Re: Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Beitrag von Mungo1981 » Fr 24. Mai 2019, 19:01

Ok,
Ich hab versucht eine Rolle trust in pg_hbaf.conf anzulegen.
Und dann mit \du nach gesehen ob meine Rolle existiert.
Meine neue Rolle scheint aber noch nicht zu existieren.
Gibt es da vielleicht ein Kommando mit dem die Rollen neu eingelesen werden.

castorp
Erfahrener Benutzer
Beiträge: 1141
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Beitrag von castorp » Fr 24. Mai 2019, 19:18

Eine Rolle wird mit CREATE ROLE angelegt, nicht durch editieren von pg_hba.conf
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Mungo1981
Neuer Benutzer
Beiträge: 19
Registriert: Fr 17. Mai 2019, 08:54

Re: Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Beitrag von Mungo1981 » Fr 24. Mai 2019, 19:37

Richtig !!!

Und dieses Programm läuft defnitierlich - meiner Meinung nach - nicht.
Hab ne Rolle mit Password angelegt.
Und dem Konstruktor der Connection mehrere Angaben hinzugefügt.:

Code: Alles auswählen

#include <iostream>
#include <pqxx/pqxx>

 int main()
 {
   try
   {
     pqxx::connection c(
	    "user=papa "
            "host=localhost "
            "password=mama "
            "dbname=mydb");
     pqxx::work w(c);
     pqxx::result r = w.exec("SELECT 123");
     w.commit();

     std::cout << r[0][0].as<int>() << std::endl;
   }
   catch (const std::exception &e)
   {
     std::cerr << e.what() << std::endl;
     return 1;
   }
 }

Und dann läuft das Programm ohne Probleme.
Nur warum steht es dann anders in den Doc-Dateien ????
:confused: :mad: :confused:

akretschmer
Erfahrener Benutzer
Beiträge: 7640
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Beitrag von akretschmer » Fr 24. Mai 2019, 23:07

unklar, was Du da machst, willst, oder versuchst.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pogomips
Erfahrener Benutzer
Beiträge: 105
Registriert: Fr 18. Nov 2016, 09:55

Re: Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Beitrag von pogomips » Mo 27. Mai 2019, 21:12

Ohne den Originalcode zu sehen ist das kaum zu beantworten.

Aber:
Clientverbindungen zu Postgres können je nach Plattform und je nach Definition in der pg_hba.conf mit unterschiedlich wenig Verbindungsparametern auskommen, sodass bspw. kein Passwort notwendig ist.

Grundsätzlich würde ich Dir empfehlen, zunächst mit fertigen Programmen etwas zu spielen. Du kannst im Zweifel mit einem Command Line Tool beginnen oder natürlich irgendein DB IDE nehmen. Auch dort musst Du eine Connection aufbauen, auch dort kannst Du nach Herzenslust mit Postgres Erfahrung sammeln. Wenn die ersten Hürden überwunden sind, kannst Du das Programmieren dazunehmen.

Wenn Du ein Programm erstellst, ist es in vielen Fällen hilfreich, den SQL Coder "zu Fuß" außerhalb des Programms zu testen.
Warum liefert ein Statement nicht das gewünschte Ergebnis?
Bei welcher Variante kommt ein Fehler?
Habe ich das Initialisierungsscript versehentlich doppelt laufen lassen?

Solche Dinge programmierst Du nicht, die fragst Du eben kurz mit einem SQL Tool ab.

Dravion
Benutzer
Beiträge: 36
Registriert: So 6. Nov 2016, 09:43

Re: Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Beitrag von Dravion » Do 30. Mai 2019, 05:18

Was hast Du denn eigentlich vor?
Um mit SQL rumzuspielen und zu lernen PG zu administrieren reicht ein Linux /Unix Terminal und
psql vollkommen aus. C++ macht eigentlich nur Sinn wenn Du ein konkretes Tool wie z.B eine DB GUI App oder einen Deamon bauen willst der irgend etwas im Hintergrund machen soll (z.B ein permanent Datenimporter oder sowas).

Antworten