SQL von Außen erreichbar machen

Hallo @ All,

Also ich habe dein Problem mit der SQL Datenbank.

Was ich will!:

  • Die Datenbank soll von jedem Host Weltweit erreichbar sein.

Das wars schon.

Was ich gemacht habe:

  • Neunen User angelegt und von jedem Host eingestellt.

Das wars auch schon.

Also kann mir einer von euch sagen wie ich das hinbekomme?
Der Starto Mitarbeiter sagt zu mir das dies nicht zu seinem Aufgabengebiet gehöhrt.

Wäre echt super wenn mir jemand helfen könnte!!!

In diesem Fall bin ich Leihe und bitte um verständliche Antworten.

Dank im Vorraus

Sven

Hallo Sven,

Also ich habe dein Problem mit der SQL Datenbank.

MySQL?

  • Die Datenbank soll von jedem Host Weltweit erreichbar sein.

Das willst Du nicht wirklich :open_mouth:
Aber gut, auf deine Verantwortung. Ich nehme jetzt einfach mal an, daß Du deine MySQL-DB über phpmyadmin verwaltest. Das machst Du auf, wählst die betreffende Datenbank aus, klickst „Rechte“ an, dort wählst Du den Benutzer an, der die DB von überall her erreichen soll, dort ganz rechts auf das Icon „Rechte ändern“ (kleine Figur mit Bleistift). Es öffnet sich ein neues Fenster „Rechte ändern“, dort ziemlich unten der Bereich „Logininformation ändern / Benutzer kopieren“. Dort im Auswahlfeld „Host“ „jeder Host“ auswählen -> „OK“. Zurück zum „Rechte-Fenster“ -> „Die Rechte neu laden“ anklicken -> fertig.
Aber: funktioniert nur, wenn der Provider das zulässt.

Was ich gemacht habe:

  • Neunen User angelegt und von jedem Host eingestellt.
    Das wars auch schon.

Ich sollte erstmal alles lesen :wink: Hast doch schon selbst die Antwort gefunden, wo ist also noch das Problem? Wenn es bei dir so nicht funktioniert, würde ich drauf tippen, daß Strato nur „localhost“ zulässt (sehr wahrscheinlich), bzw. daß Du nicht „Rechte neu einlesen“ gemacht hast.

Viele Grüße
Sven

Hallo Marvin,

Danke für die Antwort!

den oberen Teil habe ich schon gemacht.

nun zum Unteren:

  • VServer bei Strato
  • Die sagen das ich mich mit SSH auf den „My“ SQL verbinden soll und dort muss ich die Rechte ändern. für mich Bahnhof???

Ich habe einen Benutzer angelegt und diesem die richtigen Rechte vergeben, der Strato Mitarbeiter hat zu mir gesagt das wäre nur die halbe Miete, ich soll doch bitte in der MySQL Doku von 5.1 im Punkt 5.5 alles lesen.

Gesagt geschehen und ich komme trotzdem nicht weiter.

Dann habe ich das hier gefunden:

Hi !

Da gibt es noch viele weitere Sicherheitsfeatures, die den Zugriff auf MySQL von außen gottlob verhindern, z.B.

in der /etc/my.cnf

skip-networking
bind-address = 127.0.0.1

Das könntest du jeweils noch überprüfen.

Dahinter ist eine Betrag der Aussagt das ihm das geholfen hat.

Mir nicht :frowning:

wenn ich auf mein Server per SSH verbinde und das eingeben:

/etc/my.cnf

Sagt er zu mir keine Berechtigung

Der Strato Support (Technisch) sagt aber zu mir das das auf jeden fall geht, sagt mir aber nicht wie. (könnte ausrasten)

Ich werde immer nur auf die Doku hingewiesen.

Wie schon gesagt das einzigste was ich gemacht habe war einen neuen User anzulegen mit den Rechten, danach Rechte neu einlesen.

Mehr habe ich noch nicht hinbekommen.

ich nochmal
Hallo Marvin ich nochmal

Also im PHPMYADMIN steht jetz der Benutzer drin:

Benutzer: Sven
Host: %
Kennwort: JA
Globalerechte: All Privileges
Grant: JA

Ich verstehs nicht, bei andern Strato Kunden gehts doch och.
!!!So en scheiß!!!

Hallo Sven,

  • VServer bei Strato
  • Die sagen das ich mich mit SSH auf den „My“ SQL verbinden
    soll und dort muss ich die Rechte ändern. für mich
    Bahnhof???

