TL; DR: Щоб отримати доступ до новіших версій mysql / mariadb після як кореневого користувача, після нової інсталяції вам потрібно бути в кореневій оболонці (тобто sudo mysql -u root
або mysql -u root
всередині оболонки, започаткованої su -
або sudo -i
спочатку)
Щойно зробивши те саме оновлення, в Ubuntu у мене виникла та сама проблема.
Що дивно, це було
sudo /usr/bin/mysql_secure_installation
Я прийняв би свій пароль і дозволив би його встановити, але я не зміг увійти як root
через mysql
клієнта
Мені довелося починати з маріадби
sudo mysqld_safe --skip-grant-tables
щоб отримати доступ як root, в той час як всі інші користувачі все ще могли отримати штраф.
Дивлячись на mysql.user
таблицю, яку я помітив, для кореня встановлено plugin
стовпець, unix_socket
тоді як для всіх інших користувачів встановлено значення "mysql_native_password". Швидкий погляд на цю сторінку: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ пояснює, що Unix Socket дозволяє входити в систему шляхом узгодження uid
процесу, що працює під керуванням клієнта, та з користувачем у програмі.mysql.user
стіл. Іншими словами, щоб отримати доступ до mariadb, оскільки root
ви повинні бути авторизовані як root.
Звичайно, достатньо перезапустити мого демона mariadb з потрібною автентифікацією, з якою я можу ввійти як root
sudo mysql -u root -p
або
sudo su -
mysql -u root -p
Зробивши це, я подумав про те, як отримати доступ без того, щоб робити судо, що просто питання запуску цих запитів mysql
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(замінивши <password>
потрібний пароль root mysql). Це ввімкнуло вхід пароля для кореневого користувача.
Альтернативно виконується запит mysql:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Змінить кореневий обліковий запис, щоб використовувати логін для входу без зміни пароля, але це може залишити вас з встановленням mysql / mariadb без пароля root.
Після будь-якого з них вам потрібно перезапустити mysql / mariadb:
sudo service mysql restart
І вуаля, я мав доступ зі свого особистого рахунку через mysql -u root -p
ЗАБУДУЙТЕ ЗАМОВЛЕННЯ, ЩО РОБОТИ ЦЬОГО СКЛАДАЄТЬСЯ БЕЗПЕЧНОСТІ Імовірно, розробники MariaDB вирішили працювати з кореневим доступом так, як це, з усієї причини.
Думаючи про це, я дуже радий sudo mysql -u root -p
тому, що я переходжу до цього, але я подумав, що опублікую своє рішення, оскільки не можу знайти його в іншому місці.