Was muss für mySqlDatabase installiert sein?

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
topsoft
Beiträge: 67
Registriert: 16.09.2004 11:55
Wohnort: nrw

Was muss für mySqlDatabase installiert sein?

Beitrag von topsoft »

Hallo,
ich habe folgenden Code auf Linux und will ihn kompilieren.

Code: Alles auswählen

EnableExplicit
UseMySQLDatabase()

If OpenConsole()
        Define hDatabase.i = OpenDatabase(#PB_Any, "host=xxxxxxxxxx port=3306 dbname=testdb", "topsoftsql", "xxxxxxxxx", #PB_Database_MySQL)
        If hDatabase
                PrintN("Datenbank geoeffnet")
        Else
                PrintN("Fehler, kann Datenbank nicht oeffnen")
                PrintN(DatabaseError())
        EndIf
        If hDatabase : CloseDatabase(hDatabase) : PrintN("Datenbank geschlossen") : EndIf
        Input()
        CloseConsole()
EndIf
End
Dabei bekomme ich vom Debugger aber nachfolgende Fehlermeldung.

Code: Alles auswählen

pbcompiler -d test.pb

******************************************
PureBasic 5.71 LTS (Linux - x64)
******************************************

Loading external modules...
Starting compilation...
Starting compilation...
18 lines processed.
Creating the executable.

- Feel the ..PuRe.. Power -


[Debugger Error]  UseODBCDatabase(), UseSQLiteDatase() or UsePostgreSQLDatabase() need to be called before using database commands.
[Debugger Error]  File: test.pb (Line: 5)
  Do you wish to continue the program? (Yes, No, Debugger Console, Ignore all)
  (y,N,d,i)
[Debugger Error]  Input error from stdin, program is exiting.
Von einem Windows Computer aus geht das. Auf dem Linux Rechner sind folgende Pakete installiert:

Code: Alles auswählen

libiodbc.i686 : iODBC Driver Manager
libiodbc.x86_64 : iODBC Driver Manager
libiodbc-devel.i686 : Header files and libraries for iODBC development
libiodbc-devel.x86_64 : Header files and libraries for iODBC development
unixODBC.i686 : A complete ODBC driver manager for Linux
unixODBC.x86_64 : A complete ODBC driver manager for Linux
unixODBC-devel.i686 : Development files for programs which will use the unixODBC library
unixODBC-devel.x86_64 : Development files for programs which will use the unixODBC library
Was muss den noch vorhanden sein um sich mit einer mariadb Datenbank zu verbinden?
Gruß Topsoft
Skylake QuadCore i7 6700K @4400MHz, MSI Z170A Gaming M5, 64 GB DDR4 @ 2133MHz, B: Ramdisk 32GB, C: Raid0 SATA SSD 1TB, D: Raid0 M2 SSD 1TB, E: Raid0 HDD 8TB, 28" 4K @ RTX2080, Win10 X64
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Was muss für mySqlDatabase installiert sein?

Beitrag von ccode_new »

Hallo topsoft,

kannst du "sudo mysql" über das Terminal ausführen ?

Welches Linux verwendest du ?

Probiere mal:
sudo apt-get install mysql-server
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Was muss für mySqlDatabase installiert sein?

Beitrag von DarkDragon »

Ich glaube per default ist eine Verbindung nur von localhost zulässig. Verbindest du dich von außen zur Datenbank?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Was muss für mySqlDatabase installiert sein?

Beitrag von ccode_new »

DarkDragon hat geschrieben:Ich glaube per default ist eine Verbindung nur von localhost zulässig.
Nein!

"localhost" muss als "127.0.0.1" angegeben werden !


Es muss ein Benutzer (außer root) für "localhost" erstellt sein.
MySQL unterscheidet zwischen "localhost" - Benutzern und allgemeinen Netzwerk-Benutzern.

Hier ein Beispiel:

sudo mysql

MariaDB [(none)]> CREATE SCHEMA IF NOT EXISTS test;
MariaDB [(none)]> CREATE USER
-> 'Pinguin'@'%' IDENTIFIED BY 'passwort'
->;
MariaDB [(none)]> GRANT INSERT, UPDATE, DELETE, SELECT ON TABLE test.* TO 'Pinguin'@'%', 'Pinguin'@'localhost';
MariaDB [(none)]> exit

Beispiel:

Code: Alles auswählen

UseMySQLDatabase()

; You should have a server running on localhost
;
If OpenDatabase(0, "host=127.0.0.1 port=3306 dbname=test", "Pinguin", "passwort")
  Debug "Connected to MySQL"
Else
  Debug "Connection failed: "+DatabaseError()
EndIf
-> Der Beispielbenutzer "Pinguin" kann so als "localhost" erstellt werden:

MariaDB [(none)]> CREATE USER
-> 'Pinguin'@'localhost' IDENTIFIED BY 'passwort'
->;

(% ist nur ein PLatzhalter)

-> GRANT ALL ist natürlich noch besser!

Ich könnte auch mal ein kleines Tutorial erstellen. (vielleicht)
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Was muss für mySqlDatabase installiert sein?

Beitrag von DarkDragon »

ccode_new hat geschrieben:
DarkDragon hat geschrieben:Ich glaube per default ist eine Verbindung nur von localhost zulässig.
Nein!
Stimmt, habs grad nachgeschlagen:
https://dev.mysql.com/doc/refman/5.5/en ... nd-address

Default ist auf allen Netzwerkschnittstellen zu horchen, nicht nur auf loopback.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten