Mysql не запрашивает пароль root при установке

Я использовал apt install mysql-server чтобы установить MySQL на Ubuntu 16.04, но во время установки он не запрашивал пароль root.

После установки я получил ERROR 1045 когда я попытался войти в систему как root и mysql_secure_installation выдал ту же ошибку. Я purged и autoremoved затем переустановил, но он не работает.

Как я мог это исправить? Могу ли я установить пароль root, если я не установил его во время установки?

Это мой журнал установки:

Будут установлены следующие дополнительные пакеты: libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7 mysql-server-core-5.7Предлагаемые пакеты: mailx tinycaThe будут установлены следующие НОВЫЕ пакеты: libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-сервер mysql-server-5.7 mysql-server-core-5.70 обновлен, 6 недавно установлено, 0 для удаления и 0 не обновлено.Нужно получить 0 Бит/17,9 МБ архивов.После этой операции будет использовано 160 МБ дополнительного дискового пространства.Вы хотите продолжить? [Y/n] Yпереконфигурирование пакетов ...Выбор ранее невыбранного пакета libaio1:amd64.(Чтение базы данных ... 227144 файлов и каталогов, установленных в настоящее время.)Подготовка к распаковке .../libaio1_0.3.110-2_amd64.deb ...Распаковка libaio1:amd64 (0.3.110-2) ...Выбор ранее невыбранного пакета mysql-client-core-5.7.Подготовка к распаковке .../mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...Распаковка mysql-client-core-5.7 (5.7.12-0ubuntu1) ...Выбор ранее невыбранного пакета mysql-client-5.7.Подготовка к распаковке .../mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...Распаковка mysql-client-5.7 (5.7.12-0ubuntu1) ...Выбор ранее невыбранного пакета mysql-server-core-5.7.Подготовка к распаковке .../mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...Распаковка mysql-server-core-5.7 (5.7.12-0ubuntu1) ...Выбор ранее невыбранного пакета mysql-server-5.7.Подготовка к распаковке .../mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...Распаковка mysql-server-5.7 (5.7.12-0ubuntu1) ...Выбор ранее невыбранного пакета mysql-server.Подготовка к распаковке .../mysql-server_5.7.12-0ubuntu1_all.deb ...Распаковка mysql-сервера (5.7.12-0ubuntu1) ...Обработка триггеров для libc-bin (2.23-0ubuntu3) ...Обработка триггеров для man-db (2.7.5-1) ...Обработка триггеров для systemd (229-4ubuntu4) ...Обработка триггеров для ureadahead (0.100.0-19) ...Настройка libaio1:amd64 (0.3.110-2) ...Настройка mysql-client-core-5.7 (5.7.12-0ubuntu1) ...Настройка mysql-client-5.7 (5.7.12-0ubuntu1) ...Настройка mysql-server-core-5.7 (5.7.12-0ubuntu1) ...Настройка mysql-server-5.7 (5.7.12-0ubuntu1) ...обновление-альтернативы: использование /etc/mysql/mysql.cnf для предоставления /etc/mysql/my.cnf (my.cnf) в автоматическом режиме проверки, если требуется обновление.Эта установка MySQL уже обновлена до версии 5.7.12, используйте --force, если вам все еще нужно запустить mysql_upgradeSetting up mysql-server (5.7.12-0ubuntu1)...Обработка триггеров для libc-bin (2.23-0ubuntu3) ...

Вы можете восстановить или установить пароль root, не зная текущего, запустив mysql без загрузки таблиц грантов.

Пожалуйста, обратите внимание на $ в командах. Это указание приглашения терминала, которое вы видите при вводе команды. Он показывает, что это строка текста, но и фактическая введенная команда терминала. В "mysql>" префикс - это тоже подсказка. Это приглашение, которое вы получаете при запуске mysql интерактивно.

Это cli (командная строка), чтобы сделать это:
(Обязательно остановите текущий сервер перед выполнением этих действий. Одновременно может работать только один сервер.)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld$ sudo mysqld_safe --skip-grant-tables&

Теперь вы можете войти в систему как root без пароля и выполнять все команды, как в этом случае, установите пароль root как root.

$ sudo mysql --user=root mysql

Это установленный пароль root, который вы будете использовать внутри mysql, если у вас установлен MySQL 5.6 или ниже:

mysql> update user set Password=PASSWORD('new-password') where user='root';flush privileges;

В MySQL 5.7 или выше

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';flush privileges;

Оттуда закройте (убейте запущенный msqld) mysql и запустите его в обычном режиме.

Примечания по запуску и остановке службы mysql:

Остановить mysql:

$ sudo service mysql stop

Запуск mysql (обычный):

$ sudo service mysql start

Завершите временный сеанс безопасного режима mysql:

$ sudo mysqladmin shutdown

Он не будет запрашивать пароль при установке mysql в Ubuntu 16.04, но вы можете установить его после успешной установки следующим образом:

После завершения установки mysql выполните команду:

sudo mysql_secure_installation

Это покажет:

ПРИМЕЧАНИЕ: ВЫПОЛНЕНИЕ ВСЕХ ЧАСТЕЙ ЭТОГО СКРИПТА РЕКОМЕНДУЕТСЯ ДЛЯ ВСЕХ СЕРВЕРОВ MariaDB, ИСПОЛЬЗУЕМЫХ В ПРОИЗВОДСТВЕ! ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ КАЖДЫЙ ШАГ!

Чтобы войти в MariaDB и защитить его, нам понадобится текущий пароль для пользователя root. Если вы только что установили MariaDB и еще не установили пароль root, пароль будет пустым, поэтому вам следует просто нажать enter здесь.

Enter current password for root (enter for none): (здесь нажмите Enter)

ОК, успешно использованный пароль, двигаемся дальше...

Установка пароля root гарантирует, что никто не сможет войти в систему пользователя MariaDB root без надлежащей авторизации.

Set root password? [Y/n] y   (press 'y' to set new password)New password: Re-enter new password:

Пароль успешно обновлен! Перезагрузка таблиц привилегий.. ... Успех!


Для Ubuntu 18.04 ИЛИ mysql-server версия 5.7.22, ЭТОТ МЕТОД НЕ БУДЕТ РАБОТАТЬ

Чтобы установить пароль root в Ubuntu 18.04, сначала выполните первые три команды или первые два шага Ответ Л.Д. Джеймса затем бегите,

mysql> alter user 'root'@'localhost' identified by '<password>';

Пароль для пользователя root установлен!

операционная

Выполните следующие действия, чтобы установить пароль root в версии 18.04:

Поскольку пароль для пользователя root не установлен, просто войдите в систему с помощью пустой пароль

sudo mysql -u root -pEnter password: (press enter as no password is set)

после этого можно легко запустить запрос

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

По-видимому, установка mysql-сервера на 16.04 (или любая установка 5.7?) разрешает root-доступ не через пароль, а через auth_socket плагин. Бегущий sudo mysql -u root (n.b. без пароля) выдаст вам консоль mysql, в то время как выполнение команды от имени пользователя, не являющегося root, запросит у вас пароль.

Казалось бы, изменение пароля не имеет большого значения, поскольку серверная часть аутентификации даже не проверяет наличие пароля. Существует очень подробная статья о том, как измените плагин и переключитесь на аутентификацию по паролю.

После установки просто:

  1. sudo mysql(да, нет пользователя, нет пропуска)

  2. Теперь вы находитесь в консоли mysql.Выполнять:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

  3. FLUSH PRIVILEGES;

Это оно. Теперь вы можете войти в консоль в следующий раз, как обычно:

mysql -u root -pmy_new_pass
  1. существует учетная запись пользователя по умолчанию.

    $ vim /etc/mysql/debian.cnf 

    вы получите эту учетную запись от него следующим образом:

    user     = debian-sys-maintpassword = nUZTARYslBsASzpw
  2. вы входите в систему с этой учетной записью

    $ mysql -u debian-sys-maint -p
  3. измените свой пароль root

    mysql> show databases;mysql> use mysql;mysql> update user set authentication_string=PASSWORD("new_password") where user='root';mysql> update user set plugin="mysql_native_password";mysql> flush privileges;mysql> quit;
  4. перезапустить mysql

    $ /etc/init.d/mysql restart;

тогда вы сможете mysql -u root -p с вашей предыдущей настройкой.

Добавление к основному ответу, если вы застряли на

"mysqld_safe Запуск демона mysqld с базами данных из /var/lib/mysql"

1. следует помнить, что вы должны использовать другое окно терминала, чтобы ввести следующую команду.

$ sudo mysql --user=root mysql

Если вы попытаетесь сделать это в том же окне, это приведет к завершению процесса безопасного режима mysqld.

Вот как настроить mysql-server с помощью запрос пароля терминала в Ubuntu 18.10.

  1. Загрузите Репозиторий MySQL APT через https://dev.mysql.com/downloads/repo/apt/
  2. cd в ваш каталог, где вы загрузили и запустили dpkg -i mysql-apt-config_0.8.13-1_all.deb (проверьте номер вашей версии)
  3. В меню подсказки выберите последний вариант "ок", а затем снова "ок".

  4. Обновите и установите mysql-сервер и mysql-клиент:

sudo apt updatesudo apt install mysql-сервер mysql-клиент
  1. Введите свой пароль root в promt.
  2. Выбрать "Use Legacy Authentication Method" если ваши запущенные фреймворки /приложения (например, laravel), которые не поддерживают новый "Strong Password Encryption" тем не менее, в противном случае, если ваш фреймворк / приложение поддерживает "Strong Password Encryption" затем выберите его.
  3. Войдите в систему как root и проверьте, работает ли это.