WinFuture-Forum.de: Visual Basic mit phpmyadmin verbinden - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 3 Seiten +
  • 1
  • 2
  • 3

Visual Basic mit phpmyadmin verbinden

#31 Mitglied ist offline   Typhoon76 

  • Gruppe: aktive Mitglieder
  • Beiträge: 22
  • Beigetreten: 29. August 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Lustenau

geschrieben 01. September 2018 - 15:39

Beitrag anzeigenZitat (Gispelmob: 01. September 2018 - 14:29)

Es kommt mir so vor als ob du immer wieder falsche Daten eingibts. Der Name für den Datenbank user ist nicht root.

Der Server ist 10.0.0.3
Der Serverport ist 3306
Datenbank heisst tankmanager
Der User für diese Datenbank heisst TankManager.

Schau doch mal in phpMyAdmin nach ob das so stimmt. Du kannst nicht in phpMyAdmin den User TankManager nennen und dann im Connectstring tankmanager schreiben.

con.ConnectionString = "SERVER=10.0.0.3; Port=3306; DATABASE=tankmanager; USER ID=TankManager; PASSWORD=dbuser; CHARSET=utf8;"

Wegen mir kannste noch das CHARSET=utf8; wegmachen. Dann wird das Charset des Servers genutzt.


Hallo zusammen !! Ich habe es geschafft!! Eingefügtes Bild Dank eurer Hilfe und den sehr guten Tips kann ich mit meiner DatenBank komunizieren. ABER! Da gibe es schon das nächste Problem. Wenn ich über VB einen Eintrag mache (den Kilometerstand in die DB schreiben will) wird immer '127' eingetragen egal was ich eingebe.

Eingefügtes BildGibt es hierzu auch eine Lösung?
Vielen Lieben Dank nochmal für eure Unterstützung.
Gruß Gebhard

0

Anzeige



#32 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.591
  • Beigetreten: 14. August 15
  • Reputation: 392

geschrieben 01. September 2018 - 16:07

Beitrag anzeigenZitat (Typhoon76: 01. September 2018 - 15:39)

Gibt es hierzu auch eine Lösung?

Jo, die Lösung ist relativ einfach und nennt sich Datentyp.

Wenn dort 127 eingetragen wird, dann ist das der größtmögliche Wert den der derzeitige Datentyp verträgt.

Bei einem Kilometerstand empfielt sich DECIMAL 10,2 Das wäre dann eine 10 stellige Zahl mit 2 Nachkommastellen. Bei den anderen Spalten musste selbst schauen was dort passt.

Dieser Beitrag wurde von Gispelmob bearbeitet: 01. September 2018 - 16:20

AMD Ryzen 9 5950X, Asus ROG Strix X570-F Gaming, 32GB Corsair DDR4-3200, Asus Geforce GTX 3060 12GB, Creative Sound Blaster AE-7, 240GB SSD, 500GB SSD, 3x 1TB SSD, Win11 Home, 4x Acer G246HL Bbid, Logitech MX518 Gaming Mouse, Logitech G440 Mousepad, Logitech K120 Keyboard, Razer Tiamat 7.1 V2 Headset, Creative Inspire 5.1 5300 Soundsystem
0

#33 Mitglied ist offline   Typhoon76 

  • Gruppe: aktive Mitglieder
  • Beiträge: 22
  • Beigetreten: 29. August 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Lustenau

geschrieben 01. September 2018 - 17:21

Beitrag anzeigenZitat (Gispelmob: 01. September 2018 - 16:07)

Jo, die Lösung ist relativ einfach und nennt sich Datentyp.

Wenn dort 127 eingetragen wird, dann ist das der größtmögliche Wert den der derzeitige Datentyp verträgt.

Bei einem Kilometerstand empfielt sich DECIMAL 10,2 Das wäre dann eine 10 stellige Zahl mit 2 Nachkommastellen. Bei den anderen Spalten musste selbst schauen was dort passt.


Hallo Gispelmob
Danke für den Tip. Habe es geändert. Der Typ für 'Kilometerstand' war 'TINYINT'
Eingefügtes Bild

Besten Dank nochmals und ein schönes Wochenende.
Grüße Gebhard


0

#34 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.591
  • Beigetreten: 14. August 15
  • Reputation: 392

geschrieben 01. September 2018 - 17:46

