MySQL - Teilweise Schreibrechte

Hoerli

Ensign
Registriert
Nov. 2015
Beiträge
160
PROBLEM "GELÖST"

Hallo Forum!
Ich hoffe hier sind aktuell ein paar SQL-Profis online, die mir das Problemchen lösen können.

Ich habe einen frisch installierten Server mit Ubuntu 18.04 LTS und MySQL, nginx und php.
Alles soweit super.
Nun möchte ich exportierte SQL-Datenbanken einspielen.
Ich habe ein Nutzer angelegt
Code:
CREATE USER 'nutzer1'@'localhost' IDENTIFIED BY 'passwort1';

und eine Datenbank angelegt
Code:
CREATE DATABASE homepage;

und dem Nutzer die Rechte gegeben
Code:
GRANT ALL PRIVILEGES ON nutzer1 TO homepage;

Da ich auch phpmyadmin installiert habe, habe ich die exportierten SQL-Datenbanken via Webbrowser eingespielt.
Es wurden scheinbar alle Datensätze ohne Probleme importiert.
Dieses Vorgehen habe ich nun für mehrere Nutzer und mehrere Datenbanken (auch pro Nutzer) gemacht.
Hat seit mehreren Jahren so immer funktioniert.

Ich habe nach 3 Stunden festgestellt, das nicht alle Tabellen vom Nutzer editiert werden dürfen.
So kann der eine Nutzer an Datenbank1 die ersten zwei Tabellen Editieren und in Datenbank2 vielleicht drei.
Bei den restlichen Tabellen darf er nur Lesen.
Nutzer2 kann z.B. problemlos alle ihm zugewiesenen Tabellen editieren.
Nutzer3 kann wieder nur z.B. 5 Tabellen editieren, den Rest nicht.

Ich hatte als erstes den Webserver mit einer falschen Config oder php im Verdacht, da WordPress-Seiten nicht mehr korrekt funktionierten, aber da lag ich wohl falsch.

Ich habe per MySQL-Root den Nutzern mehrfach die Rechte an ihren Datenbanken gegeben und auch über phpmyAdmin und Terminal geprüft, das die Rechte auch da sind, aber der Nutzer darf die gewisse Tabelle nicht bearbeiten.

Was mach ich falsch? Ich steh aktuell komplett auf dem Schlauch, zumal andere Nutzer und Datenbanken mit dem gleichen Vorgehen 1a funktionieren.

Ich habe auch schon den Import der Datenbanken via Komandozeile versucht – selbes Ergebnis.

Hoffe jemand kennt den Super-Befehl zum fixen des Problems :confused_alt:
 
Zuletzt bearbeitet:
Hast du auch mal via CLI versucht Rechte zu vergeben, Rechte danach anzusehen, und dann mit einem dieser Nutzer von dort eine Aenderung an der entsprechenden Datenbank vorzunehmen? (Um erstmal andere Software als Ursache ignorieren zu koennen)
 
Dein Grant sieht schonmal mysteriös (lies: falsch) aus. Ansonsten ist mir noch nie ein Problem wie beschrieben vorgekommen.
SQL:
GRANT ALL PRIVILEGES ON homepage.* TO 'nutzer1'@'localhost';
 
  • Gefällt mir
Reaktionen: abcddcba
Tenthar hat es bereits korrekt gesagt, Du mußt bei MySQL immer den entsprechenden Hostnamen, von dem der Client kommt oder sich verbindet, dazu berechtigen. Wobei localhost dann aber auch nur als Aufruf vom gleichen Host funktioniert. Arbeitet Dein Client von einem anderen Host aus, mußt Du ihn als Hostnamen oder IP anstelle localhost hinzufügen. Willst Du alles berechtigen, egal von wo der Client kommt,

Code:
GRANT ALL PRIVILEGES ON homepage.* TO 'nutzer1'@'%';
RTFM hätte die Lösung auch gebracht. ;)
 
  • Gefällt mir
Reaktionen: abcddcba
Sorry das war mein Fehler beim schreiben des Textes.
Ich hab natürlich den Befehl wie @Tenthar ihn geschrieben hat genutzt.

RTFM wäre ja langweilig und den Fehler da zu finden wohl eine Glückssache :lol:

Die Berechtigung habe ich über CLI mit dem root-User verteilt.
Genügend Rechte zum welche zuweisen sollte ich also haben.
Ich habe auch den User kompeltt gelöscht und die Datenbank neu rein geladen mit dem selben effekt.
Keine Ahnung was da gerade falsch läuft ...

Übrigends sieht die Rechteübersicht so aus:

Code:
mysql> SHOW GRANTS FOR 'nutzer1'@'localhost';
+------------------------------------------------------------------------------------+
| Grants for nutzer1@localhost                                                        |
+------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'nutzer1'@'localhost'                                         |
| GRANT ALL PRIVILEGES ON `db\_01`.* TO 'nutzer1'@'localhost' WITH GRANT OPTION      |
| GRANT ALL PRIVILEGES ON `db_01`.* TO 'nutzer1'@'localhost'                         |
| GRANT ALL PRIVILEGES ON `db_02`.* TO 'nutzer1'@'localhost' WITH GRANT OPTION       |
| GRANT ALL PRIVILEGES ON `db_03`.* TO 'nutzer1'@'localhost' WITH GRANT OPTION       |
+------------------------------------------------------------------------------------+
5 rows in set (0.00 sec)
 
Zuletzt bearbeitet:
Nach langem Probieren und befragen einer Suchmaschine bin ich nun zum entschluss gekommen, das die Datenbank wohl defekt ist.
Da die meisten Datenbanken von Wordpress-Installationen kommen, habe ich nun die Seiten einfach neu installiert.
Thema hat sich daher erledigt.
 
Zurück
Oben