Назад | Перейти на главную страницу

Подстановочный знак имени хоста% не включает localhost или 127.0.0.0

В MariaDB в Windows я создаю пользователя и базу данных со следующими

flush privileges;
CREATE USER 'test-one'@'%' IDENTIFIED BY 'test-one';
GRANT USAGE ON *.* TO 'test-one'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `test-one`;
GRANT ALL PRIVILEGES ON `test-one`.* TO 'test-one'@'%';

После этого я не могу подключиться к базе данных

.\mysql.exe -u "test-one" -p
Enter password: ********
ERROR 1045 (28000): Access denied for user 'test-one'@'localhost' (using password: YES)

Аналогичное поведение для

.\mysql.exe -u "test-one" -p -h 127.0.0.1

Что работает (замените фактическим именем хоста). \ Mysql.exe -u "test-one" -p -h

Это задумано? Подстановочный знак имени хоста "%" не включает ни localhost, ни 127.0.0.1.

Это верно до тех пор, пока анонимные пользователи существуют в базе данных. Когда вы удаляете этих пользователей, localhost и 127.0.0.1 начать сопоставление подстановочных знаков.

Из Документация MariaDB:

Обратите внимание, что учетные данные, добавленные при создании пользователя с подстановочным знаком «%», не будут предоставлять доступ во всех случаях. Например, некоторые системы поставляются с анонимным пользователем localhost, и при подключении с localhost это будет иметь приоритет.

Этих анонимных пользователей также можно удалить, когда mysql_secure_installation скрипт запускается:

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

Удалить анонимных пользователей? [Да / Нет]