Wypróbowany
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Dostać
BŁĄD 1064 (42000): Wystąpił błąd w składni SQL; sprawdź podręcznik, który odpowiada twojej wersji serwera MySQL, aby znaleźć właściwą składnię, której należy użyć w pobliżu „IDENTIFIED BY„ root ”WITH GRANT OPTION” w wierszu 1.
Uwaga: to samo działa, gdy próbowano w poprzednich wersjach.
Próbowałem też
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Dostać
BŁĄD 1410 (42000): Nie możesz utworzyć użytkownika za pomocą GRANT
MySQL (8.0.11.0) nazwa użytkownika / hasło to root / root.
mysql
mysql-error-1064
mysql-8.0
Praveen
źródło
źródło
mysql -u root -p
, a następnie wpisuję hasło roota. Potem spróbowałemGRANT GRANT OPTION ON *.* TO 'root'@'%';
i otrzymałem błądERROR 1410 (42000): You are not allowed to create a user with GRANT
Odpowiedzi:
Począwszy od MySQL 8 nie można już (niejawnie) tworzyć użytkownika za pomocą
GRANT
polecenia. Zamiast tego użyj polecenia CREATE USER , a następnie instrukcji GRANT :Przestroga dotycząca zagrożeń bezpieczeństwa dotyczących
WITH GRANT OPTION
, zobacz:źródło
SELECT User, Host FROM mysql.user;
Zamiast tego biegnij .ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
1) To zadziałało dla mnie. Najpierw utwórz nowego użytkownika. Przykład: użytkownik
foo
z hasłembar
2) Zamień poniższy kod na nazwę użytkownika z „foo”.
3) Zaloguj się jako użytkownik foo
Hasło: bar
4) Upewnij się, że twoje początkowe połączenie z Sequelize jest ustawione na foo z pw bar.
źródło
Widzę wiele (błędnych) odpowiedzi, jest to tak proste, jak to:
Uwaga: zamiast samodzielnie utworzonego
user
, możesz użyćroot
do połączenia się z bazą danych. Jednak użycie domyślnego konta głównego, aby umożliwić aplikacji połączenie się z bazą danych, nie jest preferowanym sposobem.Alternatywne przywileje (bądź ostrożny i pamiętaj o zasadzie najmniejszego uprzywilejowania):
Jeśli w jakiś sposób napotkasz następujący błąd:
Musisz dodać / zmienić następujące dwie linie
/etc/mysql/my.cnf
i ponownie uruchomić mysql:źródło
GRANT ALL ON
dla MySQL 8.0. Uważam również, że zamiast wyłączaćbind-address
, możesz łączyć się127.0.0.1
i dołączać--protocol=tcp
do dowolnych poleceń. Wydajność długoterminowa jest również lepsza niż w przypadkulocalhost
.Moje specyfikacje:
Co mi pomogło:
Odpowiedź w obu zapytaniach:
NB: Utworzyłem bazę danych (nazwa_db) wcześniej i tworzyłem poświadczenie użytkownika ze wszystkimi uprawnieniami nadanymi wszystkim tabelom w DB, zamiast korzystania z domyślnego użytkownika root, którego gdzieś przeczytałem, jest najlepszą praktyką.
źródło
Podany użytkownik po prostu nie istnieje w Twoim MySQL (więc MySQL próbuje go utworzyć za pomocą GRANT, tak jak przed wersją 8, ale nie udaje mu się to z ograniczeniami wprowadzonymi w tej wersji).
MySQL jest w tym momencie dość głupi, więc jeśli masz 'root' @ 'localhost' i próbujesz nadać uprawnienia 'root' @ '%', traktuje ich jako różnych użytkowników, a nie uogólnione pojęcie użytkownika root na dowolnym hoście, w tym Lokalny Gospodarz.
Komunikat o błędzie jest również mylący.
Jeśli więc otrzymujesz komunikat o błędzie, sprawdź istniejących użytkowników za pomocą czegoś takiego
a następnie utwórz brakującego użytkownika (zgodnie z zaleceniami Mike'a) lub dostosuj polecenie GRANT do faktycznej specyfikacji istniejącego użytkownika.
źródło
Tylko moje 2 centy na ten temat. Miałem dokładnie ten sam problem przy próbie połączenia z MySQL Workbench. Używam maszyny wirtualnej bitnami-mysql, aby skonfigurować lokalną piaskownicę do programowania.
Samouczek Bitnami mówi, że uruchamia polecenie `` Przyznaj wszystkie uprawnienia '':
To najwyraźniej nie działało, w końcu udało mi się to, używając odpowiedzi Mike'a Lischke.
Wydaje mi się, że stało się tak, że użytkownik root @% miał z nim złe poświadczenia. Więc jeśli próbowałeś zmodyfikować uprawnienia użytkownika i bez powodzenia spróbuj:
Z konsoli MySQL:
Lista użytkowników (pomocna przy wyświetlaniu wszystkich użytkowników):
Porzuć pożądanego użytkownika:
Utwórz użytkownika i nadaj uprawnienia:
Uruchom to polecenie:
Znajdź swój plik konfiguracyjny mysql „my.cnf” i poszukaj linii, która wygląda następująco:
i skomentuj go za pomocą „#”:
Następnie uruchom ponownie usługę mysql.
Mam nadzieję, że pomoże to komuś, kto ma ten sam problem!
źródło
To zadziałało dla mnie:
źródło
Sprawdź, czy Twoja nazwa użytkownika i domena są takie same, jak utworzone wcześniej. MySQL wybierz konto za pomocą dwóch kolumn w tabeli użytkowników. Jeśli jest inaczej, mysql może pomyśleć, że chcesz utworzyć nowe konto przez grant, które nie jest obsługiwane po wersji 8.0.
źródło
Moje specyfikacje:
Co mi pomogło:
źródło
Cóż, właśnie miałem ten sam problem. Nawet gdyby trasa miała „%”, nie mogła połączyć się zdalnie. Teraz, patrząc na
my.ini
plik (plik konfiguracyjny w systemie Windows),bind-address
instrukcja została pominięta.Więc ... położyłem to
bind-address = *
później[mysqld]
i ponownie uruchomiłem usługę. Teraz działa!źródło
1. nadaj uprawnienia
mysql> PRZYZNAJ WSZYSTKIE PRZYWILEJE NA. DO 'root' @ '%' Z OPCJĄ GRANT;
mysql> UPRAWNIENIA FLUSH
2. sprawdź tabelę użytkowników:
mysql> użyj mysql
mysql> wybierz hosta, użytkownika z użytkownika
3. Zmodyfikuj plik konfiguracyjny
mysql default bind ip : 127.0.0.1, jeśli chcemy zdalnie korzystać z usług, po prostu usuń config
4. na koniec uruchom ponownie usługi
usługi brew zrestartuj mysql
źródło
To może zadziałać:
źródło
Miałem ten sam problem, który doprowadził mnie tutaj. W szczególności, jeśli chodzi o rozwój lokalny, chciałem móc się
mysql -u root -p
bez niego obejśćsudo
. Nie chcę tworzyć nowego użytkownika. Chcę używaćroot
z lokalnej aplikacji internetowej PHP.Komunikat o błędzie jest mylący, ponieważ nie było nic złego w domyślnych
'root'@'%'
uprawnieniach użytkownika.Zamiast tego, jak kilka osób wspomniało w innych odpowiedziach, rozwiązaniem było po prostu ustawienie
bind-address=0.0.0.0
zamiastbind-address=127.0.0.1
w mojej/etc/mysql/mysql.conf.d/mysqld.cnf
konfiguracji. Żadne zmiany nie były wymagane.źródło
Miałem ten sam problem na CentOS i to działało dla mnie (wersja: 8.0.11):
źródło