Chcę utworzyć nowego użytkownika w MySQL i dać mu pełny dostęp tylko do jednej bazy danych, powiedzmy dbTest
, którą tworzę za pomocą polecenia podobnego create database dbTest;
. Jakie byłyby do tego celu polecenia MySQL?
Chcę utworzyć nowego użytkownika w MySQL i dać mu pełny dostęp tylko do jednej bazy danych, powiedzmy dbTest
, którą tworzę za pomocą polecenia podobnego create database dbTest;
. Jakie byłyby do tego celu polecenia MySQL?
Spróbuj utworzyć użytkownika:
CREATE USER 'user'@'hostname';
Spróbuj, aby dać mu dostęp do bazy danych dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Jeśli uruchamiasz kod / witrynę uzyskującą dostęp do MySQL na tym samym komputerze, nazwą hosta będzie localhost.
Teraz załamanie.
GRANT
- To polecenie służy do tworzenia użytkowników i przyznawania uprawnień do baz danych, tabel itp.
ALL PRIVILEGES
- Oznacza to, że użytkownik będzie miał wszystkie standardowe uprawnienia. Nie obejmuje to jednak uprawnienia do korzystania z polecenia GRANT.
dbtest.*
- Niniejsza instrukcja MySQL do zastosowania tych praw do użytku w całej bazie danych dbtest. Jeśli chcesz, możesz zastąpić * konkretnymi nazwami tabel lub procedurami przechowywania.
TO 'user'@'hostname'
- „użytkownik” to nazwa użytkownika konta użytkownika, które tworzysz. Uwaga: Musisz tam mieć pojedyncze cytaty. „nazwa hosta” informuje MySQL, z których hostów użytkownik może się połączyć. Jeśli chcesz go tylko z tego samego komputera, użyjlocalhost
IDENTIFIED BY 'password'
- Jak można się domyślić, ustawia to hasło dla tego użytkownika.
Składnia
Aby utworzyć użytkownika w MySQL / MariaDB 5.7.6 i nowszych, użyj
CREATE USER
składni :następnie, aby udzielić całego dostępu do bazy danych (np.
my_db
), użyjGRANT
Składni , npGdzie
ALL
( typ_uprawnien ) można zastąpić konkretnego przywilejów, takich jakSELECT
,INSERT
,UPDATE
,ALTER
, etc.Następnie, aby ponownie załadować nowo przypisane uprawnienia, uruchom:
Wykonywanie
Aby uruchomić powyższe polecenia, musisz uruchomić
mysql
polecenie i wpisać je w wierszu polecenia, a następnie wylogować się za pomocąquit
polecenia lub Ctrl- D.Aby uruchomić z powłoki, użyj
-e
parametru (zamień naSELECT 1
jedno z powyższych poleceń):lub wydrukuj wyciąg ze standardowego wejścia:
Jeśli masz powyżej odmowę dostępu , określ parametry
-u
(dla użytkownika) i-p
(dla hasła) lub dla dostępu długoterminowego ustaw swoje poświadczenia~/.my.cnf
, np.Integracja z powłoką
Dla osób, które nie znają składni MySQL, oto przydatne funkcje powłoki, które są łatwe do zapamiętania i użycia (aby z nich skorzystać, należy załadować zawarte w nich funkcje powłoki).
Oto przykład:
Aby użyć powyższych poleceń, musisz skopiować i wkleić następujące funkcje do pliku rc (np.
.bash_profile
) I ponownie załadować powłokę lub plik źródłowy. W takim przypadku po prostu wpiszsource .bash_profile
:Uwaga: Jeśli wolisz nie zostawiać śladu (np. Haseł) w historii Bash, sprawdź: Jak zapobiec wyświetlaniu się poleceń w historii Bash ?
źródło
~/.my.cnf
jak sugerowano powyżej.Aby utworzyć użytkownika i nadać wszystkie uprawnienia do bazy danych.
Zaloguj się do MySQL:
Teraz utwórz i udziel
Anonimowy użytkownik (tylko do testów lokalnych)
Alternatywnie, jeśli chcesz po prostu przyznać pełny nieograniczony dostęp do bazy danych (np. Na komputerze lokalnym dla instancji testowej, możesz przyznać dostęp anonimowemu użytkownikowi, np .:
Być świadomym
To jest dobre dla niepotrzebnych danych w fazie rozwoju. Nie rób tego z czymś, na czym ci zależy.
źródło
zignoruj opcję -p , jeśli użytkownik mysql nie ma hasła lub po prostu naciśnij przycisk „[Enter]”, aby ominąć. ciągi otoczone nawiasami klamrowymi należy zastąpić rzeczywistymi wartościami.
źródło
Możesz tworzyć nowych użytkowników za pomocą instrukcji CREATE USER i nadawać im uprawnienia za pomocą GRANT .
źródło
Dla mnie to zadziałało.
gdzie
źródło
Poniższe polecenie będzie działać, jeśli chcesz utworzyć nowego użytkownika, dać mu pełny dostęp do określonej bazy danych (nie wszystkich baz danych w Mysql) na komputerze lokalnym.
To da wszystkie uprawnienia jednej bazie danych
test_database
(w twoim przypadkudbTest
) temu użytkownikowi na localhost.Sprawdź, jakie uprawnienia, które powyższe polecenie wydało temu użytkownikowi, uruchamiając poniższe polecenie.
Na wszelki wypadek, jeśli chcesz ograniczyć dostęp użytkownika do tylko jednego stołu
źródło
W przypadku
host
pominięcia tej części domyślnie jest wyświetlany symbol wieloznaczny%
, umożliwiający wszystkim hostom.CREATE USER 'service-api';
GRANT ALL PRIVILEGES ON the_db.* TO 'service-api' IDENTIFIED BY 'the_password'
źródło