Seite 1 von 1

Was muss für mySqlDatabase installiert sein?

Verfasst: 06.10.2019 23:37
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

Re: Was muss für mySqlDatabase installiert sein?

Verfasst: 22.10.2019 22:32
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

Re: Was muss für mySqlDatabase installiert sein?

Verfasst: 23.10.2019 05:35
von DarkDragon
Ich glaube per default ist eine Verbindung nur von localhost zulässig. Verbindest du dich von außen zur Datenbank?

Re: Was muss für mySqlDatabase installiert sein?

Verfasst: 24.10.2019 19:34
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)

Re: Was muss für mySqlDatabase installiert sein?

Verfasst: 24.10.2019 20:34
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.