BŁĄD 1044 (42000): Odmowa dostępu dla użytkownika „@„ localhost ”do bazy danych„ db ”

164

Chcę zacząć pisać zapytania w MySQL.

show grants przedstawia:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

Nie mam identyfikatora użytkownika, ale kiedy chcę utworzyć użytkownika, nie mam uprawnień, a także nie wiem, jak nadać uprawnienia, nawet jeśli nie mam jednego użytkownika!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

Próbowałem zalogować się jako root:

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1
Nickool
źródło
3
Musisz zalogować się jako użytkownik z uprawnieniami. Przynajmniej rootpowinien zostać utworzony podczas instalacji MySQL.
derobert
podczas instalacji mówi mi, żebym ustawić hasło, a teraz ustawiłem go na roota, co mam zrobić?
Nickool
9
Musisz zalogować się jako root - np mysql -u root -p. Uruchamiając . Wtedy będziesz mieć pełne uprawnienia na serwerze bazy danych i możesz tworzyć innych użytkowników.
derobert
kiedy logujesz się za pomocą wiersza poleceń, wykonaj następujące czynności, aby zalogować się jako root: mysql -u root -p
Travis
1
@nikparsa: Nie, uruchomiłbyś to zamiast 'mysql' - z zachęty powłoki, a nie z zachęty mysql.
derobert

Odpowiedzi:

219

Nie, powinieneś uruchamiać się mysql -u root -pw bashu, a nie w wierszu poleceń MySQL. Jeśli jesteś w mysql, możesz wyjść, wpisując exit .

Nie dlaczego
źródło
jak mogę przejść do basha? Miałem problem z instalacją mysql patrz tutaj superuser.com/questions/377679/ ... Po prostu wiem o tym w linii poleceń
Nickool
6
użyj 'quit', aby wyjść z mysql, wtedy będziesz w bash
Nowhy
23
FYI, domyślnie hasło jest puste
bigpotato
Co jeśli używam systemu Windows?
PHPFan
wyjście lub zamknięcie nie działa dla mnie, podaj inny sposób. Jestem w
systemie
46

Może być konieczne skonfigurowanie konta root dla bazy danych MySQL:

W typie terminala:

mysqladmin -u root password 'root password goes here'

A następnie, aby wywołać klienta MySQL:

mysql -h localhost -u root -p
podeszwa
źródło
1
Ten działał dla mnie, początkowo działał dobrze, a potem nagle przestał działać pewnego dnia. Każdy pomysł, dlaczego tak się dzieje w pierwszej kolejności?
mu 無
@soleshoe pojawia się błąd: sudo: mysqladmin: polecenie nie zostało znalezione, pomóż mi, co mogę zrobić? mysql działa już w Preferencjach systemowych.
Hitarth
29

Przywiózł mnie tu inny problem. Za każdym razem, gdy próbowałem się zalogować, otrzymywałem tę wiadomość, ponieważ zamiast poprawnie uwierzytelnić, zalogowałem się jako użytkownik anonimowy. Rozwiązaniem mojego problemu było:

Aby zobaczyć, którym jesteś użytkownikiem i czyim masz uprawnienia:

select user(), current_user();

Aby usunąć nieznośnego anonimowego użytkownika:

drop user ''@'localhost';
Lefteris E.
źródło
1
To rozwiązało problem, mimo że używałem „mysql -u nazwa_użytkownika -p”. Bardzo dziwne: user () był moją nazwą użytkownika, ale current_user () to localhost ... nie wiem dlaczego?
Ethanpil
2
@Leftteris hi .. otrzymuję ten błąd: Odmowa dostępu; potrzebujesz (co najmniej jednego) uprawnienia (a) UTWÓRZ UŻYTKOWNIKA do tej operacji Kiedy próbuję usunąć użytkownika „@” localhost ”;
Hitarth
15

Ma to coś wspólnego z uprawnieniami użytkownika. Udzielenie odpowiednich dotacji rozwiąże ten problem.

Krok [1]: Otwórz terminal i uruchom to polecenie

$ mysql -uroot -p

Wyjście [1]: To powinno dać ci znak zachęty mysql pokazany poniżej

wprowadź opis obrazu tutaj

Krok 2]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

Składnia:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

Uwaga:

  • nazwa hosta może być adresem IP, hostem lokalnym, 127.0.0.1
  • W database_name/ table_name, * oznacza wszystkie bazy danych
  • W hostname, aby określić wszystkie hosty, użyj „%”

Krok [3]: Wyjdź z aktualnego znaku zachęty mysql, wpisując quit/ exitcommand lub naciskając Ctrl+D.

Krok [4]: ​​Zaloguj się do nowego użytkownika