Eigentlich solltest Du ja ein Programm haben, mit dem Du deinen VServer administrieren kannst. Welches das ist weiss ich nicht, deshalb kann ich nichts dazu sagen.
Aber ein geeignetes Werkzeug wäre z.B. putty
http://www.putty.org/

Da gibt es noch viele weitere Sicherheitsfeatures, die den Zugriff auf MySQL von außen gottlob verhindern, z.B.
in der /etc/my.cnf

skip-networking
bind-address = 127.0.0.1
Das könntest du jeweils noch überprüfen.

wenn ich auf mein Server per SSH verbinde und das eingeben:
/etc/my.cnf
Sagt er zu mir keine Berechtigung

Nein, Du musst die Datei editieren. Nimm einen Editor und öffne die Datei my.cnf
Dort suchst Du eine Zeile, in der skip-networking steht. Das musst Du auskommentieren, d.h. die Zeile sieht dann so aus:

#skip-networking

Dann gibt es noch die Zeile mit bind-address 127.0.0.1, diese gestattet den Zugriff nur von localhost aus, müsste also auch so geändert werden:

bind-address 0.0.0.0

Noch genauer wird das hier erklärt:
http://www.huschi.net/12_123_de.html

Wie schon gesagt das einzigste was ich gemacht habe war einen
neuen User anzulegen mit den Rechten, danach Rechte neu
einlesen.

Das ist schon richtig, aber wie gesagt, muss Du eben noch die my.cnf wie oben beschrieben ändern.

Viele Grüße
Marvin

Hy,

Vielen Dank für deinen Tipp!!!

ich probiere jetzt schon seit Stunden doch leider fehlt mir einfach das wissen dazu.

könnstest du mir das schritt für schritt erklären?

ich weiß noch nicht mal ob ich einen Editor habe???

ich weiß auch nicht wie ich den Syntax schreiben soll damit ich die datei Editieren kann.

Über all im internet steht „ja man soll die zwei sachen ändern“ aber leider gottes ist nirgends geschrieben wie(ich finds zumindest nicht)

Die MySQL Doku ist ja gut und schön aber die hat mir auch nicht geholfen.

Ich wäre dir sehr dankbar wenn du mir das erklärst wie genau ich das mache.

Ich verbinde mich mit Putty auf den Server, dann log ich mich in den SQL ein und mehr weiß ich nicht, außer eine Datenbank anlegen, Tabellen anlegen mehr kann ich über die Console leider nicht.

Sprich bitte fang bei dem an:

mysql==>

wäre wirklich sehr nett von dir.

„Ich entschuldige mich im vorraus für schreibfehler ist schon spät“

lg Sven (gute nacht)

Hallo Sven,

könnstest du mir das schritt für schritt erklären?

im Prinzip schon, aber …

ich weiß noch nicht mal ob ich einen Editor habe???

wenn Du nicht mal weisst, ob Du einen Editor hast, ist es etwas schwierig. Da müsste ich bei Null anfangen und könnte fast ein ganzes Buch schreiben :wink:
Allerdings habe ich jetzt auch Zweifel, ob Du das, was Du möchtest, tatsächlich brauchst. Vielleicht verwechselst Du auch was, kann sein. Anfragen an deine Datenbank können nämlich auch so aus aller Welt gestellt werden, von jedem beliebigen Host aus, da musst Du gar nichts umstellen. Das standardmäßige localhost bedeutet doch nur, daß alles auf dem einen Rechner passiert, aber Anfragen an deine Datenbank kann jeder über ein entsprechendes Webinterface aus aller Welt stellen und könnte über seinen Browser dann auch die Ergebnisse sehen.

ich weiß auch nicht wie ich den Syntax schreiben soll damit
ich die datei Editieren kann.

