Ich möchte einen neuen Benutzer in MySQL erstellen und ihm vollen Zugriff nur auf eine Datenbank gewähren dbTest
, beispielsweise mit einem Befehl wie create database dbTest;
. Was wären die MySQL-Befehle, um das zu tun?
Ich möchte einen neuen Benutzer in MySQL erstellen und ihm vollen Zugriff nur auf eine Datenbank gewähren dbTest
, beispielsweise mit einem Befehl wie create database dbTest;
. Was wären die MySQL-Befehle, um das zu tun?
Versuchen Sie dies, um den Benutzer zu erstellen:
CREATE USER 'user'@'hostname';
Versuchen Sie dies, um Zugriff auf die Datenbank zu erhalten dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Wenn Sie den Code / die Site, die auf MySQL zugreift, auf demselben Computer ausführen, lautet der Hostname localhost.
Nun ist der Zusammenbruch.
GRANT
- Dies ist der Befehl zum Erstellen von Benutzern und zum Gewähren von Rechten für Datenbanken, Tabellen usw.
ALL PRIVILEGES
- Dies sagt ihm, dass der Benutzer alle Standardrechte hat. Dies beinhaltet jedoch nicht das Privileg, den Befehl GRANT zu verwenden.
dbtest.*
- Diese Anweisung MySQL, diese Rechte zur Verwendung in der gesamten dbtest-Datenbank anzuwenden. Wenn Sie möchten, können Sie das * durch bestimmte Tabellennamen oder Speicherroutinen ersetzen.
TO 'user'@'hostname'
- 'Benutzer' ist der Benutzername des Benutzerkontos, das Sie erstellen. Hinweis: Sie müssen die einfachen Anführungszeichen dort haben. 'Hostname' teilt MySQL mit, von welchen Hosts aus der Benutzer eine Verbindung herstellen kann. Wenn Sie es nur von demselben Computer möchten, verwenden Sielocalhost
IDENTIFIED BY 'password'
- Wie Sie vermutet haben, wird hiermit das Kennwort für diesen Benutzer festgelegt.
Syntax
Verwenden Sie die folgende
CREATE USER
Syntax, um Benutzer in MySQL / MariaDB 5.7.6 und höher zu erstellen :Um dann den gesamten Zugriff auf die Datenbank zu gewähren (z. B.
my_db
), verwenden Sie dieGRANT
Syntax , zWo
ALL
( priv_type ) kann mit speziellen Privilegien wie ersetzt werdenSELECT
,INSERT
,UPDATE
,ALTER
etc.Führen Sie dann die neu zugewiesenen Berechtigungen erneut aus:
Ausführen
Um die obigen Befehle auszuführen, müssen Sie den
mysql
Befehl ausführen und in die Eingabeaufforderung eingeben und sich dann mit demquit
Befehl oder Ctrl- abmelden D.Verwenden Sie zum Ausführen von der Shell den
-e
Parameter (durchSELECT 1
einen der oben genannten Befehle ersetzen ):oder drucken Sie die Anweisung von der Standardeingabe:
Wenn Ihnen der Zugriff oben verweigert wurde , geben Sie die Parameter
-u
(für Benutzer) und-p
(für Kennwort) an oder legen Sie für den Langzeitzugriff Ihre Anmeldeinformationen fest~/.my.cnf
, zShell-Integration
Für Leute, die nicht mit der MySQL-Syntax vertraut sind, gibt es hier praktische Shell-Funktionen, die leicht zu merken und zu verwenden sind (um sie zu verwenden, müssen Sie die weiter unten enthaltenen Shell-Funktionen laden).
Hier ist ein Beispiel:
Um die obigen Befehle zu verwenden, müssen Sie die folgenden Funktionen kopieren und in Ihre RC- Datei einfügen (z. B.
.bash_profile
) und Ihre Shell neu laden oder die Datei als Quelle verwenden. In diesem Fall geben Sie einfach Folgendes einsource .bash_profile
:Hinweis: Wenn Sie keine Spuren (z. B. Kennwörter) in Ihrem Bash-Verlauf hinterlassen möchten, überprüfen Sie: Wie kann verhindert werden, dass Befehle im Bash-Verlauf angezeigt werden?
quelle
~/.my.cnf
wie oben vorgeschlagen zu Ihrem Passwort hinzufügen .So erstellen Sie einen Benutzer und gewähren alle Berechtigungen für eine Datenbank.
Melden Sie sich bei MySQL an:
Jetzt erstellen und gewähren
Anonymer Benutzer (nur für lokale Tests)
Wenn Sie nur uneingeschränkten uneingeschränkten Zugriff auf eine Datenbank gewähren möchten (z. B. auf Ihrem lokalen Computer für eine Testinstanz), können Sie dem anonymen Benutzer wie folgt Zugriff gewähren:
Sei vorsichtig
Dies ist in Ordnung für Junk-Daten in der Entwicklung. Mach das nicht mit irgendetwas, das dir wichtig ist.
quelle
Ignorieren Sie die Option -p , wenn der MySQL-Benutzer kein Passwort hat, oder drücken Sie einfach die "[Enter]" - Taste, um zu umgehen. Zeichenfolgen, die von geschweiften Klammern umgeben sind, müssen durch tatsächliche Werte ersetzt werden.
quelle
Sie können neue Benutzer mit der Anweisung CREATE USER erstellen und ihnen mit GRANT Rechte erteilen .
quelle
Für mich hat das funktioniert.
wo
quelle
Der folgende Befehl funktioniert, wenn Sie einen neuen Benutzer erstellen möchten, der ihm den gesamten Zugriff auf eine bestimmte Datenbank (nicht alle Datenbanken in Ihrem MySQL) auf Ihrem lokalen Host gewährt.
Dadurch werden diesem Benutzer auf localhost alle Berechtigungen für eine Datenbank
test_database
(in Ihrem FalldbTest
) gewährt .Überprüfen Sie, welche Berechtigungen der obige Befehl diesem Benutzer erteilt hat, indem Sie den folgenden Befehl ausführen.
Nur für den Fall, dass Sie den Benutzerzugriff auf nur eine einzige Tabelle beschränken möchten
quelle
Wenn das
host
Teil weggelassen wird, wird standardmäßig das Platzhaltersymbol verwendet%
, sodass alle Hosts zugelassen werden.CREATE USER 'service-api';
GRANT ALL PRIVILEGES ON the_db.* TO 'service-api' IDENTIFIED BY 'the_password'
quelle