$ mysql -uparsa -pyour_password

Krok [5]: Utwórz bazę danych

mysql> create database `database_name`;
theBuzzyCoder
źródło
kiedy to robię, CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';pojawia się błąd: ERROR 1227 (42000): Odmowa dostępu; potrzebujesz (przynajmniej jednego) uprawnienia (ów) UTWÓRZ UŻYTKOWNIKA do tej operacji
samolot
Czy logowałeś się do klienta mysql za pomocą użytkownika root
theBuzzyCoder
9

Możesz wypróbować pełne polecenie logowania:

mysql -h host -u root -p 

gdzie byłby gospodarz 127.0.0.1.

Zrób to tylko po to, aby mieć pewność, że współpraca istnieje.

Używanie mysql -u root -ppozwala mi dużo przeszukiwać bazy danych, ale odmawia tworzenia bazy danych z powodu ustawienia ścieżki.

Promień
źródło
6

Po pierwsze, jeśli nie znasz wiersza poleceń, spróbuj użyć phpmyadmin ze swojej przeglądarki internetowej. Zapewni to, że faktycznie masz utworzoną bazę danych mysql i nazwę użytkownika.

Oto jak łączysz się z linii poleceń (bash):

mysql -h hostname -u username -p database_name

Na przykład:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb
fabiog
źródło
1
-psłuży jako hasło i używasz go do przekazywania nazwy bazy danych. Ponadto w przypadku hasła nie powinno być spacji czarno-białej -pani rzeczywistego hasła. Służy -Ddo łączenia się z określoną bazą danych.
sv.
5

Jeśli jesteś w MySQLpowłoce, zamknij ją, wpisując exit , co spowoduje powrót do wiersza poleceń.

Teraz zacznij MySQLod użycia dokładnie następującego polecenia:

sudo mysql -u root -p

Jeśli Twoja nazwa użytkownika jest inna niż root, zamień „root” w powyższym poleceniu na swoją nazwę użytkownika:

sudo mysql -u <your-user-name> -p

Następnie zapyta Cię o MySQLkonto / hasło, a MySQLnastępnie nie pokaże żadnego problemu z uprawnieniami dostępu.

Kshitij Mittal
źródło
po wpisaniu hasła otrzymuję „sudo: mysql: polecenie nie znaleziono” Proszę, pomóż mi w tej sprawie
Hitarth
nie powinno być „sudo:”, powinno być „sudo” ... Jeśli to nie jest literówka, myślę, że w tym tkwi problem.
Kshitij Mittal
2

@Nickparsa… masz 2 problemy:

1). mysql -uroot -p powinno być wpisane w bash (znany również jako terminal), a nie w wierszu poleceń MySQL. Możesz naprawić ten błąd, wpisując

exit

w wierszu poleceń MySQL. Teraz jesteś z powrotem w linii poleceń bash / terminalu.

2). Masz błąd składni:

mysql -uroot -p; 

średnik przed -p musi zostać zakończony. Prawidłowa składnia to:

mysql -uroot -p

wpisz poprawną składnię w linii poleceń bash. Wprowadź hasło, jeśli masz ustawione; w przeciwnym razie po prostu naciśnij przycisk Enter. Powinieneś otrzymać odpowiedź podobną do tej: wprowadź opis obrazu tutaj

Mam nadzieję że to pomoże!

Uzzar
źródło
Cześć, mam ekran nad głową bezpośrednio po pożarze tego polecenia. / usr / local / mysql / bin / mysql, ale później, gdy próbuję utworzyć bazę danych za pomocą książek „CREATE DATABASE;” pojawia się błąd: BŁĄD 1044 (42000): Odmowa dostępu dla użytkownika „@„ localhost ”do bazy danych” książki, pomóż mi
Hitarth
0

Większość programistów loguje się do serwera (zakładam, że masz nazwę użytkownika i hasło do bazy danych mysql), a następnie z Bash przełączają się mysql> prompti używają poniższego polecenia (które nie działa

mysql -h localhost -u root -p

To, co należy zrobić, to użyć powyższego polecenia w zachęcie basha -> gdy to zrobisz, poprosi o hasło, jeśli zostanie podane, przejdzie bezpośrednio do zachęty mysql i

następnie baza danych, tabela może być utworzona pojedynczo

Miałem podobny impas, więc dzieląc się tym doświadczeniem

Devrath
źródło
0

Polecenie było poprawne zgodnie z powyższymi odpowiedziami. Brakowało mi w Workbenchu, gdzie wspominamy o „Ogranicz łączność z hosta” dla użytkownika, domyślnie jest to „%” - zmień to na „localhost”, a potem będzie się dobrze łączyć!

człowiek psujący zabawę
źródło