Das ist jetzt auch nicht viel besser. Es gehen nur Ganzzahlen. Du kannst bei INT keine Kommastellen nutzen. Wenn du nur die vollen Kilometer eintragen willst dann nimm MEDIUMINT(8), denn mehr als 9Mio Km werden es wohl nicht werden. Bei MEDIUMINT(4) ist bei 9999 Schluss.

Dieser Beitrag wurde von Gispelmob bearbeitet: 01. September 2018 - 17:50

AMD Ryzen 9 5950X, Asus ROG Strix X570-F Gaming, 32GB Corsair DDR4-3200, Asus Geforce GTX 3060 12GB, Creative Sound Blaster AE-7, 240GB SSD, 500GB SSD, 3x 1TB SSD, Win11 Home, 4x Acer G246HL Bbid, Logitech MX518 Gaming Mouse, Logitech G440 Mousepad, Logitech K120 Keyboard, Razer Tiamat 7.1 V2 Headset, Creative Inspire 5.1 5300 Soundsystem
0

#35 Mitglied ist offline   Typhoon76 

  • Gruppe: aktive Mitglieder
  • Beiträge: 22
  • Beigetreten: 29. August 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Lustenau

geschrieben 01. September 2018 - 18:28

Beitrag anzeigenZitat (Gispelmob: 01. September 2018 - 17:46)

Das ist jetzt auch nicht viel besser. Es gehen nur Ganzzahlen. Du kannst bei INT keine Kommastellen nutzen. Wenn du nur die vollen Kilometer eintragen willst dann nimm MEDIUMINT(8), denn mehr als 9Mio Km werden es wohl nicht werden. Bei MEDIUMINT(4) ist bei 9999 Schluss.


Hallo Gispelmob
Danke für den Tip. Ich dachte (lt Info von phpmyadmin) das dieser Typ-Einstellung genug ist. Es Funktioniert auch mit MEDIUMINT(4). Also die Werte über 100000 werden auch brav eingetragen. Aber ich werde den Typ ändern zu INT.

Eingefügtes Bild
Eingefügtes BildGruß Gebhard
0

#36 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.591
  • Beigetreten: 14. August 15
  • Reputation: 392

geschrieben 01. September 2018 - 20:10

Komische Sache. Mehr als die Länge 4 dürfte da nicht auftauchen. Naja, wenn es jetzt funktioniert ist es ja gut.

Edit: Ich hab jetzt nochmal nachgelesen. Es wird in INT immer der Wert gespeichert den man eingibt, solang er im Rahmen des INT Types ist. Die Zahl in den Klammern gibt nur an wieviele führende Nullen bei der Ausgabe in der MySQL Console eingefügt werden sollen. Laut Beschreibung in dem Thread müsste z.B. bei einem INT(4) und der Eingabe von sagen wir 10 als Wert dann 0010 in der Console angezeigt werden. Bei SELECT Befehlen scheint es nichts zu bewirken, dort wird nur die 10 ausgegeben. Es ist also relativ egal was du da in die Klammern schreibst

Dieser Beitrag wurde von Gispelmob bearbeitet: 01. September 2018 - 20:20

AMD Ryzen 9 5950X, Asus ROG Strix X570-F Gaming, 32GB Corsair DDR4-3200, Asus Geforce GTX 3060 12GB, Creative Sound Blaster AE-7, 240GB SSD, 500GB SSD, 3x 1TB SSD, Win11 Home, 4x Acer G246HL Bbid, Logitech MX518 Gaming Mouse, Logitech G440 Mousepad, Logitech K120 Keyboard, Razer Tiamat 7.1 V2 Headset, Creative Inspire 5.1 5300 Soundsystem
0

#37 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 02. September 2018 - 06:31

Beitrag anzeigenZitat (Typhoon76: 01. September 2018 - 14:04)

Hallo Sturmovik
Ich habe den Eintrag in 'my.cnf' auf bind-adress 0.0.0.0 geändert.
Es hat sich etwas geändert.

Dann sind wir schon einen Schritt weiter, du verbindest jetzt wirklich zur Datenbank.
Allerdings laesst die Datenbank dich nicht rein.

Zitat

Eine andere Fehlermeldung kommt. ;-) Aber es hat sich etwas geändert.
Wobei root@DESKTOP-NOPUO65 der Name von meinem PC ist von dem aus ich auf die NAS sprich Datenbank zugreifen will.


