ПОМИЛКА 1044 (42000): користувачеві '' @ 'localhost' заборонено доступ до бази даних 'db'


164

Я хочу почати писати запити в MySQL.

show grants показує:

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

У мене немає жодного ідентифікатора користувача, але коли я хочу зробити користувача, у мене немає привілеїв, також я не знаю, як зробити привілеї, навіть якщо у мене немає одного користувача!

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

Я спробував увійти як 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
Вам потрібно увійти як користувач із дозволами. Принаймні, rootслід створити, коли ви встановили MySQL.
дероберт

під час встановлення він каже мені встановити пароль, і я встановити його на root тепер, що я можу зробити?
Nickool

9
Вам потрібно увійти як root (наприклад, запустивши) mysql -u root -p. Тоді ви отримаєте повні дозволи на сервері баз даних, і ви зможете створити інших користувачів.
дероберт

коли ви входите в систему за допомогою командного рядка, виконайте такі дії, щоб увійти як root: mysql -u root -p
Travis

1
@nikparsa: Ні, ви б запустили це замість 'mysql' - із підказки оболонки, а не з запиту mysql.
дероберт

Відповіді:


219

Ні, вам слід запускати mysql -u root -pbash, а не в командному рядку MySQL. Якщо ви знаходитесь у mysql, ви можете вийти, ввівши exit .


Як я можу піти на баш? У мене виникли проблеми з установкою mysql. див. тут superuser.com/questions/377679/… Я просто знаю, що це не в командному рядку
Nickool

6
використовуйте "кинути", щоб вийти з mysql, тоді ви будете в
баші

23
FYI за замовчуванням пароль порожній
bigpotato

Що робити, якщо я використовую Windows?
PHPFan

вихід або вихід не працює для мене, надайте інший спосіб. Я на Windows 10
Метін Дагчілар

46

Вам може знадобитися налаштувати кореневий обліковий запис для вашої бази даних MySQL:

У термінальному типі:

mysqladmin -u root password 'root password goes here'

А потім викликати клієнт MySQL:

mysql -h localhost -u root -p

1
Цей працював на мене, він справно працював спочатку, а потім одного разу раптово перестав працювати. Будь-яка ідея, чому це відбувається в першу чергу?
му 無

@soleshoe я отримую помилку: sudo: mysqladmin: команда не знайдена, будь ласка, допоможіть мені, що я можу зробити ?? mysql - це програма, що працює в System Preference.
Гітарт

29

Мене сюди привела інша проблема. Щоразу, коли я намагався увійти, я отримував це повідомлення, тому що замість автентифікації правильно я увійшов як анонімний користувач. Вирішенням моєї проблеми було:

Щоб побачити, хто ви є користувачем та чиїми дозволами:

select user(), current_user();

Щоб видалити дотепного анонімного користувача:

drop user ''@'localhost';

1
Це вирішило проблему для мене, навіть якщо я використовував "mysql -u ім'я користувача -p". Дуже дивно: користувачем () було моє ім’я користувача, але current_user () був localhost ... не знаю чому?
етанпіль

2
@Leftteris привіт .. я отримую цю помилку: доступ заборонено; вам потрібна (принаймні одна з) ПРИКЛАДИ КОРИСТУВАЧА КОРИСТУВАЧА для цієї операції Коли я намагаюся відмовитись від користувача '' @ 'localhost';
Гітарт

15

Це щось стосується дозволів користувача. Надання належних грантів вирішить це питання.

Крок [1]: Відкрийте термінал і запустіть цю команду

$ mysql -uroot -p

Вихід [1]: Це має дати вам запит mysql, показаний нижче

введіть тут опис зображення

Крок [2]:

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

Синтаксис:

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

Примітка:

  • ім'я хоста може бути IP-адресою, localhost, 127.0.0.1
  • В database_name/ table_name, * означає всі бази даних
  • В hostname, щоб вказати всі хости, використовуйте "%"

Крок [3]: Вийдіть із поточного запиту mysql, ввівши quit/ exitкомандуючи або натисніть Ctrl+D.

Крок [4]: ​​Увійдіть до нового користувача

