mysql user anlegen
henry
- datenbank
Hallo,
ich schreibe gerade ein Script um mir meine Standarddatenbanken immer automatisch zu erzeugen.
Nun bin ich beim "user" erstellen.
user = "Hans"
Passwort = "0815" (schon verschlüsselt ;-) )
Host = beliebig
Zugriffsart = select (Nur Daten aus Datenbank lesen)
Hier gibt es, anscheinend, 2 Möglichkeiten.
create oder insert into
1. Wie werden diese angewandt
2. Was ist besser, bitte Tips
Danke
henry
Tach!
Nun bin ich beim "user" erstellen.
Hier gibt es, anscheinend, 2 Möglichkeiten.
create oder insert into
Create erzeugt eine Tabelle, Insert einen Datensatz. Die Tabelle zur Verwaltung der User ist bereits seit der Installation vorhanden.
- Wie werden diese angewandt
Create gar nicht und Insert am besten auch nicht. Wenn es denn unbedingt zu Fuß sein soll, dann füll die Felder so wie es MySQL mit einem vergleichbaren Nutzer getan hat. Das sind alles Standard-Datenfelder, String/Integer/irgendwas einfaches, nicht einmal BLOB oder etwas extra beachtenswertes. Eine entsprechende Syntax für ein Statement kann phpMyAdmin erzeugen. Und nach dem Ändern FLUSH PRIVILEGES nicht vergessen, sonst werden sie nicht angewendet.
- Was ist besser, bitte Tips
GRANT ...
dedlfix.
Hallo,
danke für die schnelle Antwort
- Was ist besser, bitte Tips
GRANT ...
OK... Nun habe ich etwas gefunden, was ich nur anpassen muss
GRANT SELECT ON mydb.* TO myuser@hostname IDENTIFIED BY "mygeheim";
Nun darf der neue user "myuser" nur aus der db lesen (select)
Wie kann ich dafür sorgen das nicht nur vom Rechner selbst (localhost) sondern von jedem Rechner aus zugegriffen werden kann ?
Muss ich die db irgendwie aktualisieren lassen, oder macht das Grant selbst ?
Fragen über Fragen ;-)
Gruß
henry
Tach!
Wie kann ich dafür sorgen das nicht nur vom Rechner selbst (localhost) sondern von jedem Rechner aus zugegriffen werden kann ?
Der Hostnamensteil kann die SQL-üblichen Jokerzeichen enthalten, also 'username'@'%' wäre der Nutzer von überall her.
Muss ich die db irgendwie aktualisieren lassen, oder macht das Grant selbst ?
http://dev.mysql.com/doc/refman/5.5/en/privilege-changes.html
Grant und Konsorten wirken sofort. Wenn du jedoch zu Fuß die Tabellen änderst, musst du flushen.
dedlfix.
Hallo,
Der Hostnamensteil kann die SQL-üblichen Jokerzeichen enthalten, also 'username'@'%' wäre der Nutzer von überall her.
super funktioniert, jedoch gehen die Probleme/Fragen weiter ;-)
1. Ein DROP USER IF EXISTS Anonymous;
geht nicht. Bei Tabellen und Datenbank selbst funktioniert es. Bei USER nicht ??
2. Die Tabelle soll so aussehen
CREATE TABLE apache_auth
(
username CHAR(50) NOT NULL,
passwd CHAR(50) NOT NULL,
group SMALLINT(5) NOT NULL,
isonline SMALLINT(5) NOT NULL,
PRIMARY KEY (username)
) DEFAULT CHARSET=utf8 ENGINE=MyISAM;
Jetzt mault er natürlich das "group" ein "verbotenes Wort/Befehl" ist. Ich kann es aber nicht ändern denn das Programm das die db liest ist nicht von mir. Es gibt sicher eine Lösung um das trotzdem hinzubiegen, oder ??
Tach!
- Ein
DROP USER IF EXISTS Anonymous;
geht nicht. Bei Tabellen und Datenbank selbst funktioniert es. Bei USER nicht ??
Es gibt ein Handbuch zu MySQL, da kann man die Syntax nachlesen.
Jetzt mault er natürlich das "group" ein "verbotenes Wort/Befehl" ist. Ich kann es aber nicht ändern denn das Programm das die db liest ist nicht von mir. Es gibt sicher eine Lösung um das trotzdem hinzubiegen, oder ??
Es gibt Quote-Zeichen für Identifier/Bezeichner. Bei MySQL sind es standardmäßig die Backticks. Mit diesen kann man auch reservierte Wörter als Bezeichner verwenden.
dedlfix.
Hallo,
ein
GRANT SELECT ON mydb.* TO myuser IDENTIFIED BY "mygeheim";
erzeugt zwar den user aber die Rechte werden auf none/keine gesetzt.
Laut Dr. Goggle sollte es gehen
Laut MySQL Referenzbuch
erzeugt ein
GRANT ALL PRIVILEGES ON mydb.* TO myuser IDENTIFIED BY "mygeheim";
einen user mit allen Berechtigungen. Wieder gleiches Problem ... user wird erzeugt, jedoch ohne Berechtigung.
Ich teste mit mysql unter Linux auf der Konsole (SQL-Befehle). Überprüft wird es mit webmin
Ich kann mir das nicht erklären ??
Am fehlenden ..@localhost liegt es nicht... habe ich schon probiert
Vielleicht sehe ich es aber auch nur nicht ;-)
Danke
henry
Tach!
Vielleicht sehe ich es aber auch nur nicht ;-)
Das scheint mir der Fall zu sein. Deine Statements sind soweit richtig. Bei mir werden die Nutzer angelegt und ihnen die Rechte für die angegebene Datenbank erteilt. Vielleicht schaust du ja nach globalen Rechten, solche bekommen sie nicht. Ich weiß nicht, wie der webmin das anzeigt, beim phpMyAdmin jedenfalls sieht man keine generellen Rechte, wenn man den Nutzer anklickt, aber darunter gibt es eine Zeile mit datenbankspezifischen Rechten. Dort geklickt kommt man gegebenenfalls auch noch zu den tabellenspezifischen Rechten
dedlfix.
Mahlzeit,
mal ne ganz banale Frage, darf dein User neue User mit Rechten anlegen?
Root darf das, bist du Root?
Ansonsten kann ich dein Problem nicht nachvollziehen. Ich weiss aber nicht, wie du feststellst, dass dein neuer User keine Rechte hat. Liest du die entsprechende Tabelle aus?
Hallo,
ein
GRANT SELECT ON mydb.* TO myuser IDENTIFIED BY "mygeheim";
erzeugt zwar den user aber die Rechte werden auf none/keine gesetzt.
Laut Dr. Goggle sollte es gehen
Laut MySQL Referenzbuch
erzeugt ein
GRANT ALL PRIVILEGES ON mydb.* TO myuser IDENTIFIED BY "mygeheim";
einen user mit allen Berechtigungen. Wieder gleiches Problem ... user wird erzeugt, jedoch ohne Berechtigung.
Ich teste mit mysql unter Linux auf der Konsole. Überprüft wird es mit webmin
Ich kann mir das nicht erklären ??
Am fehlenden ..@localhost liegt es nicht... habe ich schon probiert
Vielleicht sehe ich es aber auch nur nicht ;-)
Danke
henry