Сервер MySQL 5.7 вже був встановлений за замовчуванням на моєму новому Linux Mint 19.
Але що таке root
пароль MySQL ? Виявляється, що:
Інсталяція за замовчуванням використовує auth_socket
для автентифікації замість паролів!
Це дозволяє вхід без пароля за умови, що він увійшов до системи Linux з однаковим іменем користувача. Для входу в систему як корінь MySQL user
можна використовувати sudo:
sudo mysql
Але як потім змінити кореневий пароль? Щоб проілюструвати, що відбувається, я створив нового користувача "я", з повними привілеями, з:
mysql> CREATE USER 'me'@'localhost' IDENTIFIED BY 'my_new_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Порівняння "мене" з "коренем":
mysql> SELECT user, plugin, HEX(authentication_string) FROM mysql.user WHERE user = 'me' or user = 'root';
+
| user | plugin | HEX(authentication_string) |
+
| root | auth_socket | |
| me | mysql_native_password | 2A393846353030304545453239394634323734333139354241344642413245373537313... |
+
Оскільки він використовує auth_socket, кореневий пароль змінити неможливо: SET PASSWORD
команда не вдається і mysql_secure_installation
нічого не досягає ...
==> Щоб застосувати цей альтернативний режим автентифікації та повернути користувача MySQL root
до використання паролів:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOME_NEW_ROOT_PASSWORD';
Гарне пояснення.
Детальніше з посібника MySQL .