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

54

Я использовал 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-сервер ядро-5,7
Предлагаемые пакеты:
  mailx tinyca
Будут установлены следующие НОВЫЕ пакеты:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  MySQL-сервер ядро-5,7
0 обновлено, 6 вновь установлено, 0 для удаления и 0 не обновлено.
Нужно получить 0 B / 17,9 МБ архивов.
После этой операции будет использовано 160 МБ дополнительного дискового пространства.
Вы хотите продолжить? [Да / Нет] у
Предварительная настройка пакетов ...
Выбор ранее невыбранного пакета 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_upgrade
Настройка mysql-сервера (5.7.12-0ubuntu1) ...
Обработка триггеров для libc-bin (2.23-0ubuntu3) ...
spqa
источник

Ответы:

61

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

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

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

$ 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
Л.Д. Джеймс
источник
11
в mysql 5.7.12 нет столбца с именем password в пользовательской таблице. Следовательно следующая команда работала для меня. обновить пользовательский набор authentication_string = PASSWORD ('новый-пароль'), где user = 'root';
Код
7
Я все еще получаюERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr
@ ErelSegal-Halevi Есть две вещи, которые вы должны сделать. Беги $ mysql_upgrade -u root -p. Также попробуйте приведенную выше команду RP Singh.
Л.Д. Джеймс
Я также все еще получаю эту ошибку.
Джейми Хатбер
SET PASSWORD FOR 'root' = PASSWORD('your-password')если вы используете mariadb
user1036719
37

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

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

sudo mysql_secure_installation

Это покажет:

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

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

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

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

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

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, сначала следуйте первым трем командам или первым двум шагам ответа LD James, затем выполните:

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

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

ИЛИ ЖЕ

Выполните следующие шаги для установки пароля root в 18.04:

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

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

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

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
маргаритка
источник
2
Проблема в случае этого вопроса состоит в том, что пользователь не может получить доступ к указанным вами подсказкам, потому что он не знает current password for root.
Л.Д. Джеймс
@LDJames да, ты прав. Я не помню об ОШИБКЕ: 1405, когда я бегу, mysql_secure_installationно sudo mysql_secure_installationработал на меня. Установка MySQL не запрашивает пароль. Это случилось со мной так же. и here press enterозначает нажмите ввод без пароля.
маргаритка
2
Как полагает Ubuntu 18.04 или Debian 9+, он не соединится с пустым паролем и даже после сброса прохода для root, он все равно отказывается подключаться
chefarov
@chefarov Столкнувшись с той же проблемой, очень расстраивает
RedactedProfile
Действительно, я все еще получаю ту же ошибку
Джейми Хатбер
17

Судя по всему, установка mysql-сервера 16.04 (или любая установка 5.7?) Позволяет получить root-доступ не через пароль, а через плагин auth_socket . Запуск sudo mysql -u root(nb w / oa password) даст вам консоль mysql, тогда как запуск команды без полномочий root запрашивает пароль.

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

карп
источник
4
Я смог подтвердить с новой установкой apt install mysql-serverбез указания пароля на 18.04. Симптом и решение точно так же, как описано.
EricC
так как, черт возьми, я могу подключиться?
Джейми Хатбер
9

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

1.

sudo mysql

(да, нет пользователя нет прохода)

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

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

3.

FLUSH PRIVILEGES;

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

    mysql -u root -p my_new_pass

DimiDak
источник
3
Я пробовал много других ответов, но этот работал на Amazon EC2
Харис ур Рехман
2
Это был правильный ответ для WSL Ubuntu (Linux на Windows).
Фер Гарсия
2
Это единственный ответ, который работал для меня на новой установке Ubuntu 18.04 на Google Cloud.
Аакаш
1
Работал для меня на Ubuntu 19.04. Я запустил mysql_secure_myinstallation, но казалось, что пароль root не был установлен.
Йенс Вейджмейкер
1
Я перепробовал десятки решений. Это был самый простой и единственный, который работал.
mreff555
4
  1. есть учетная запись пользователя по умолчанию.

    $ vim /etc/mysql/debian.cnf 
    

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

    user     = debian-sys-maint
    password = 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с предыдущей настройкой.

pwxcoo
источник
Я пробовал все остальные решения, и это единственное, что сработало для меня. (Linux Mint 19.2).
ElectroBuddha
0

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

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

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

$ sudo mysql --user=root mysql

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

Мохд Абдул Муджиб
источник
-1

Вот как выполнить настройку 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
sudo apt установить mysql-сервер mysql-клиент
  1. Введите свой пароль root в командной строке.
  2. Выберите, "Use Legacy Authentication Method"если ваши работающие фреймворки / приложения (такие как laravel), которые еще не поддерживают новое "Strong Password Encryption", в противном случае, если ваш фреймворк / приложение поддерживает, "Strong Password Encryption"выберите его.
  3. Войдите в систему как root и проверьте, работает ли он.
ThomasAFink
источник