Stworzyłem bazę danych, na przykład „mydb”.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Teraz mogę zalogować się do bazy danych z dowolnego miejsca, ale nie mogę tworzyć tabel.
Jak przyznać wszystkie uprawnienia do tej bazy danych i (w przyszłości) tabel. Nie mogę tworzyć tabel w bazie danych „mydb”. Zawsze dostaję:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
mysql
mariadb
mysql-error-1142
marioosh
źródło
źródło
FLUSH PRIVILEGES
?flush privileges
nie jest potrzebny, gdy używaszgrant
poleceń. x4FLUSH PRIVILEGES;
tylko jeśli modyfikować tabele dotacje bezpośrednio za pomocą oświadczenia, takie jakINSERT
,UPDATE
lubDELETE
Odpowiedzi:
W ten sposób tworzę uprawnienia „superużytkownika” (chociaż normalnie określałbym hosta).
WAŻNA UWAGA
Chociaż ta odpowiedź może rozwiązać problem z dostępem,
WITH GRANT OPTION
tworzy użytkownika MySQL, który może edytować uprawnienia innych użytkowników .Ze względów bezpieczeństwa nie należy używać tego typu konta użytkownika w jakimkolwiek procesie, do którego społeczeństwo będzie miało dostęp (np. Strona internetowa). Zaleca się utworzenie użytkownika z uprawnieniami do bazy danych do tego rodzaju zastosowań.
źródło
myuser
własną, niestandardową nazwą użytkownika.To stare pytanie, ale nie sądzę, aby zaakceptowana odpowiedź była bezpieczna. Jest dobry do tworzenia superużytkowników, ale nie jest dobry, jeśli chcesz nadać uprawnienia do pojedynczej bazy danych.
%
wydaje się nie obejmować komunikacji gniazdowej, po colocalhost
.WITH GRANT OPTION
jest dobry tylko dla superużytkownika, w przeciwnym razie zwykle stanowi zagrożenie bezpieczeństwa.Aktualizacja MySQL 5.7+ wydaje się ostrzegać przed:
Tak więc ustawienie hasła powinno odbywać się za pomocą osobnych poleceń. Dzięki komentarzowi od @ scary-wombat.
Mam nadzieję że to pomoże.
źródło
WITH GRANT OPTION
określonej bazy danych i kierowanie na nią zamiast wszystkich (*
).unix sockets
. Podczas korzystania zlocalhost
klienta myslq na Linuksie próbuje użyć gniazda unix zamiast połączenia TCP z serwerem.Będzie to pomocne dla niektórych osób:
Z wiersza poleceń MySQL:
Niestety, w tym momencie newuser nie ma uprawnień do robienia czegokolwiek z bazami danych. W rzeczywistości, jeśli newuser nawet spróbuje się zalogować (za pomocą hasła, hasła), nie będzie w stanie uzyskać dostępu do powłoki MySQL.
Dlatego pierwszą rzeczą do zrobienia jest zapewnienie użytkownikowi dostępu do potrzebnych mu informacji.
Gwiazdki w tym poleceniu odnoszą się odpowiednio do bazy danych i tabeli, do których mogą uzyskać dostęp - to konkretne polecenie pozwala użytkownikowi czytać, edytować, wykonywać i wykonywać wszystkie zadania we wszystkich bazach danych i tabelach.
Po sfinalizowaniu uprawnień, które chcesz skonfigurować dla nowych użytkowników, zawsze pamiętaj, aby ponownie załadować wszystkie uprawnienia.
Twoje zmiany zaczną obowiązywać.
Aby uzyskać więcej informacji: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Jeśli nie masz doświadczenia z wierszem poleceń, możesz użyć klienta, takiego jak MySQL workbench , Navicat lub SQLyog
źródło
flush privileges
nie jest potrzebne, gdy używaszgrant
poleceń. x4GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
(dziwne ..., ale prawdziwe)1. Utwórz bazę danych
2. Utwórz nazwę użytkownika dla bazy danych nazwa_db
3. Użyj bazy danych
4. W końcu znajdujesz się w bazie danych nazwa_db, a następnie wykonaj polecenia takie jak tworzenie, wybieranie i wstawianie.
źródło
username
powinien mieć wszystkie przywileje,db_name
ale nieDROP db_name;
przywilej?Ten SQL udziela wszystkich baz danych, ale tylko podstawowe uprawnienia. Są wystarczające dla Drupala lub Wordpressa i jako drobiazg pozwalają na jedno konto programisty dla lokalnych projektów.
źródło
Działa dla uprawnień do schematu :)
Opcjonalnie: po
mypasswd
dodaniuWITH GRANT OPTION
źródło
Mógłbym sprawić, by działało tylko poprzez dodanie
GRANT OPTION
, bez tego zawsze otrzymuję błąd odmowy uprawnieńźródło
Witam Użyłem tego kodu, aby mieć superużytkownika w mysql
i wtedy
źródło
flush privileges
nie jest potrzebne, gdy używaszgrant
poleceń. x4GRANT
różni się w zależności od wersji MySQL.Aby uzyskać dostęp ze zdalnego serwera tylko do bazy danych mydb
Aby uzyskać dostęp ze zdalnego serwera do wszystkich baz danych.
źródło
Aby przyznać wszystkie uprawnienia do bazy danych:
mydb
użytkownikowi:myuser
po prostu wykonaj:lub:
Słowo
PRIVILEGES
kluczowe nie jest konieczne.Nie wiem też, dlaczego inne odpowiedzi sugerują, że należy
IDENTIFIED BY 'password'
je umieścić na końcu polecenia. Uważam, że nie jest to wymagane.źródło