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

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 .


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

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';

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`;

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.


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

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.


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!


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


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ć!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.