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

16

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

После установки я получил ERROR 1045 , когда попытался войти в систему, поскольку root и mysql_secure_installation сбросили ту же ошибку. I purge d и autoremove d затем переустановить, но он не работает.

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

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

The following additional packages will be installed:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Suggested packages:
  mailx tinyca
The following NEW packages will be installed:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/17,9 MB of archives.
After this operation, 160 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
Selecting previously unselected package libaio1:amd64.
(Reading database ... 227144 files and directories currently installed.)
Preparing to unpack .../libaio1_0.3.110-2_amd64.deb ...
Unpacking libaio1:amd64 (0.3.110-2) ...
Selecting previously unselected package mysql-client-core-5.7.
Preparing to unpack .../mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-client-5.7.
Preparing to unpack .../mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-client-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server-core-5.7.
Preparing to unpack .../mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server-5.7.
Preparing to unpack .../mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Unpacking mysql-server-5.7 (5.7.12-0ubuntu1) ...
Selecting previously unselected package mysql-server.
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Setting up libaio1:amd64 (0.3.110-2) ...
Setting up mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-client-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.12, use --force if you still need to run mysql_upgrade
Setting up mysql-server (5.7.12-0ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
    
задан spqa 03.05.2016 в 16:04
источник

4 ответа

25

Вы можете восстановить или установить пароль 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
    
ответ дан L. D. James 03.05.2016 в 16:27
источник
10

Я установил пароль таким образом:

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

sudo mysql_secure_installation

Он покажет:

  

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

     

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

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:
     

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

    
ответ дан d a i s y 04.05.2016 в 06:55
2

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

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

    
ответ дан carp 12.11.2016 в 10:57
0

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

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

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

$ sudo mysql --user=root mysql

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

    
ответ дан 9kSoft 15.09.2017 в 10:03