Was zu erwarten war, wenn du mit dem root-user verbindest. Lass mich raten, der Datenbankserver ist irgendwas Debian-artiges?
Hier wird naemlich standardmaessig der root-user ueber den Unix-Socket identifiziert, d.h. Passwoerter sind irrelevant, nur der root des Systems kommt als root in die Datenbank rein.
Da es sowieso nicht empfehlenswert ist, den Superuser fuer die Verbindung mit irgendwelchen Anwendungen zu nutzen (bzw. fahrlaessig), richtest du am besten einen weiteren User ein, der die notwendigen Rechte fuer deine Datenbank hat:

GRANT SELECT,INSERT,UPDATE,DELETE on 'datenbankname'.* TO 'username'@'rechnername' IDENTIFIED BY 'password'

Wobei Rechnername hier der Rechner ist, auf dem die Applikation laufen soll.
Alternativ kannst du den Rechnernamen durch '%' ersetzen, dann werden Verbindungen von ueberall akzeptiert.
Die Hochkommas beachten, die muessen so, sonst bewirft dich MySQL weiter mit Schimpfworten (a.k.a. Fehlermeldungen)

Dieser Beitrag wurde von Sturmovik bearbeitet: 02. September 2018 - 06:38

«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#38 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 02. September 2018 - 06:41

Beitrag anzeigenZitat (Gispelmob: 01. September 2018 - 20:10)

Komische Sache. Mehr als die Länge 4 dürfte da nicht auftauchen. Naja, wenn es jetzt funktioniert ist es ja gut.

Edit: Ich hab jetzt nochmal nachgelesen. Es wird in INT immer der Wert gespeichert den man eingibt, solang er im Rahmen des INT Types ist. Die Zahl in den Klammern gibt nur an wieviele führende Nullen bei der Ausgabe in der MySQL Console eingefügt werden sollen. Laut Beschreibung in dem Thread müsste z.B. bei einem INT(4) und der Eingabe von sagen wir 10 als Wert dann 0010 in der Console angezeigt werden. Bei SELECT Befehlen scheint es nichts zu bewirken, dort wird nur die 10 ausgegeben. Es ist also relativ egal was du da in die Klammern schreibst

Nee, is nicht egal. Haettest du den stackoverflow-thread richtig gelesen, wuesstest du, dass die Angabe erst mit ZEROFILL wirksam wird. Dann wird wirklich ein Padding mit fuehrenden Nullen gemacht, um soviele Stellen zu speichern wie im Datentyp angegeben.
Wobei ich nicht wirklich den Sinn dahinter sehe, funktioniert naemlich nicht mit allen Datenbank-Connectoren. PHP zum Bleistift vernichtet fuehrende Nullen gerne mal.

Aber dafuer gibts ja LPAD()
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#39 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.591
  • Beigetreten: 14. August 15
  • Reputation: 392

geschrieben 02. September 2018 - 07:22

Ich weis dass dies nur mit ZEROFILL wirksam ist, aber für den TE sollte das egal sein.^^
AMD Ryzen 9 5950X, Asus ROG Strix X570-F Gaming, 32GB Corsair DDR4-3200, Asus Geforce GTX 3060 12GB, Creative Sound Blaster AE-7, 240GB SSD, 500GB SSD, 3x 1TB SSD, Win11 Home, 4x Acer G246HL Bbid, Logitech MX518 Gaming Mouse, Logitech G440 Mousepad, Logitech K120 Keyboard, Razer Tiamat 7.1 V2 Headset, Creative Inspire 5.1 5300 Soundsystem
0

#40 Mitglied ist offline   Typhoon76 

  • Gruppe: aktive Mitglieder
  • Beiträge: 22
  • Beigetreten: 29. August 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Lustenau

geschrieben 03. September 2018 - 10:27

Beitrag anzeigenZitat (Sturmovik: 31. August 2018 - 21:53)

Weil phpMyAdmin NICHT die Datenbank ist, sondern nur ein Webfrontend, mit der man die Datenbank bearbeiten kann.

MySQL ist das Datenbanksystem. Wie andere schon schrieben, hoert MySQL standardmaessig auf Port 3306, das kann man aber anpassen.
Eine weitere Standardeinstellung ist allerdings, dass MySQL NICHT auf dem externen Netzwerkinterface hoert, sondern nur auf Localhost.
Der Eintrag in der my.cnf dazu ist:
#bind-address 	= 127.0.0.1

