Не вдається підключитися через MySQL Workbench до localhost в Ubuntu 16.04 (без пароля root)


19

Здається, веб-сайт Oracle передбачає, що він працює лише в 15 і 14. http://dev.mysql.com/downloads/workbench/

Крім того, дві мої машини Ubuntu 16.04, здається, не можуть підключитися (Доступ відхилено для кореневих помилок)

Картина

Встановлюється нормально. Відкривається добре. Але він не підключиться до localhost.

У когось є удача?


Ви будували його з джерела? Яка точна помилка? Як у випадку введення неправильного пароля?

Так, це схоже. Але пароль не має пароля. І я можу правильно підключитися до root у командному рядку. І я ще раз перевірив усі привілеї та побіг. FLUSH PRIVILEGES; На даний момент мені цікаво, чи хтось може підключитися до localhost з 16, оскільки на сайті Oracle прямо написано лише 14 та 15
Джонатан

Я не бачив, як Oracle стверджував, що це не працює, я просто не бачив двійковий файл для Xenial. Однак я бачу MySQL-верстак тут, packages.ubuntu.com/xenial/mysql-workbench . Ця помилка не схожа на помилку сумісності програмного забезпечення. Увімкніть журнал на mysql та збільште рівень реєстрації до 2 і подивіться, чи журнал відображає ваш запит.

@ bc2946088 mysql-workbenchзнаходиться у сховищі Всесвіту за 16.04 посилання
Videonauth

ви перевірили будь-який із 4 варіантів? ;-) WB прекрасно працює для мене (з 5,7 btw). Доказ нижче.
Rinzwind

Відповіді:


31

Проблема, ймовірно, пов’язана з автентифікацією сокета для кореневого користувача за замовчуванням, коли не встановлено пароль, під час оновлення до 16.04. Цей важливий застереження задокументований у примітках до випуску 16.04 :

Поведінка пароля, коли пароль root MySQL порожній змінився. Упаковка тепер дозволяє аутентифікацію сокета, коли пароль root MySQL порожній. Це означає, що не-root користувач не може увійти як кореневий користувач MySQL з порожнім паролем.

З будь-якої причини MySQL Workbench, що поставляється з 16.04, не працює з коробкою з сервером MySQL, принаймні для мене. Я намагався використовувати "Local Socket / Pipe" для підключення різними способами, але безрезультатно.

Рішення полягає в тому, щоб повернутись до автентифікації паролів. Ви можете зробити це, увійшовши в MySQL за допомогою аутентифікації socket, виконавши:

sudo mysql -u root

Після входу:

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

який повернеться до початкової (старої за замовчуванням) автентифікації пароля. Якщо ви спробували якийсь інший метод виправити проблему, вам потрібно переконатися, що поле "плагін" у mysql.user встановлено на "auth_token", що може зажадати використання mysqld_safe для входу в MySQL у випадку, якщо ви Я так бачив речі, як я.

Кредит на блозі Мігель Ньєто в для цього рішення.


Дивно, я ніколи цього не усвідомлював.
Джонатан

Це виправлено, але наступного разу, коли я запустив правильне оновлення, він знову зламався.
Джонатан

Що було результатом влучного оновлення?
Майк М

Я цього не бачив, тому що не помітив, поки наступного разу запустив mysql, набагато пізніше
Джонатана

Цікаво, чи це річ Ubuntu 16.04 або річ mysql 5.7 (чи змінили цю зміну Oracle чи Canonical?)
Джонатан

23

MySQL 5.7 і новіші версії не підтримують з'єднання як "root", mysql-workbenchтому ви повинні створити звичайного користувача та підключитися через це.

sudo mysql -u root -p

Створіть користувача під назвою "адміністратор" і використовуйте його для підключення mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

Ця відповідь була ідеальною для мене, дякую Джонатане.
Кріс Еванс

2
Це працює для Ubuntu 18.04
tadeubarbosa

Ідеально. Дякую (18.04.2)
Рон Нуні

5

Це питання може бути два роки, але моя робота з mysql-workbench сьогодні ввечері дала мені відповідь на це.

Користувач root зараз користувачі auth_socket аутентифікації за замовчуванням. Єдиний спосіб кореневого доступу отримати доступ - це увійти в систему як root.

