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

Невозможно войти в систему с созданным пользователем в mysql

Используя эту команду

GRANT ALL PRIVILEGES ON *.* to brian@'%' identified by 'password';

Я пытаюсь войти с помощью:

 mysql -u brian -ppassword

Ошибка:

ERROR 1045 (28000): Access denied for user 'brian'@'localhost' (using password: YES)

Я делаю это как root и пытался сбросить привилегии.

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

Вам нужно явно добавить пользователя @ localhost. "%" не соответствует localhost.

Вы определенно использовали

... identified by 'password';

и нет

... identified by password 'password';

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

Я обычно делаю это двумя командами:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';
GRANT ALL ON *.* TO 'user1'@'localhost';

Обычно не доставляет мне проблем

Что-то по-другому произойдет, если указать хост?

mysql -ubrian -ppassword -hlocalhost

mysql -ubrian -ppassword -h127.0.0.1

Попробуйте проверить:

SELECT user, host, password, PASSWORD('password') FROM mysql.user

И убедиться, что пароль в db и результат функции PASSWORD совпадают?

Сетевое соединение не устанавливается, если вы:

mysql -u brian -ppassword # with no -h

Вместо этого выполняется подключение к сокету. Соединения сокетов не соответствуют подстановочному знаку узла «%». Они соответствуют узлу localhost только в качестве меры безопасности. Вы можете принудительно установить сетевое соединение следующим образом:

mysql -u brian -ppassword -h `hostname`

Это работает в большинстве случаев, но я видел несколько систем, где этого не было. Если это работает для вас, это хороший способ избежать поддержки пар грантов для каждого пользователя ('user' @ '%' и 'user' @ 'localhost')

Подстановочное имя хоста соответствует только TCP-соединениям, а не сокетному соединению, используемому localhost; вам понадобится запись для% и для localhost.

Причина, по которой он работает без пароля, вероятно, связана с тем, что у вас разные учетные данные, установленные в ~ / .my.cnf