Diesen muesstest du auf die IP des Netzwerkadapters aendern (oder 0.0.0.0, dann sind alle Netzwerkinterfaces erlaubt) und natuerlich die Raute (#) am Anfang entfernen, damit der Eintrag ueberhaupt wirksam ist.
Nach einem Neustart von MySQL sollte der Zugriff nun funktionieren, sofern die GRANTs richtig gesetzt sind.


Nein. Aber was fuer Leute, die auch mal die Manuals fuer die eingesetzte Software lesen :wink:

Hallo Sturmovik
Die Lösung des Problemes mit dem Verbindungsaufbau war genau eben der, das in der 'my.cnf' hinter bind 127.0.0.1 gestanden ist. Durch ändern auf 0.0.0.0 konnte ich die Verbindung zu phpmyadmin herstellen.
Nur das schwierige war, für einen Neuling erst einmal herauszufinden wo sich die Datei befindet. Auf meinem Rechner aufjedenfall nicht. ;-)
Also wieder mal google fragen. Herausfinden das ReadyNAS mit dem Betriebssystem Linux arbeitet. PUTTY installieren und SSH Anwendung auf der NAS zulassen. Anmelden auf der ReadyNAS und einen Editor 'MC' installieren. Datei 'my.cnf' finden und ändern.
Puhh..... geschafft.
Bezüglich Benutzer der Datenbank und Sicherheit.
Benutzer: Ich musste einen neuen Benutzer erstellen damit ich überhaupt etwas in die Datenbank schreiben konnte.
Eingefügtes Bild

Ist es wie Du schreibst 'Fahrlässig' sich mit 'root' an der Datenbank anzumelden? Da ich der einzige bin der zugang hat und keine Verbindung ins www besteht.
Was würdet Ihr mir empfehlen?
Die Datenbank wird sowieso niemals jemand anderes benutzen ausser ich selber.
Gruß Gebhard
0

#41 Mitglied ist offline   Gispelmob 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.591
  • Beigetreten: 14. August 15
  • Reputation: 392

geschrieben 03. September 2018 - 11:45

Beitrag anzeigenZitat (Typhoon76: 03. September 2018 - 10:27)

Die Lösung des Problemes mit dem Verbindungsaufbau war genau eben der, das in der 'my.cnf' hinter bind 127.0.0.1 gestanden ist. Durch ändern auf 0.0.0.0 konnte ich die Verbindung zu phpmyadmin herstellen.

bind 127.0.0.1 macht genau das was es soll, es bindet den Server an den lokalen PC auf dem der Server läuft (in dem Fall das NAS) und lässt keine Verbindung von außen zu. Wenn das auf 0.0.0.0 steht, bedeutet das das soviel wie dass die Bindung abgeschaltet ist. Was dazu führt, dass der Server nun in deinem ganzen Netzwerk frei verfügbar wurde.

Beitrag anzeigenZitat (Typhoon76: 03. September 2018 - 10:27)

Da ich der einzige bin der zugang hat und keine Verbindung ins www besteht.

Es muss eine Verbindung bestehen, sonst könntest du hier nicht schreiben.^^ Wer in dein Netzwerk kommt, der kommt auch relativ leicht an deinen Server.

Was root betrifft, das ist ein admin Zugang. Der wird nur für Adminaufgaben genutzt. Es reichen aus 2 Admin (root) Accounts. Einer zum lokalen anmelden auf dem Recher auf dem der Server läuft mit allen Rechten und ein 2. root account für den Zugriff aus dem Netzwerk, der dann schon nicht mehr alle Rechte haben sollte. 4 oder 5mal root ist schon ein paar mal zuviel.

Für Projekte empfielt sich immer einen neuen Account anzulegen, der nur die Rechte bekommt die das Projekt braucht. Um Verwirrungen zu vermeiden nutzt man dafür üblicherweise als Accoutnamen den Namen des Projektes. So wie phpmyadmin es gemacht hat.
AMD Ryzen 9 5950X, Asus ROG Strix X570-F Gaming, 32GB Corsair DDR4-3200, Asus Geforce GTX 3060 12GB, Creative Sound Blaster AE-7, 240GB SSD, 500GB SSD, 3x 1TB SSD, Win11 Home, 4x Acer G246HL Bbid, Logitech MX518 Gaming Mouse, Logitech G440 Mousepad, Logitech K120 Keyboard, Razer Tiamat 7.1 V2 Headset, Creative Inspire 5.1 5300 Soundsystem
0