Я виявив це, запустивши mysql -u rootяк root користувача, так і стандартного користувача.

Він не працює у стандартного користувача.

Отже, наступне моє запитання було - яким користувачем працює mysql-workbench. Виявляється, він за замовчуванням працює як стандартний користувач. Щоб змусити його працювати як користувач root, його потрібно запустити з root. Тому я зайшов у користувальницьку CLI і набрав 'mysql-workbench'.

Потім мені довелося зайти в налаштування для кореневого користувача, як показано тут. Розташування файлу дійсне для установки ubuntu 18.04.

Налаштування кореневого з'єднання mysql-workbench.

Якщо це розташування сокета недійсне, вам потрібно буде зайти в mysql CLI з root або sudo і виконати наступну команду.

Команда MySQL CLI для пошуку сокета.

Після правильних налаштувань протестуйте з'єднання. Це має бути успішним, і ви готові йти.


Дякую за це! Мені не потрібно було повертати зміни, пов’язані з безпекою, для автентифікації для підтримки більш старого інструменту, коли я можу просто сказати, що цей інструмент для підключення використовує новіший метод.
Аарон

Чи можу я досягти локального зв'язку таким чином? Я не розумію, чому ми не можемо з'єднатися через TCP / IP.
John gonidelis

2

Для мене добре працює, і я нічого особливого не робив. Встановлено mysql-server-5.7та робочий стіл, як з командного рядка, так і налаштуйте користувача з паролем та налаштуйте звичайні дозволи бази даних (також звичайним методом).

введіть тут опис зображення

І з базою даних та таблицею:

введіть тут опис зображення


Цікаво. Любіть посилання на світ дисковолу. Коли я переконфігуюю пакунки mysql, я не отримую запит на зміну пароля. Чи ти? Я схиляюся до думки, що у мене пошкоджена установка чи якийсь конфлікт. Я думаю, що я повинен отримати запит на зміну пароля root.
Джонатан

1

Створіть обліковий запис користувача з відповідними адміністративними привілеями, які можна підключити через робочий стіл mysql, використовуючи плагін auth_socket. Зауважте, що це не працює для кореневих з'єднань з сервером mysql .

Вхід в mysql з термінального сеансу:

$sudo mysql

Якщо ви можете це зробити, тоді плагін auth_socket увімкнено, і кореневий обліковий запис автентифікується за допомогою цього плагіна. Зауважте, що це налаштування за замовчуванням під час встановлення mysql на ubuntu після запуску захищеного сценарію встановлення.

Спочатку створіть користувача mysql для вашої облікової записи "валерія":

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

Увімкніть адміністративні права для облікового запису:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

Вийдіть з оболонки:

mysql> exit

Тоді в mysql workbench:

  1. Створіть нове з'єднання
  2. Виберіть спосіб підключення як Local Socket / Pipe
  3. Встановіть Socket / Pipe Path на: /var/run/mysqld/mysqld.sock (зверніть увагу, що це шлях для системи Debian / Ubuntu та зміни для інших ароматів Linux)
  4. Встановити ім'я користувача ("валерія" у цьому прикладі)

Потім ви зможете підключитися до сервера mysql за допомогою цього з'єднання.


0

спробуйте це

виберіть базу даних mysql

1: використовувати mysql;

2: UPDATE користувальницький набір plugin = 'mysql_native_password', де User = 'root';

3: привілеї змивання;

4: вихід;

~ $ sudo service mysql перезапуск


0

MySQL-сервер на хості AWS під управлінням Ubuntu 16.04; mysql-workbench на ноутбуці Ubuntu 16.04; використовує з'єднання KeyPair.

Після налаштування тестового db з'єднання спрацювало. Але насправді зв’язок завжди провалювався з таким повідомленням, яке було опубліковане Джонатаном Лідером. Перевірив журнал ~/.mysql/workbench/logі знайшов кілька повідомлень "відмовлено у дозволі" .

Тепер я можу змусити mysql-робочий стіл працювати з: sudo mysql-workbench

А пізніше я можу зайти і chmodдо каталогів, які потребують дозволу.


2
Це відповідь на запитання?
Джордж Удосен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.