Wie gesagt, ich glaube langsam, daß Du das alles gar nicht brauchst, aber gut. Ich habe keine Ahnung, was Du alles hast und wie das bei Strato läuft, deshalb zeige ich dir einen Weg, der vielleicht etwas umständlicher ist, aber auf jeden Fall funktionieren sollte.

  1. Besorge dir das Programm WinSCP
    http://winscp.net/eng/docs/lang:de

  2. Rufe es auf und trage unter „Sitzung“ den Rechnername, die Portnummer (sollte 22 sein), deinen Username und das Kennwort ein. Das ist alles fast wie bei Putty. Als Protokoll solltest Du SFTP wählen.

  3. Button „Anmelden“

  4. Es öffnet sich ein zweigeteiltes Fenster (ähnlich dem alten Norton Commander oder wie der Windowsexplorer). Links sind die Dateien auf deinem Rechner, rechts die Dateien auf deinem vServer.

  5. Gehe auf die rechte Seite. Dort suche die Datei my.cnf

  6. Sieh zuerst nach, ob sie in deinem Heimatverzeichnis liegt, da heisst sie aber .my.cnf (mit einem Punkt am Anfang)
    Dein Heimatverzeichnis erreichst Du mit WinSCP durch gleichzeitiges Drücken von CTRL+H

  7. Wenn sich dort keine Datei .my.cnf befindet, kannst Du auch im Verzeichnis /etc nach ihr suchen, also nach /etc/my.cnf

  8. Diese Datei wählst Du aus. Markieren -> rechte Maustaste -> Bearbeiten

  9. Es öffnet sich dein Editor mit der Datei. Du suchst dort eine Zeile, in der

    skip-networking

steht. Vor das Wort skip-networking schreibst Du dieses Zeichen: #, die Zeile sieht jetzt so aus:

#skip-networking

Wenn skip-networking gar nicht in der Datei steht, ist es gut, da musst Du auch nichts verändern.
10. Dann suchst Du eine Zeile mit bind-address. Die Zeile heisst entweder

bind-address 127.0.0.0

oder

bind-address localhost

Diese Zeile überschreibst Du mit

bind-address 0.0.0.0

und speicherst alles ab.

Über all im internet steht „ja man soll die zwei sachen
ändern“ aber leider gottes ist nirgends geschrieben wie

Das sind diese zwei Sachen. Ich hoffe, jetzt weisst Du, wie Du das änderst?
Aber ich glaube immer noch, daß Du das nicht wirklich brauchst. Ich denke, Du brauchst eher eine Webseite (selbst geschrieben oder schon fertig) von der aus deine Datenbank abgefragt werden kann. Das ginge auch ohne das Editieren der my.cnf
Wenn Du trotzdem noch Fragen hast, dann stelle sie noch. Aber Du wirst verstehen, daß ich dir die Grundlagen hier nicht beibringen kann. Das wäre wirklich zu viel.

Viele Grüße
Marvin

Hallo Marvin,

sorry das ich jetzt erst wieder was schreibe musste mal ein paar bits im Kopf neu ordnen.

Also ich habe es nun hinbekommen das die Datenbank erreichbar ist.

sprich ich bin mit „Telnet www.sms-prog.de 3306“

dort kommt nun enlich das gewünschte Wirwar von zeichen. :smile:

Skip Networking war schon auskommentiert!!!

eine Firewall hat mir den MySQL Server blockiert.

nun habe ich allergings ein Weiteres Problem ich habe leider nur MS VS VB.NET um auf die Datenbank zuzugreifen leider sagt er mir aber das er keine Verbindung aufbauen kann.

Nun damit du verstehst warum ich das brauche:

ich habe eine Software mit VB.Net geschrieben die auf diese Datenbank angewiesen ist.

Somit komme ich über eine offene Base nicht drum rum.

Also wie gesagt mit Telnet bekomme ich eine Verbindung.

aber mit MS VS nicht. :frowning:

Laut einem Portscanner ist der Port 3306 offen.

also muss es noch an der MySQL liegen hast du dafür Ideen.

Hallo Sven,

fangen wir doch mal von vorne an: Was bitte verstehst Du unter die Datenbank soll von überall erreichbar sein?
Ich glaube kaum, dass Du eine Datenbank immer per SQL direkt bedienen willst (besonders wenn nicht nur Du sondern auch andere darauf zugreifen sollen/wollen). In Normalfall schreibt man also ein Webformular (entweder eine Scriptsprache wie PHP und/oder Perl) und bindet die Datenbank an. Dieses Formular ist dann weltweit verfügbar.

Ist es das, was Du eigentlich erreichen willst?

MfG Georg V.

Hallo Sven,

ich habe leider
nur MS VS VB.NET um auf die Datenbank zuzugreifen

Von VB.NET habe ich keine Ahnung. Ich weiss also nicht, wie Du mit VB.NET auf eine MySQL-Datenbank zugreifen kannst :frowning:
Zumindest habe ich ein kleines Tutorial gefunden, das scheint mir ganz brauchbar zu sein:
http://www.vbmysql.com/articles/vbnet-mysql-tutorial…
Aber ich will nochmals wiederholen, was ich schon ein einige Male gesagt habe, ich glaube immer mehr, daß die ganze Aktion „von jedem Host auf die DB zugreifen“ so nicht notwendig ist. Lies auch noch mal den Beitrag von Georg, der hat es sehr schön auf den Punkt gebracht.

Viele Grüße
Marvin

hallo ihr beiden :smile:

Also Georg und Marvin folgende Situation:

Es gibt eine Windows Software mit der man SMS verschicken kann.
(Diese schreibe ich gerade)

Die Daten wie z.B. Zugangsdaten sind in einer Tabelle in einem MySQL Server.

Die Software muss mit der Datenbank kommunizieren, daran führt kein weg vorbei.

Die Software wiederum ist auf verschiedenen PC´s installiert die verschiedenen IP-Adressen werden täglich geändert.

Die Datenbank hat einen User, der nur bestimmte Rechte, an einer bestimmten Tabelle hat.

Dieser User kann von jedem Host aus auf die Datenbank zugreifen.

Ich hoffe Ihr wisst jetzt was ich erreichen will.

Nun was ich gemacht habe mit Hilfe von Marvin:

Die Datenbank ist jetzt erreichbar, der Port 3306 für den MySQL Server ist nun offen. wurde von einer Firewall gesperrt)

Leider kann ich mich nicht über meinen SQL Client auf die Datenbank verbinden, ich weiß aber nicht warum???

(Der folgende Teil ist nur zur Probe, die Datenbank Einstellungen mache ich in PHPmyAdmin)

Ich habe im MySQL Server eine Datenbank(SvenBase) angelegt, auf diese haben zwei User zugriff:

  • admin (ist ja klar)
  • svenprog (das wäre dann meine Software)

Die Tabelle zu „Benutzer mit Zugriff auf „SvenBase““

Benutzer |Host |Typ |Rechte |Grant
admin |localhost |global |ALL PRIVILEGES |Ja
svenprog |% |global |ALL PRIVILEGES |Ja

Auszug aus der Datenbank „MYSQL“ Tabelle „USER“

Hier der User „Svenprog“ (hat zum Probieren halt mal alle Rechte GRANT)

HOST = %
User = Svenprog
Password = XXXXX

So nun zur Übersicht:

  • Der Port 3306 ist offen
  • wenn ich in die Eingabeaufforderung von Windows XP gehe (cmd) und dann „telnet www.sms-prog.de 3306“ eingebe, kommen jetzt eine unsinnige Zeichenfolgen, vorher kam das er keine Verbindung aufbauen konnte. Sprich ich kann mich jetzt Verbinden.
  • Da in der my.cnf das Skip-Networking schon auskommentiert war habe ich daran nichts weiter verändert. Hier die Datei:

Example MySQL config file for medium systems.

This is for a system with little memory (32M - 64M) where MySQL plays

an important part, or systems up to 128M where MySQL is used together with

other programs (such as a web server)

You can copy this file to

/etc/my.cnf to set global options,

mysql-data-dir/my.cnf to set server-specific options (in this

installation this directory is /var/lib/mysql) or

~/.my.cnf to set user-specific options.

In this file, you can use all long options that a program supports.

If you want to know which options a program supports, run the program

with the „–help“ option.

The following options will be passed to all MySQL clients

[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock

Here follows entries for some specific programs

The MySQL server

[mysqld]
set-variable=local-infile=0
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

Don’t listen on a TCP/IP port at all. This can be a security enhancement,

if all processes that need to connect to mysqld run on the same host.

All interaction with mysqld must be made via Unix sockets or named pipes.

Note that using this option without enabling named pipes on Windows

(via the „enable-named-pipe“ option) will render mysqld useless!

#skip-networking

Replication Master Server (default)

binary logging is required for replication

log-bin=mysql-bin

required unique id between 1 and 2^32 - 1

defaults to 1 if master-host is not set

but will not function as a master if omitted

server-id = 1

Replication Slave (comment out master section to use this)

To configure this host as a replication slave, you can choose between

two methods :

1) Use the CHANGE MASTER TO command (fully described in our manual) -

the syntax is:

CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,

MASTER_USER=, MASTER_PASSWORD= ;

where you replace , , by quoted strings and

by the master’s port number (3306 by default).

Example:

