Хотя оригинальный постер утверждает, что нашел ответ на этот вопрос в этом ответе, для меня это не имело никакого смысла. Но теперь я понимаю, что некоторые дистрибутивы Debian/Ubuntu используют метод аутентификации на основе сокетов. Этот метод аутентификации, включаемый по умолчанию, естественно, потребует одного использования sudo
чтобы войти в MySQL, как они описывают.
Но в общем случае нет причин запускать mysql_secure_installation
через sudo
. В большинстве случаев это не имеет смысла, поскольку MySQL не нужен sudo
для клиентской транзакции, подобной этой ... Если только не работает аутентификация на основе сокетов. А mysql_secure_installation
- это всего лишь сценарий Bash, который выполняет кучу команд в удобном и удобном пакете, позволяющем обновить некоторые элементы безопасности, связанные с MySQL. Просто посмотрите на исходный код, чтобы понять, что я имею в виду.
Поэтому, если вы работаете в системе, в которой не используется аутентификация на основе сокетов, и сталкиваетесь с подобной проблемой, решение состоит в том, что либо пароль будет пустым для более старых версий MySQL. Так что вы просто запустите это, чтобы попасть в MySQL:
mysql -uroot -p
Или в случае mysql_secure_installation
просто нажмите Return или Enter, когда будет предложено ввести пароль.
Или для современных версий MySQL - я полагаю, MySQL 5.7 или выше - вам нужно проверить журнал ошибок на наличие такого сообщения:
«2016-05-16T07: 09: 49.796912Z 1 [Примечание] Для root @ localhost: 8)13ftQG5OYl генерируется временный пароль»
Это пример, взятый из записи в блоге Persona по этой теме. Относительно того, где находится эта запись в журнале MySQL, она может находиться в /var/log/mysqld.log
на сервере CentOS/RedHat или отображаться в качестве вывода из пакета, установленного в системах Ubuntu/Debian.
Но простая проверка журнала ошибок на наличие «временного пароля» предоставит вам исходный пароль root
MySQL устанавливает при первой установке.