henry: mysql user anlegen

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

  1. 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.

    1. 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.

    1. Was ist besser, bitte Tips

    GRANT ...

    dedlfix.

    1. Hallo,

      danke für die schnelle Antwort

      1. 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

      1. 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.

        1. 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 ??

          1. Tach!

            1. 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.

            1. 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

              1. 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.

              2. 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?

                --
                42
      2. 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