Page 1 of 2

Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 11:52
by micha854
Hallo,

ich bin neu und habe mir auf einem VPN mit Debian 9 Keyhelp erfolgreich installiert.

Benutzer und Datenbanken angelegt, soweit so gut. Doch gibt es die möglichkeit für alle Datenbanken eines Benutzers einen universellen Benutzer anzulegen?

Ich kenne es auf plesk zb.

Unter Konfiguration / Datenbank-Server habe ich schonmal die Option --> Individuelle Datenbank- / Benutzernamen gefunden

allerdings kann nur jeder DB nutzer 1x existieren....

Ich habe leider durch suchen im Forum, google etc. leider nichts zu diesem thema finden können und wäre dankbar wenn mir da geholfen werden kann

Lg
Micha

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 12:02
by Tobi
Die Datenbanken funktionieren benutzerübergreifend.

Kennt User A das DB Passwort von User B kann A auf die Inhalte in DB B zugreifen.

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 12:08
by micha854
Hallo, alles klar vielen dank

dann müsste folgendes so funktionieren (alle db_user haben dasselbe Password):

db_connect() {
// Zugangsdaten für die DB
$dbhost = 'localhost';
$dbuser = 'user_db1';
$dbpass = 'PASSWORD';
$dbname = 'user_db1';
......

SELECT * FROM data // zugriff auf user_db1

SELECT * FROM user_db2.data // zugriff auf user_db2

hoffe ich habe es richtig verstanden

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 13:13
by Tobi
Ja, sieht augenscheinlich erstmal gut aus.

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 16:15
by micha854
also wenn ich mich mit "user_db1" einlogge und folgenden mysql befehl ausführe:

SELECT * FROM user_db2.tabelle

bekomme ich leider keinen zugriff...

MySQL meldet:
#1142 - SELECT Befehl nicht erlaubt für Benutzer 'user_db2'@'localhost' auf Tabelle 'rechnungen'




-----------------------------------------------------------------------------------------------------------------------------
SELECT * FROM tabelle // funktioniert ---> daten aus "user_db1"
SELECT * FROM user_db1.tabelle // funktioniert ---> daten aus "user_db1"

SELECT * FROM user_db2.tabelle // FEHLER


was mache ich falsch ?

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 17:04
by Martin
Hallo,

dies ist so vollkommen korrekt. Jeder User hat entsprechend nur Zugriff auf seine Datenbank. Mehrere Webuser können aber für den Zugriff auf die Datenbank natürlich einen identischen Datenbanknutzer verwenden.

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 17:21
by micha854
ok evtl. ein kleines Missverständniss...

ich möchte folgendes erreichen:

ein kunde (example.com) erstellt 3 datenbanken (db1, db2, db3), alle datenbanken müssen ja laut panel unterschiedliche benutzer haben (also user1, user2 und user3)

wir bekomme ich es hin das ich mit einem user auf alle 3 dbs zugreifen kann ? ein universeller benutzer wie zb. in plesk ist ja anscheinend so nicht möglich ?

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 17:35
by Tobi
Ach so, sorry, da hatte ich vorhin nur flüchtig geschaut.
Du muss natürlich für Datenbank 2 die Zugangsdaten von DB 2 verwenden.

Aber du kannst mit Webuser 1 auf die DBS von User 2 zugreifen. Dein Skript musst du halt so anpassen, dass es mehrere Zugangsdaten verwalten kann.

Und du kannst keine Joins auf zwei unterschiedliche DBS machen. Immer nur eine pro Anfrage.

Re: Universelle Benutzer für Datenbanken ?

Posted: Fri 28. Jun 2019, 17:54
by micha854
Tobi wrote: Fri 28. Jun 2019, 17:35 Aber du kannst mit Webuser 1 auf die DBS von User 2 zugreifen. Dein Skript musst du halt so anpassen, dass es mehrere Zugangsdaten verwalten kann.
Okay dann wären das schonmal die zwei datenbank-verbindungen:

// MySQL-Connect-Daten
$db1_server = "localhost"; // Server
$db1_user = "user_1"; // Benutzer
$db1_pwd = "password"; // Passwort
$db1_name = "db_1"; // Datenbankname

// Verbindung herstellen, wenn nicht erfolgreich -> scrpt abbrechen
$db1 = @mysql_connect($db1_server, $db1_user, $db1_pwd) or die ("Konnte Verbindung zum MySQL-Server nicht herstellen!");
// Datenbank auswählen, wenn nicht erfolgreich -> Script abbrechen
@mysql_select_db($db1_name) or die ("Konnte Datenbank nicht finden!<br>" . mysql_error());

----------------------------------------------------------------------------------------------------------------------

$db2_server = "localhost"; // Server
$db2_user = "user_2"; // Benutzer
$db2_pwd = "password"; // Passwort
$db2_name = "db_2"; // Datenbankname

// Verbindung herstellen, wenn nicht erfolgreich -> scrpt abbrechen
$db2 = @mysql_connect($db2_server, $db2_user, $db2_pwd) or die ("Konnte Verbindung zum MySQL-Server nicht herstellen!");
// Datenbank auswählen, wenn nicht erfolgreich -> Script abbrechen
@mysql_select_db($db2_name) or die ("Konnte Datenbank nicht finden!<br>" . mysql_error());


$query = mysql_query("SELECT * FROM tabelle", $db1) // zugriff auf DB_1

$query = mysql_query("SELECT * FROM tabelle", $db2) // zugriff auf DB_2


Tobi wrote: Fri 28. Jun 2019, 17:35 Und du kannst keine Joins auf zwei unterschiedliche DBS machen. Immer nur eine pro Anfrage.

wie siehts denn aus mit UNION ALL ?

SELECT * FROM DB_1 UNION ALL SELECT * FROM DB_2 WHERE......


Am liebsten wäre mir natürlich ein universeller Benutzer welcher eben zugriff auf alle Datenbanken erhält (Innerhalb eines Panel Benutzers natürlich)

das muss doch machbar sein ?

EDIT:

habe nun in der SSH console folgenden Befehl ausgeführt:

GRANT ALL PRIVILEGES ON *.* TO 'superuser'@'localhost' WITH GRANT OPTION;



superuser hat nun root rechte und zugriff auf alle datenbanken,

kann ich das eingrenzen? auf nur die datenbanken des zugehörigem benutzerkonto welches in KeyHelp für den benutzer angelegt wurde?


EDIT:

Thrend kann geschlossen werden ! Lösungsansatz anhand eines Beispiels:

in KeyHelp legt der Admin User einen neuen Kunden an, der Kunde legt sich 3 Datenbanken (db_1, db_2, db_3) an

jede Datenbank hat einen individuellen Benutzer, jede Datenbank ist individuell.

1) per SSH als root einloggen