CHANGE MASTER TO MASTER_HOST=‚125.564.12.1‘, MASTER_PORT=3306,

MASTER_USER=‚joe‘, MASTER_PASSWORD=‚secret‘;

OR

2) Set the variables below. However, in case you choose this method, then

start replication for the first time (even unsuccessfully, for example

if you mistyped the password in master-password and the slave fails to

connect), the slave will create a master.info file, and any later

change in this file to the variables’ values below will be ignored and

overridden by the content of the master.info file, unless you shutdown

the slave server, delete master.info and restart the slaver server.

For that reason, you may want to leave the lines below untouched

(commented) and instead use CHANGE MASTER TO (see above)

required unique id between 2 and 2^32 - 1

(and different from the master)

defaults to 2 if master-host is set

but will not function as a slave if omitted

#server-id = 2

The replication master for this slave - required

#master-host =

The username the slave will use for authentication when connecting

to the master - required

#master-user =

The password the slave will authenticate with when connecting to

the master - required

#master-password =

The port the master is listening on.

optional - defaults to 3306

#master-port =

binary logging - not required for slaves, but recommended

#log-bin=mysql-bin

Point the following paths to different dedicated disks

#tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname

Uncomment the following if you are using BDB tables

#bdb_cache_size = 4M
#bdb_max_lock = 10000

Uncomment the following if you are using InnoDB tables

#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/

You can set …_buffer_pool_size up to 50 - 80 %

of RAM but beware of setting memory usage too high

#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M

Set …_log_file_size to 25 % of buffer pool size

#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

The safe_mysqld script

skip-bdb

