andyah
Goto Top

MySQL unter OpenSuse - mit Workbench auf Datenbank zugreifen nicht möglich

Hi NG,

beim Versuch mit MySQL-Workbench auf einen MySQL (Mariadb) Server zuzugreifen erhielt ich folgende Fehlermeldung:

your connection attempt failed for user 'root' from your computer host to server at 'IP-Adresse'
can't connect to mysql Server on 'IP-Adresse'

Der MySQL-Server läuft auf Opensuse 12.3 unter einer virtuellen Maschine mit VirtualBox. Die Netzwerkschnittstelle ist auf Netzwerkbrüche eingestellt. In die My.cnf habe ich den Eintrag 'bind-address = Server IP' eingetragen. Vom Client (Win 8.1 Pro) kann ich den Server anpingen.

Wo ist mein Problem?

Gruß
Andy

Content-Key: 224861

Url: https://administrator.de/contentid/224861

Printed on: April 24, 2024 at 05:04 o'clock

Member: Cthluhu
Cthluhu Dec 18, 2013 at 14:57:45 (UTC)
Goto Top
Hi,

Deine Problem kann an vielen Orten liegen. Hier mal ein paar Anregungen:
  • Schau mal mit
    netstat -tulpen
    auf dem sql-host ob tatsächlich für mariaDB ein Port offen ist.
  • Firewalls?
  • Dein Problem könnten auch bei den Zugriffsrechten liegen. IMHO darf root nicht per default von überall auf die Datenbanken zugreifen, sondern muss für jeden Host extra freigeschaltet werden.

mfg

Cthluhu
Member: AndyAh
AndyAh Dec 19, 2013 at 09:58:15 (UTC)
Goto Top
Hi,

ich kann auf der lokalen Maschine nicht einmal mit

mysqladmin -u root -p password "WUNSCHPASSWORT"

einen User anlegen.

Beim Veruch bekomme ich die Fehlermeldung:

connect to Server at localhost failed
Access denied for user root@localhost (using password YES)

Der Port ist auf beiden Firewalls geöffnet.

Gruß
Andy
Member: Cthluhu
Cthluhu Dec 19, 2013 at 11:01:44 (UTC)
Goto Top
Zitat von @AndyAh:
ich kann auf der lokalen Maschine nicht einmal mit

mysqladmin -u root -p password "WUNSCHPASSWORT"

einen User anlegen.
Damit legt man auch keinen user an. Jetzt mal ein bisschen debuggen: Für mal folgende Befehle am Server als root aus:
netstat -tulpen
zeigt an welche ports von welchen Programm verwenden werden. Da sollte mysql irgendwo in der Liste auftauchen.
mysql -N -B -e "show databases;"  
logt sich als root ein (hat default kein passwort) und versucht die eine Liste aller vorhandenen Datenbanken zu erstellen.
ps aux | grep mysql
zeigt an mit welchen Paramtern der sql server gestartet wurde. Da sollten dann infos über verwendete Ports und Sockets drin sen.
cat /var/log/mysql/mysqld.log
zeigt das log des mysql server an.

mfg

Cthluhu
Member: AndyAh
AndyAh Dec 19, 2013 at 13:42:00 (UTC)
Goto Top
Zitat von @Cthluhu:

> Zitat von @AndyAh:
> ich kann auf der lokalen Maschine nicht einmal mit
>
> mysqladmin -u root -p password "WUNSCHPASSWORT"
>
> einen User anlegen.
Damit legt man auch keinen user an. Jetzt mal ein bisschen debuggen: Für mal folgende Befehle am Server als root aus:
netstat -tulpen
zeigt an welche ports von welchen Programm verwenden werden. Da sollte mysql irgendwo in
der Liste auftauchen.

tut es

mysql -N -B -e "show databases;"  
logt sich als root ein (hat default kein passwort) und
versucht die eine Liste aller vorhandenen Datenbanken zu erstellen.

es werden alle Default-Datenbanken angezeigt.

ps aux | grep mysql
zeigt an mit welchen Paramtern der sql server gestartet wurde. Da sollten dann infos
über verwendete Ports und Sockets drin sen.

Port liegt auf 3306 und Sockets aud /var/run/mysql/mysql.sock

cat /var/log/mysql/mysqld.log
zeigt das log des mysql server an.

es wird eine Warnung angezeigt: Ip-Address '192.168.XX.XX' (Adresse des Win 8 Rechners) could not be resolved: Name or Service not known


mfg

Cthluhu
Member: AndyAh
AndyAh Dec 19, 2013 at 13:44:33 (UTC)
Goto Top
Hi,

Zitat von @AndyAh:

> Zitat von @Cthluhu:
>
> > Zitat von @AndyAh:
> > ich kann auf der lokalen Maschine nicht einmal mit
> >
> > mysqladmin -u root -p password "WUNSCHPASSWORT"
> >
> > einen User anlegen.
> Damit legt man auch keinen user an. Jetzt mal ein bisschen debuggen: Für mal folgende Befehle am Server als root aus:
>
netstat -tulpen
zeigt an welche ports von welchen Programm verwenden werden. Da sollte mysql
irgendwo in
> der Liste auftauchen.

tut es

>
mysql -N -B -e "show databases;"  
logt sich als root ein (hat default kein passwort) und
> versucht die eine Liste aller vorhandenen Datenbanken zu erstellen.

es werden alle Default-Datenbanken angezeigt.

>
ps aux | grep mysql
zeigt an mit welchen Paramtern der sql server gestartet wurde. Da sollten dann
infos
> über verwendete Ports und Sockets drin sen.

Port liegt auf 3306 und Sockets auf /var/run/mysql/mysql.sock

>
cat /var/log/mysql/mysqld.log
zeigt das log des mysql server an.

es wird eine Warnung angezeigt: Ip-Address '192.168.XX.XX' (Adresse des Win 8 Rechners) could not be resolved: Name or Service not known

>
> mfg
>
> Cthluhu

Gruß
Andy
Member: Cthluhu
Cthluhu Dec 19, 2013 updated at 14:20:40 (UTC)
Goto Top
Hi,

Ok auf dem ersten Blick sieht das gut aus. Jetzt können wir uns mal die Berechtigungen anschauen:
mysql -B -N $@ -e "SELECT DISTINCT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') AS query FROM mysql.user" | \  
mysql $@ | sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}'  
Quelle: http://serverfault.com/questions/8860/how-can-i-export-the-privileges-f ...

Dabei sollte eine Zeile auftauchen ala
GRANT ALL PRIVILEGES ON *.* 'user'@'host' IDENTIFIED BY PASSWORD '*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
wobei 'user' der Benutzername ist mit dem sich Mysql Workbench verbindet, und 'host' dein Windows Client mit dem du dich verbinden willst.

mfg

Cthluhu
Member: AndyAh
AndyAh Dec 20, 2013 updated at 09:07:51 (UTC)
Goto Top
Hi,

ich habe den Befehl so eingegeben:

Ausgabe:
## Grants for root@127.0.0.1 ##
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;

## Grants for root@::1 ##
GRANT ALL PRIVILEGES ON *.* TO 'root'@'::1' WITH GRANT OPTION;

## Grants for @server01.site ##
GRANT USAGE ON *.* TO ''@'server01.site';

## Grants for root@server01.site ##
GRANT ALL PRIVILEGES ON *.* TO 'root'@'server01.site' WITH GRANT OPTION;

## Grants for @6649 ##
GRANT USAGE ON *.* TO ''@'localhost';

## Grants for root@localhost ##
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION;

über die Loopback-Adresse funktioniert eine Connection, mit der ich aber nichts anfangen kann.Mit der eigentlichen Server-IP nicht.

Gruß
Andy
Member: Cthluhu
Cthluhu Dec 20, 2013 updated at 09:20:07 (UTC)
Goto Top
Zitat von @AndyAh:
über die Loopback-Adresse funktioniert eine Connection, mit der ich aber nichts anfangen kann.Mit der eigentlichen Server-IP
nicht.
Ok, das sagt uns, dass der Server grundsätzlich nix hat, aber dir die Rechte fehlen um vom Client aus zuzugreifen. Grundsätzlich werden (wie obige Ausgabe schon zeigt) die Rechte immer für User@Host vergeben. D.h. root von localhost kann andere Berechtigungen/Passwort haben als root vom client.
D.h. du musst jetzt nur einen benutzer@client anlegen und dem die passenden Rechte geben. Anleitung gibts dafür viele im Netz. Z.B. hier: http://dev.mysql.com/doc/refman/5.1/de/adding-users.html

mfg

Cthluhu
Member: Cthluhu
Cthluhu Dec 28, 2013 at 00:34:46 (UTC)
Goto Top
Hi Andy,

Du hast den Beitrag als gelöst markiert. Sehr gut! Könntest du auch bitte noch die tatsächliche Lösung posten?
Falls mal jemand ein ähnliches Problem hat wird derjenige sich sicher drüber freuen.

mfg

Cthluhu
Mitglied: 108012
108012 Dec 28, 2013 at 00:42:25 (UTC)
Goto Top
Wo ist mein Problem?
So wie @Cthluhu es schon gesagt hat schreib mal lieber Deine Lösung!

Gruß
Dobby
Member: AndyAh
AndyAh Dec 28, 2013 at 08:56:19 (UTC)
Goto Top
Hi,

Die Lösung:

1. OpenSuse den Abschiedskuss geben!
2. auf Ubuntu Server umsteigen!

Dann klappt es auch mit MySQL (MartiaDB).

Gruß
Andy