ОШИБКА 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.
Дероберт

Ответы:


220

Нет, вы должны работать mysql -u root -pв bash, а не в командной строке MySQL. Если вы находитесь в mysql, вы можете выйти, набрав команду exit .


как я могу перейти на bash? У меня была проблема с установкой mysql, см. здесь superuser.com/questions/377679/… Я просто знаю, что это в командной строке
Nickool

6
используйте 'quit' для выхода из mysql, тогда вы будете в bash
Nowhy

23
К вашему сведению, по умолчанию пароль пуст
bigpotato

Что делать, если я использую Windows?
PHPFan

выход или выход не работает для меня, пожалуйста, предоставьте другой способ. Я на Windows 10
Метин Дагцилар

46

Вам может потребоваться настроить учетную запись root для базы данных MySQL:

В терминале введите:

mysqladmin -u root password 'root password goes here'

А затем вызвать клиент MySQL:

mysql -h localhost -u root -p

1
Этот работал для меня, сначала он работал нормально, а потом внезапно перестал работать однажды. Любая идея, почему это происходит в первую очередь?
Му 無

@soleshoe im получаю ошибку: sudo: mysqladmin: команда не найдена, пожалуйста, помогите мне, что я могу сделать ?? mysql уже работает в Системных настройках.
Hitarth

29

Меня привела другая проблема. Всякий раз, когда я пытался войти, я получал это сообщение, потому что вместо правильной аутентификации я входил в систему как анонимный пользователь. Решение моей проблемы было:

Чтобы узнать, кто вы и какие у вас есть права доступа:

select user(), current_user();

Чтобы удалить надоедливого анонимного пользователя:

drop user ''@'localhost';

1
Это решило проблему для меня, хотя я использовал «mysql -u username -p». Очень странно: user () было моим именем пользователя, а current_user () было localhost ... не знаете почему?
этанпил

2
@Leftteris привет .. я получаю эту ошибку: Доступ запрещен; вам нужна (хотя бы одна из) привилегия CREATE USER для этой операции, когда я пытаюсь удалить пользователя '' @ 'localhost';
Hitarth

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/ exitcommand или нажмите Ctrl+D.

Шаг [4]: ​​войдите в систему для вашего нового пользователя

$ mysql -uparsa -pyour_password

Шаг [5]: Создать базу данных

mysql> create database `database_name`;

когда я CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';там получаю сообщение об ошибке: ОШИБКА 1227 (42000): доступ запрещен; вам нужна (хотя бы одна из) привилегия CREATE USER для этой операции
самолет

Вы вошли в клиент 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: команда не найдена" Пожалуйста, помогите мне в этом
Hitarth

это не должно быть "sudo:", это должно быть "sudo" ... Если это не опечатка, я думаю, что это проблема.
Кшитий Миттал

2

@Nickparsa ... у вас есть 2 проблемы:

1). mysql -uroot -p должен быть напечатан в bash (также известный как ваш терминал), а не в командной строке MySQL. Вы исправляете эту ошибку, набирая

exit

в вашей командной строке MySQL. Теперь вы вернулись в командную строку bash / Terminal.

2). У вас есть синтаксическая ошибка:

mysql -uroot -p; 

точка с запятой перед -p должна идти. Правильный синтаксис:

mysql -uroot -p

введите правильный синтаксис в командной строке bash. Введите пароль, если он у вас установлен; иначе просто нажмите кнопку ввода. Вы должны получить ответ, похожий на этот: введите описание изображения здесь

Надеюсь это поможет!


Привет, я получил экран выше сразу после пожара, это похвалы. / usr / local / mysql / bin / mysql, но после этого, когда я пытаюсь создать базу данных, используя "CREATE DATABASE books;", я получаю сообщение об ошибке: ОШИБКА 1044 (42000): доступ пользователю '' @ 'localhost' к базе данных запрещен книги "Пожалуйста, помогите мне
Hitarth

0

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

mysql -h localhost -u root -p

Что нужно сделать, это использовать приведенную выше команду в приглашении bash -> при этом он запросит пароль, если он будет передан непосредственно в приглашение mysql и

тогда база данных, таблица может быть создана одна за другой

Я столкнулся с аналогичным тупиком


0

У меня была правильная команда в ответах выше, что я пропустил на Workbench, где мы упоминаем «Limit Connectivity from Host» для пользователя, по умолчанию это «%» - измените это на «localhost», и после этого он подключится нормально!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.