set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2
[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

skip-bdb

set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2
[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

Remove the next comment character if you are not familiar with SQL

#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

Ich habe eine Benutzer in PHPmyadmin angelegt der als Host „%“ drin stehen hat sprich, „Jeder Host“.

Was fehlt mir jetzt noch?

wenn euch was auffällt dann bitte sagen!

Ich danke euch beiden erstmal für die Letzten Antworten.

Ich hoffe das ich jetzt klarmachen konnte was ich will bzw. brauche.

ng

Sven

Hallo Sven,

Leider kann ich mich nicht über meinen SQL Client auf die
Datenbank verbinden, ich weiß aber nicht warum???

Abgesehen von deiner langen Konfigurationsdatei, die ich auch erst mal in Ruhe studieren muss, poste doch mal die Fehlerausgabe von MySQL, wenn Du versuchst, dich vom Client aus einzuloggen. Steht in /var/log/mysql.err wenn Du das nicht verändert hast.

Viele Grüße
Marvin

Verfluchte scheiße noch mal, ich habs eben hinbekommen.

ULTRA MEGA GEIL :smile:

Nun fasse ich mal zusammen wie ich es mit Hilfe von euch geschaft habe:

Wie mache ich einen Zugriff auf eine MySQL Datenbank mit MS Visual Studio bzw. anderen Programmen.

vorgehens Weise:

  1. man erstellt eine Datenbank in phpmyadmin
  2. man erstellt einen User mit der Option „%“ für Host und vergibt die rechte.
  3. man ändert im Verzeichnis /etc/ die my.cnf folgender maßen:

Das einzigste was zu beachten ist:

Die Zeile „skip-networking“ muss auskommentiert werden in „#skip-networking

Falls es eine Zeile gibt mit dem Name „bind-address = 127.0.0.1“ kann man diese ebenfalls auskommentieren bzw. löschen.

Falls Sie nicht da ist ist das auch OK

  1. man starte den Mysql Server neu mit # ==> /etc/init.d/mysql restart
  2. man gehe in PHPmyAdmin und lade die Rechte neu
  3. man schaut mit einem Portscanner nach ob der Port 3306 offen ist, dies ist notwendig damit man mysql ansprechen kann.
  4. Unter Windows muss man sich erst eine neue Datenquelle einrichten, sprich man lädt den Treiber „mysql-connector-odbc-3.51.27-win32.msi“ herunter und installiert ihn.

man fügt eine neue Datenquelle hinzu.

Man probiert alles und es geht ui wunderbar :smile:

Ihr könnt euch nicht vorstellen wie Glücklich ich bin, das bringt mein Projekt einen meilen stein weiter, der Rest ist nur noch das was ich schon gemacht habe mal.

Das einzigste Problem könnte noch mit der Webseite haben aber da meld ich mich hier noch mal „im richtigen Forum“

!!!I LOVE THIS BOARD!!!

ich mach jetzt en fass Bier auf!!!

lg Sven

Und schon bin ich wieder Frustriert!!!

Ich habe Lese zugriff auf die Datenbank, aber keinen Schreibzugriff.

Der User „sven“ hat „All PRIVILEGES“ und „GRANT“

und trotzdem leider kein schreibzugriff.

VS sagt das die Tabelle „schreibgeschütz“ sei.

von PHPmyADMIN geht alles.

Ich habe im Inet was gefunden zum Thema sql_mode

Dort habe ich mit dem Befehl:

xx ==> SET sql_mode = ‚‘

alles raus gemacht und ein neustart probiert.

Nix immer noch kein schreibzugriff.

Hier mal die VARIABLEN:

mysql> SHOW VARIABLES;
±--------------------------------±---------------------------+
| Variable_name | Value |
±--------------------------------±---------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr/ |
| binlog_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
| completion_type | 0 |
| concurrent_insert | 1 |
| connect_timeout | 5 |
| datadir | /var/lib/mysql/ |
| date_format | %Y-%m-%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
| default_week_format | 0 |
| delay_key_write | ON |
| delayed_insert_limit | 100 |
| delayed_insert_timeout | 300 |
| delayed_queue_size | 1000 |
| div_precision_increment | 4 |
| engine_condition_pushdown | OFF |
| expire_logs_days | 0 |
| flush | OFF |
| flush_time | 0 |
| ft_boolean_syntax | + ->

Hallo Sven,

Ich habe Lese zugriff auf die Datenbank, aber keinen
Schreibzugriff.
Der User „sven“ hat „All PRIVILEGES“ und „GRANT“
und trotzdem leider kein schreibzugriff.

Mag sein, aber melde dich trotzdem mal als root (Administrator) bei MySQL an (lokal und durch Eingabe von mysql). Dann führe folgende Befehle aus:

USE mysql
SHOW GRANTS FOR 'sven'@'dein.host.name';

wobei Du natürlich dein.host.name durch den Hostnamen ersetzt, von dem aus Du extern auf die DB zugreifen willst. Poste mal die Ausgabe.

Viele Grüße
Marvin

Mit dem Host meinst du doch denn Computer von dem ich extern auf die Datenbank zugreife (der wechselt laufend die IP).

Deshalb hier das erste:

USE mysql

mysql> USE mysql
Database changed

zum zweiten:

SHOW GRANTS FOR ‚sven‘@‚dein.host.name‘

mysql> SHOW GRANTS FOR ‚sven‘@’%’
-> ;
±-------------------------------------------------------------------------------------------------------------------------------+
| Grants for sven@% |
±-------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO ‚sven‘@’%’ IDENTIFIED BY PASSWORD ‚*F9EA593E264AE0FFB9C4F5496F0177F2B95062B4‘ WITH GRANT OPTION |
±-------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Ich hoffe das so passt?

Sven

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Sven,

| Grants for sven@%
| GRANT ALL PRIVILEGES ON *.* TO ‚sven‘@’%’ IDENTIFIED BY
PASSWORD
Ich hoffe das so passt?

passt.
Man kann zwar auch noch den Zugriff auf einzelne Tabellen regeln, das glaube ich jetzt aber nicht daß Du das gemacht hast.
Mir fällt im Moment aber auch nichts weiter ein. Es könnte sein, daß es einfach an den Verbindungsparametern von VB.net liegt. Du musst da ja irgend einen Befehl absetzen um dich mit der DB zu verbinden. Sowas in der Art wie „connect(Datenbank, user, password…)“. Vielleicht fehlt da einfach ein Parameter, der sagt, daß dies nicht nur eine lesende, sondern auch eine schreibende Verbindung sein soll. Ist aber nur eine Vermutung, da ich keine Ahnung von VB.net habe.
Um das zu testen könntest Du ja ohne VB.net, direkt mit MySQL versuchen was in die DB zu schreiben. Loggst dich also wieder von extern als Sven in die betreffende DB und setzt ein INSERT ab. Wenn das unter MySQL funktioniert, weisst Du, daß Du an VB.net was drehen musst. Wenn aber direkt unter MySQL dabei eine Fehlermeldung kommt, von wegen schreibgeschützt, dann müssen wir weitersehen.
Außer einem Blick in die /var/log/mysql.err und eventuell in die /var/log/mysql.log fällt mir aber sonst auch nichts weiter ein.

Viele Grüße
Marvin