Page 1 of 1

Zugriffsrecht auf Datenbank gewähren

Posted: Mon Dec 31, 2018 4:47 pm
by maksimilian
Hallo Ihr,

eine Datenbank(MariaDB) auf meinem Pi (mit stretch) soll von einem anderen Rechner aus geöffnet werden können. Lokal funktioniert das, aber remote noch nicht. Der Versuch, die IP des zugreifenden Rechners in die Datei /etc/mysql/my.cnf als bind-address einzutragen schlägt fehl. Dieser Eintrag verhindert sogar den Login in phpMyAdmin.

Wie muss ich vorgehen, um zur DB remote zugreifen zu können ?

maksimilian

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Mon Dec 31, 2018 5:50 pm
by fbe
Also bind-addressen sind die IP-Addressen des Servers, über die Verbindungen gestattet werden. Normalerweise localhost oder 127.0.0.1, um nur lokale Verbindungen zu gestatten. 0.0.0.0 gestattet Verbindungen über alle Netzwerkschnittstellen.

Außerdem musst Du Datenbankuser anlegen, deren "host" auf Deinen zugreifenden Rechner passt. root@localhost geht z.B. nicht.

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Mon Dec 31, 2018 6:55 pm
by maksimilian
Hallo spe,

Zitat:
"Also bind-addressen sind die IP-Addressen des Servers, über die Verbindungen gestattet werden."

Jetzt bin ich verwirrt. Ich muss doch die IP des Rechners verwenden, von welchem aus die Verbindung zur DB des raspi hergestellt werden soll?!

Ein Eintrag bind-address 0.0.0.0 oder * in my.cnf hilft auch nicht. Ich habe jetzt die Situation verschlimmbessert durch den Eintrag der IP Adresse in den DB-user, mit welchem der open auf die DB erfolgt. Jetzt wird sogar der lokale Login von phpMyAdmin auf dem Pi abgewiesen. Wie kann ich mir denn da helfen, außer die DB neu zu installieren ?

maksimilian

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Tue Jan 01, 2019 11:11 am
by smartifahrer
Datenbank UND User müssen das Recht haben, Remote auf die Datenbank zuzugreifen. So sollte z.B. root grundsätzlich kein remote Zugriff haben. Übrigens kannst du für MariaDB auch Anleitungen von MySql verwenden.

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Tue Jan 01, 2019 2:27 pm
by maksimilian
Wieso kann ich mich remote in phpMyAdmin mit einer Benutzerkennung einloggen, für welche in mysql.user als Host localhost eingetragen ist, und diese aber nicht in PHP für einen DB-open verwenden ?

Bitte genau, wie konfiguriere ich die beiden Rechte !

maksimilian

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Tue Jan 01, 2019 3:55 pm
by smartifahrer
Die Frage zu phpMyAdmin ist leicht zu beantworten.
phpMyAdmin läuft auf deinem Pi und greift somit lokal auf deine Datenbank zu. Was du im Browser siehst ist nur die Ausgabe von phpMyAdmin via PHP und Webserver, nicht die Anwendung selbst.
Da du phpMyAdmin installiert hast, kannst du darüber die Rechr leicht einstellen. Leider kann ich Dir das nicht beschreiben aber du solltest im Netz genügend Anleitungen finden.

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Tue Jan 01, 2019 4:06 pm
by smartifahrer
Die Rechtevergabe ist auch für mich nicht einfach da ich es zu selten mache. Ich mache folgendes:
phpMyAdmin bietet die Möglichkeit Benutzer und Datenbank gleichzeitig anzulegen. Dabei gewähre ich alle Rechte und schränke den Zugriff nicht auf einen Recher ein. Hat so für mich bisher funktioniert.

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Tue Jan 01, 2019 5:08 pm
by maksimilian
Hallo smartifahrer,

danke für eine Antworten. Zitat:
"Dabei gewähre ich alle Rechte und schränke den Zugriff nicht auf einen Recher ein."
Wäre schön, wenn Du Dich doch noch erinnern würdest, wie das dann wo formuliert wird :)

Offensichtlich gibt es (mindestens) zwei Stellen, wo Rechte definiert werden. Einmal in der DB mysql.user und dann in der Datei my.cnf (bind-address).

maksimilian

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Tue Jan 01, 2019 7:59 pm
by fbe
Ja. Ich benutze MySQL/MariaDB zwar eigentlich nicht mehr (habe überhaupt keine Datenbank am laufen...) aber kürzlich hab ich mich schon damit beschäftigt. Und da Wiederholung schult, bin ich noch mal durchgegangen. Das ganze mit Raspbian Stretch.

Installation MariaDB

Code: Select all

sudo apt install mariadb-server mariadb-client
Einrichtung eines alternativen Administrators:

Code: Select all

sudo mysql << _EOF_
create user 'admin'@'localhost' identified by 'SECRET';
grant all privileges on *.* to 'admin'@'localhost' with grant option;
_EOF_
(SECRET durch ein gutes Kennwort ersetzen)

Einrichtung eines Users, der sich aus dem lokalen Netzwerk (192.168.*.*) anmelden kann.
Erst mal als Administrator anmelden:

Code: Select all

pi@headless-pi:~ $ mysql -uadmin -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.37-MariaDB-0+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>create user 'gast'@'192.168.%' identified by 'SECRET';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye
Zulassen von Verbindungen aus dem Netzwerk

Code: Select all

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Hier in die Zeile

Code: Select all

bind-address           = 127.0.0.1
ersetzen durch

Code: Select all

bind-address           = 0.0.0.0
Und dann den Datenbankserver neustarten

Code: Select all

sudo systemctl restart mariadb
Ich habe auf meinem Windows PC noch eine XAMPP-Installation rumgammeln und hatte keine Schwierigkeiten mit:

Code: Select all

C:\lokal\xampp\mysql\bin\mysql -ugast -h192.168.2.113 -p
ein Login hinzubekommen (192.168.2.113 ist die IP-Adresse meines Raspberry-Pi).
Der "Gast" hat natürlich sonst erst mal keine Rechte, die muss man zusätzlich gewähren.

Bitte fummel nicht an mysql.user rum.

Und wenn ich noch einen Rat loswerden darf (nicht nur an Dich), Finger weg vom root-Datenbankuser. Aber alle Welt außer mir führt vor, wie man dem root-User unter Debian Stretch ein Kennwort verpasst. Daher muss ich mich wohl selber für verrückt erklären...

Re: Zugriffsrecht auf Datenbank gewähren

Posted: Wed Jan 02, 2019 2:14 pm
by maksimilian
Danke fbe für Deine ausführliche Darstellung. Die mahnenden Worte nehme ich Dir nicht übel :) Wie an anderer Stelle schon erwähnt, habe ich das Problem gelöst. Möglicherweise hat dazu die Neuinstallation von MariaDB beigetragen. Einrichten eines neuen Benutzers in mysql.user mit Host=% und Eintrag in my.cnf bind-address=0.0.0.0

maksimilian