2) mysql -u root -p

3) einen Neuen mysql Benutzer erstellen:

CREATE USER 'master'@'localhost' IDENTIFIED BY 'password';

4) Nun dem neu angelegtem benutzer alle nötigen datenbanken zuweisen:

GRANT ALL ON db_1.* TO 'master'@'%' IDENTIFIED BY 'password';
GRANT ALL ON db_2.* TO 'master'@'%' IDENTIFIED BY 'password';
GRANT ALL ON db_3.* TO 'master'@'%' IDENTIFIED BY 'password';

5) zum schluss noch:

FLUSH PRIVILEGES;

Fertig, Benutzer "master" hat nun zugriff auf alle 3 Datenbanken

Re: Universelle Benutzer für Datenbanken ?

Posted: Mon 1. Jul 2019, 14:26
by christian.john
Hallo,

ich schließe mich Micha an. Es wäre super, wenn man pro Benutzer einen Benutzer-Super-DB-User anlegen könnte, der auf alle Datenbanken des Benutzers Zugriff hat.

+1

Christian

Re: Universelle Benutzer für Datenbanken ?

Posted: Tue 2. Jul 2019, 11:57
by OlliTheDarkness
<< Spielverderber 8-)

Dagegen aus jedem nur erdenklichem Sicherheitsaspekt.

-1

Re: Universelle Benutzer für Datenbanken ?

Posted: Tue 2. Jul 2019, 12:00
by stfn116
OlliTheDarkness wrote: Tue 2. Jul 2019, 11:57 << Spielverderber 8-)

Dagegen aus jedem nur erdenklichem Sicherheitsaspekt.

-1
sonst können wir auch wieder Admin/Admin machen oder Password. Die Datenbanken bzw. die Server stehen ONLINE, es ist kein Wifi-Router welcher (einigermaßen) lokal im Zugriff ist. von daher von mir auch ein MINUS 1

Re: Universelle Benutzer für Datenbanken ?

Posted: Tue 2. Jul 2019, 12:51
by Tobi
christian.john wrote: Mon 1. Jul 2019, 14:26 Hallo,

ich schließe mich Micha an. Es wäre super, wenn man pro Benutzer einen Benutzer-Super-DB-User anlegen könnte, der auf alle Datenbanken des Benutzers Zugriff hat.

+1

Christian
Micha hat doch ausführlich beschrieben wie es geht.
Warum machst du es nicht einfach so?

Re: Universelle Benutzer für Datenbanken ?

Posted: Tue 2. Jul 2019, 13:58
by OlliTheDarkness
stfn116 wrote: Tue 2. Jul 2019, 12:00
OlliTheDarkness wrote: Tue 2. Jul 2019, 11:57 << Spielverderber 8-)

Dagegen aus jedem nur erdenklichem Sicherheitsaspekt.

-1
sonst können wir auch wieder Admin/Admin machen oder Password. Die Datenbanken bzw. die Server stehen ONLINE, es ist kein Wifi-Router welcher (einigermaßen) lokal im Zugriff ist. von daher von mir auch ein MINUS 1
Wie ?
Du hast es gewagt Benutzername und Kennwort von Admin / Admin zu ändern ?
Spassbremse ey :lol:
Zum Thema Router sag ich jetzt mal nichts **hust**

Aber mal im ernst, gut das ich nicht allein es so sehe :)

Re: Universelle Benutzer für Datenbanken ?

Posted: Tue 2. Jul 2019, 15:59
by mrbird
ich misch mich zwar sonst soweit es geht nicht in feature requests usw ein. weil bisher komme ich mit dem bereits gelieferten gut zurecht. von daher und weil ich die ablehnende haltungen teile würde ich auch ein minus geben.

zum eigentlichen post. es gibt ja noch die möglichkeit der prefixe. wenn's damit nicht komplett unübersichtlich wird isses dann alles in einer db.
was mir allerdings bei dem bsp code auch auffiel .. ich würde die sachen erstmal für php 7 fit mache. dh mysql_query auf mysqli usw.