1

Я создал пользователя в MySQL, но не могу войти с ним.

MariaDB [(none)]> create user fe_joomla;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on fe_joomla.* to fe_joomla;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show grants for fe_joomla;
+----------------------------------------------------------+
| Grants for fe_joomla@%                                   |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'fe_joomla'@'%'                    |
| GRANT ALL PRIVILEGES ON `fe_joomla`.* TO 'fe_joomla'@'%' |
+----------------------------------------------------------+
2 rows in set (0.00 sec)

$ mysql -u fe_joomla fe_joomla
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'fe_joomla'

Я следовал этому руководству. http://www.mysqltutorial.org/mysql-grant.aspx

3 ответа3

1

В старых версиях MySQL было несколько тестовых учетных записей с пустыми именами пользователей, которые были созданы по умолчанию. Они были в основном безвредны, но очень проблематичны. Был скрипт под названием mysql_secure_installation который это очистил, и похоже, что он не запускался при настройке вашей системы.

Запустите этот запрос для подтверждения:

mysql> SELECT * FROM mysql.user WHERE user = '';

Обратите внимание, что '' - это две одинарные кавычки, ' не одна двойная кавычка " .

Убедившись, что у вас есть полная резервная копия для безопасности, удалите эти тестовые учетные записи. (Это должна быть совершенно безопасная операция, но резервное копирование является хорошей практикой.)

mysql> DELETE FROM mysql.user WHERE user = '';
mysql> FLUSH PRIVILEGES;

Проблема с этими тестовыми учетными записями заключается в том, что при сопоставлении имен пользователей происходит какое-то волшебное поведение, а пустое имя пользователя имеет особое значение. Это была плохая функция, которая была изначально добавлена, чтобы облегчить начало работы.

После этого ваш новый пользователь должен работать правильно ... но учтите, что вы не должны создавать учетные записи без паролей.

0

Я удалил пользователя fe_joomla и заново создал его как fe_joomla@localhost и предоставил привилегии fe_joomla@localhost и это сработало. Я мог бы использовать mysql -u fe_joomla fe_joomla сейчас.

create user fe_joomla@localhost;
grant all on fe_joomla.* to fe_joomla@localhost;

Ответ Майкла, вероятно, тоже сработает.

0

Похоже, вы не ввели команду "сброс привилегий", чтобы активировать нового пользователя без перезапуска.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .