У меня есть сервер MySQL с паролем root MySQL - это пустая строка. Если я попытаюсь подключиться к MySQL без пароля, мне будет отказано. Как это:
# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
# mysql -p
Enter password: <-- I just hit enter, without typing anything
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql>
Как я могу заставить MySQL подключаться без предварительного запроса пароля? У меня есть другие серверы, к которым я могу нормально подключиться без запроса пароля, и эти другие серверы также не используют файл .my.cnf.
Не то чтобы я рекомендовал запускать MySQL без пароля, если вы храните что-либо ценное, но в этом случае проблема, похоже, заключалась в псевдониме оболочки для команды mysql, которая определяла параметры пользователя / пароля.
Обычно, если вы просто запускаете mysql, вы получаете сообщение об ошибке в строке «Доступ запрещен (с использованием пароля: NO)». На этом этапе вы должны понимать, что вам нужно указать mysql, чтобы он запрашивал пароль, используя параметр -p. (Или укажите пароль прямо в команде с помощью --password = pass).
В этом вопросе подсказка заключалась в том, что ошибка предполагала, что используется пароль, хотя параметры пароля не были указаны непосредственно в командной строке. Если mysql не имеет пароля, любой предоставленный пароль (даже пустой) приведет к сбою аутентификации.
Это риск безопасности, но если вы добавите это в свой my.cnf:
skip-grant-tables
Вы можете получить доступ к mysql без пароля.
Лучше создать файл /root/.my.cnf для доступа без запроса пароля