#42 Mitglied ist offline   Typhoon76 

  • Gruppe: aktive Mitglieder
  • Beiträge: 22
  • Beigetreten: 29. August 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Lustenau

geschrieben 03. September 2018 - 16:48

Hallo Gispelmob

Also wenn ich das richtig verstanden habe ist es so, das wenn in der 'my.cnf' bind 0.0.0.0 angeführt ist jeder wo das nötig Know How hat sich bei mir auf der NAS an der Datenbank anmelden kann?

Was sollte in der 'my.cnf' hinter bind stehen damit es "sicher" ist?

Ich habe es schon mit der IP-Adresse von meinem PC probiert also 10.0.0.33. Damit bekomme ich wieder keine Verbindung zu phpmyadmin.


Gruß Gebhard
0

#43 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.776
  • Beigetreten: 10. Januar 08
  • Reputation: 445
  • Geschlecht:unbekannt
  • Wohnort:In Reichweite der Kaffeemaschine
  • Interessen:IT, Luftfahrt, historische Technik

geschrieben 03. September 2018 - 17:51

Beitrag anzeigenZitat (Typhoon76: 03. September 2018 - 16:48)

Hallo Gispelmob

Also wenn ich das richtig verstanden habe ist es so, das wenn in der 'my.cnf' bind 0.0.0.0 angeführt ist jeder wo das nötig Know How hat sich bei mir auf der NAS an der Datenbank anmelden kann?

Was sollte in der 'my.cnf' hinter bind stehen damit es "sicher" ist?

Ich habe es schon mit der IP-Adresse von meinem PC probiert also 10.0.0.33. Damit bekomme ich wieder keine Verbindung zu phpmyadmin.


Gruß Gebhard

Zum Eintrag in der my.cnf:
Da dein MySQL auf dem NAS laeuft, muesstest du hier die IP-Adresse des NAS eintragen.
Der Eintrag bedeutet, dass MySQL an dem Netzwerkadapter, der die IP-Adresse "besitzt" auf dem eingestellten Port (i.d.R. 3306) "lauscht", also auf Anfragen wartet.

In dem Fall kannst du phpMyAdmin aber vergessen, denn dieser will normalerweise ueber den loopback-Adapter (localhost/127.0.0.1) auf die Datenbank verbinden. Das muesstest du dann in der Config von phpMyAdmin anpassen (hier endet mein Support, fuer mich ist dieses Tool Teufelszeug, ergo setze ich es nicht ein.)

0.0.0.0 bedeutet, dass MySQL auf allen IP-Adressen lauscht, die der Rechner, auf dem MySQL laeuft, hat. In deinem Fall eben 10.0.0.3 (externes Interface) und 127.0.0.1 (loopback-Adapter bzw. Localhost)

Zum Thema Account-Sicherheit:
An der Datenbank anmelden kann man sich nur mit einem Account, der fuer die IP-Adresse bzw. den Hostnamen des Anfragenden Systems freigeschaltet ist.

Mit root-Accounts sollte man immer sparsam umgehen.
root@'%' bedeutet z.B. dass man sich von ueberall mit dem Account anmelden kann. Nicht gut.
Wenn du von deinem Rechner nicht per root auf die DB verbinden willst, dann reicht der bestehende root@localhost voellig aus.
So wie ich das sehe, machst du ja eh alles ueber diesen phpmyadmin, daher lass es einfach so wie es ist und erstelle nur die Accounts, die du brauchst und gib ihnen mittels GRANT die Rechte, die unbedingt notwendig sind. Auch hier besser sparsam sein.
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#44 Mitglied ist offline   Typhoon76 

  • Gruppe: aktive Mitglieder
  • Beiträge: 22
  • Beigetreten: 29. August 18
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Lustenau

geschrieben 04. September 2018 - 14:22

Hallo Sturmovik

Es funktioniert auch mit 'bind 10.0.0.3' in der 'my.cnf'

Danke Gebhard
0

Thema verteilen:


  • 3 Seiten +
  • 1
  • 2
  • 3

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0