Используя эту команду
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