Frage MySQL: Erstellen eines Benutzers, der sich von mehreren Hosts aus verbinden kann


Ich benutze MySQL und muss ein Konto erstellen, das sich entweder vom lokalen Host oder von einem anderen Server aus verbinden kann, d. H. 10.1.1.1. Also mache ich:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

Das funktioniert gut, aber gibt es eine elegantere Möglichkeit, ein Benutzerkonto zu erstellen, das mit mehreren IPs verknüpft ist, oder muss es auf diese Weise gemacht werden?

Meine Hauptsorge ist, dass in Zukunft die Berechtigungen von "bob" account aktualisiert werden und nicht die anderen.


27
2017-09-30 02:13


Ursprung


Ich wollte den fehlenden Apostroph nach 10.1.1.1 beheben, aber ServerFault hat mich nicht gelassen. Änderungen müssen mindestens 6 Zeichen umfassen. Scheitern. - Josef Sábl


Antworten:


Wenn Sie auf Host beschränken möchten und nicht auf Basis eines Subnetzes oder Platzhalters angeben möchten, verwenden Sie %, das ist der einzige Weg, es zu tun. Weitere Details finden Sie in der MySQL-Dokumentation.

Ich versuche immer noch, Wege zu finden, um den Overhead bei der Verwaltung der Authentifizierung für große MySQL-Installationen zu eliminieren, und muss noch eine perfekte Lösung finden.


17
2017-09-30 02:40





Beginnen wir damit, einen neuen Benutzer namens "chaminda" innerhalb der MySQL-Shell zu erstellen:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

Das erste, was zu tun ist, um dem Benutzer die notwendige Erlaubnis zu geben, und hier habe ich dem jeweiligen Benutzer die volle Erlaubnis gegeben.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

Laden Sie alle Privilegien neu.

FLUSH PRIVILEGES;

Wenn Sie den IP-Adressbereich für einen bestimmten Benutzer freigeben möchten, verwenden Sie 10.1.1.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

Hinweis:  Hier ist Hostname =% und das bedeutet, dass Sie von jedem Host aus auf diesen Datenbankserver zugreifen können. Die Vergabe aller Berechtigungen an den Benutzer ist ein großes Risiko, und das ist keine bewährte Methode. Außerdem können Sie den Benutzer 'chaminda' durch 'bob' ersetzen. 


6
2018-06-27 08:06



Dies beantwortet die Frage nicht. Es gewährt einem Benutzer Zugriff von allen IPs, aber das OP fragt nach einem eleganteren Weg, um es einem einzelnen Benutzer zu erlauben, von einer Liste von IPs auf die Datenbank zuzugreifen. Anstatt mehrere Anweisungen zu verwenden, um einen Benutzer mehrfach von mehreren IPs hinzuzufügen, besteht die Idee darin, einen einzelnen Benutzer hinzuzufügen, der von mehreren IPs auf die Datenbank zugreifen kann, was die Verwaltung einfacher und weniger fehleranfällig macht. - Anthony
Sie können _ auch als Platzhalter wie 10.1.1.1__ verwenden, um 100 -199 zu finden, aber für 200 müssen Sie ein separates Konto erstellen oder das Platzhalterzeichen% verwenden und auch 0-99 und 201-255 einschließen - Chaminda Bandara


MySQL erlaubt mehrere Platzhalter in einer Zeile. Eine mögliche Lösung besteht darin, Host für Benutzer festzulegen Bob sein

locahost/10.1.1.1

Referenz:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html


-3
2018-05-27 02:47



Das ist nicht, was die Dokumentation sagt. Wie in der Tabelle aufgeführt, ist die Datei /255.255.255.0 eine Netzmaske. Wenn es eine Möglichkeit gibt, mehrere Platzhalter in der Hostdefinition aufzulisten, ist dies nicht der richtige Weg. - majikman