Я создал базу данных и пользователя и разрешил доступ через следующее:
create user 'someuser'@'%' identified by 'password';
grant all privileges on somedb.* to 'someuser' with grant option;
Однако, когда я пытаюсь подключиться к MySQL, я получаю следующую ошибку:
$ mysql -u someuser -p
> Enter Password:
> ERROR 1045 (28000): Access denied for user 'someuser'@'localhost' (using password: YES)
Если «%» является подстановочным знаком, то не будет ли он также включать localhost? Однако, если я не укажу, что хочу использовать пароль, тогда я могу просто отлично подключиться к базе данных, что не имеет смысла, потому что я указываю пароль при создании пользователя.
Я уверен, что вам нужно следующее:
предоставить все привилегии для somedb. * для 'someuser' @ '%' с опцией grant;
В вашем выражении GRANT отсутствует объявление имени хоста.
источник
GRANT ALL ON somedb.* TO 'someuser'@'10.1.10.1';
Если вы не можете подключиться к mysql, используя someuser @ '%', где '%' - это подстановочный знак для имени хоста, убедитесь, что у вас нет записи '' @localhost в вашей пользовательской таблице. Подтвердите, используя следующую инструкцию SQL:
Если '' @localhost существует, удалите его, введя следующую инструкцию SQL:
затем, наконец,
Теперь someuser @ '%' подключится к базе данных.
источник
Насколько я понимаю, и я готов исправить это, MySQL обрабатывает localhost отдельно для%. т.е. localhost не включен в шаблон.
источник
user@%
и это не сработало, пока я не включилuser@localhost
. Затем я увидел ответ stackoverflow.com/a/29421084/4850646 и понял, что у меня есть анонимный пользователь с хостомlocalhost
. Я удалил всех анонимных пользователей и смог получить доступlocalhost
для этого пользователя даже после удаленияuser@localhost
(и только разрешенияuser@%
). Кажется, что посколькуlocalhost
он более конкретен%
, он сначала пытается использоватьlocalhost
пользователя, даже если это анонимный пользователь!Вы запускали
flush privileges;
после создания пользователя? Если вы этого не сделаете, изменения в пользователях / разрешениях не будут приняты, пока сервер не будет перезапущен.Затем убедитесь, что у вас нет записи '%' @ 'localhost'.
источник