mysql не вимагає кореневого пароля при установці


54

Раніше я apt install mysql-serverвстановлював MySQL на Ubuntu 16.04, але під час встановлення він не запитував корінний пароль.

Після встановлення я потрапив, 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-сервер 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-сервера-5.7 (5.7.12-0ubuntu1) ...
Вибір раніше невибраного пакету mysql-сервера.
Підготовка до розпакування ... / 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) ...

Відповіді:


60

Ви можете відновити або встановити кореневий пароль, не знаючи поточного, запустивши 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

Це встановлений кореневий пароль, який ви будете виконувати всередині 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 в таблиці користувача немає стовпця з іменем пароля. Отже, наступна команда працювала на мене. оновити встановлений користувачем аутентифікацію_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, щоб захистити його, нам знадобиться поточний пароль для кореневого користувача. Якщо ви тільки що встановили MariaDB, і ви ще не встановили кореневий пароль, пароль буде порожнім, тому вам просто слід натиснути клавішу Enter.

Enter current password for root (enter for none): (тут натисніть Enter)

Добре, успішно використаний пароль, рухається далі ...

Встановлення кореневого пароля гарантує, що ніхто не може увійти до кореневого користувача 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 ЦИЙ МЕТОД НЕ ПРАЦЮЄ

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

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означає натиснути клавішу Enter без пароля.
ромашка

2
Оскільки concers ubuntu 18.04 або debian 9+ він не з’єднується з порожнім паролем, і навіть після скидання пароля для root він все одно відмовляється підключатися
chefarov

@chefarov Зустрічаючи ту саму проблему, сильно засмучує
RedactedProfile

Дійсно, я все одно отримую ту саму помилку
Джеймі Хатбер

16

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

Здавалося б, зміна пароля не має великого значення, оскільки автентичний сервер навіть не перевіряє пароль. Існує дуже вичерпна стаття про те, як змінити плагін і перейти на автентифікацію пароля .


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


3
Я спробував багато інших відповідей, але ця працювала на Amazon EC2
Haris ur Rehman

2
Це була правильна відповідь для WSL Ubuntu (Linux в Windows).
Фер Гарсія

2
Це єдина відповідь, яка працювала для мене на новій установці ubuntu 18.04 на Google хмарі.
Аакаш

1
Працював для мене на Ubuntu 19.04. Я запускав mysql_secure_myinstallation, але здавалося, що пароль root не встановлений.
Jens Wagemaker

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з вами попередні налаштування.


Я намагався будь-яке інше рішення, і це єдине, що працювало на мене. (Linux Mint 19.2).
ElectroBuddha

0

Додавши до основної відповіді, Якщо ви застрягли

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

1 слід пам’ятати, що вам потрібно використовувати інше вікно терміналу для введення наступної команди.

$ sudo mysql --user=root mysql

Якщо ви спробуєте зробити це в тому ж вікні, воно закриє процес safemode mysqld.


-1

Ось як налаштувати mysql-serverза допомогою підказки про термінал в Ubuntu 18.10.

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

  4. Оновіть та встановіть mysql-сервер та mysql-клієнт:

sudo apt оновлення
sudo apt встановити mysql-сервер mysql-client
  1. Введіть свій кореневий пароль у пром.
  2. Виберіть, "Use Legacy Authentication Method"чи працюють ваші запущені рамки / програми (наприклад, laravel), які ще не підтримують нове "Strong Password Encryption", інакше якщо ваша рамка / програма підтримує, "Strong Password Encryption"тоді виберіть його.
  3. Увійдіть як root і перевірте, чи працює він.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.