$ mysql -uparsa -pyour_password

Крок [5]: Створіть базу даних

mysql> create database `database_name`;

коли я CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';там отримую помилку: ПОМИЛКА 1227 (42000): В доступі відмовлено; вам потрібна (принаймні одна з) ПРАВИЛА СТВОРЕННЯ КОРИСТУВАЧА для цієї операції
літак

Ви увійшли до клієнта mysql за допомогою користувача root
theBuzzyCoder

9

Ви можете спробувати повну команду входу:

mysql -h host -u root -p 

де був би господар 127.0.0.1.

Зробіть це лише для того, щоб переконатися, що співпраця існує.

Використання mysql -u root -pдозволяє мені робити багато пошуку в базі даних, але відмовляється від будь-якого створення бази даних через налаштування шляху.


6

По-перше, якщо ви не знайомі з командним рядком, спробуйте використовувати phpmyadmin від вашого веб-браузера. Це дозволить створити базу даних mysql та ім’я користувача.

Ось як ви підключаєтесь з командного рядка (bash):

mysql -h hostname -u username -p database_name

Наприклад:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb

1
-pпризначений для пароля, і ви використовуєте його для передачі імені бази даних. Крім того, для пароля не повинно бути пробілу в / ч -pта фактичного пароля. Використовуйте -Dдля підключення до певної бази даних.
св.

5

Якщо ви знаходитесь в MySQLоболонці, вийдіть із неї, ввівши exit , що поверне вас до командного рядка.

Тепер почніть MySQLз використання наступної команди:

sudo mysql -u root -p

Якщо ваше ім’я користувача є чимось іншим, ніж root, замініть "root" у наведеній вище команді своїм іменем користувача:

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

Тоді він запитає вам MySQLобліковий запис / пароль, і тоді ви MySQLне будете показувати жодних проблем із привілеєм доступу.


після введення пароля я отримую "sudo: mysql: команда не знайдена" Будь ласка, допоможіть мені з цього
приводу

це не повинно бути "sudo:", це повинно бути "sudo" ... Якщо це не помилка друку, я думаю, що це питання.
Кшитій Міттал

2

@Nickparsa ... у вас є 2 випуски:

1). mysql -uroot -p слід набрати в bash (також відомий як ваш термінал), а не в командному рядку MySQL. Виправляєте цю помилку, ввівши

exit

у вашому командному рядку MySQL. Тепер ви знову в командному рядку bash / terminal.

2). У вас синтаксична помилка:

mysql -uroot -p; 

крапка з комою перед -п повинна йти. Правильний синтаксис:

mysql -uroot -p

введіть правильний синтаксис у вашому командному рядку bash. Введіть пароль, якщо у вас є налаштування; ще просто натисніть кнопку введення. Ви повинні отримати відповідь, аналогічну цій: введіть тут опис зображення

Сподіваюся, це допомагає!


Привіт, я отримав стрілецький екран прямо після пожежі. / usr / local / mysql / bin / mysql, але після цього, коли я намагаюся створити базу даних, використовуючи "СТВОРИТИСЯ ДАТАБАЗІ книги;" я отримую помилку: ПОМИЛКА 1044 (42000): користувачеві заборонено доступ '' @ 'localhost' до бази даних ' книги "допоможіть мені
Гітар

0

Більшість розробників входять на сервер (я вважаю, у вас є ім’я користувача та пароль для бази даних mysql), а потім від Bash вони переходять на mysql> promptпотім використовувати команду нижче (яка не працює

mysql -h localhost -u root -p

Що потрібно зробити, це скористатись вищезазначеною командою у вікні bash -> при цьому вона запитає пароль, якщо вона буде надана безпосередньо до mysql-підказок і

тоді базу даних, таблицю можна створити по черзі

Я зіткнувся з подібним тупиком, тому поділився досвідом


0

Відповідно до вищезазначених відповідей у ​​мене була правильна команда, те, що я пропустив, був на Workbench, де ми згадуємо для користувача «Обмеження підключення від Host», він за замовчуванням ставить на «%» - змініть це на «localhost», і воно згодом добре підключається!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.