Невозможно подключиться через MySQL Workbench к локальному хосту в Ubuntu 16.04 (без пароля root)

17

Сайт Oracle предполагает, что он работает только 15 и 14. http://dev.mysql.com/downloads/workbench/

Кроме того, две из моих машин с Ubuntu 16.04, похоже, не могут подключиться (Access is Denied ошибки для root)

Картина

Устанавливается нормально. Открывается нормально. Но он не будет подключаться к localhost.

У кого-нибудь есть удача?

Джонатан
источник
Вы построили это из источника? Какова точная ошибка? Подобно тому, когда вы указали неверный пароль?
Да это похоже. Но у root нет пароля. И я могу подключиться к корню в командной строке правильно. И я дважды проверил все привилегии и побежал. FLUSH PRIVILEGES; На данный момент мне любопытно, может ли кто-нибудь подключиться к локальному хосту из 16, поскольку сайт Oracle явно говорит только о 14 и 15
Джонатан
Я не видел, чтобы Oracle заявлял, что это не работает, я просто не видел двоичный файл для Xenial. Однако я вижу mysql-workbench здесь, packages.ubuntu.com/xenial/mysql-workbench . Эта ошибка не выглядит как ошибка совместимости программного обеспечения. Включите ведение журнала на MySQL и увеличьте уровень ведения журнала до 2 и посмотрите, показывает ли журнал ваш запрос.
@ bc2946088 mysql-workbenchнаходится в хранилище юниверсов для ссылки
Видеонавт
Вы проверили любой из 4 вариантов? ;-) WB прекрасно работает для меня (с 5,7 кстати). Доказательство ниже.
Rinzwind

Ответы:

27

Вероятно, проблема связана с тем, что аутентификация сокета включена для пользователя root по умолчанию, когда пароль не установлен, во время обновления до 16.04. Это важное предупреждение задокументировано в примечаниях к выпуску от 16.04 :

Поведение пароля, когда пароль root в MySQL пуст, изменилось. Упаковка теперь позволяет аутентификацию сокета, когда пароль root MySQL пуст. Это означает, что пользователь без полномочий root не может войти в систему как пользователь root MySQL с пустым паролем.

По какой-то причине MySQL Workbench, поставляемый с 16.04, не работает из коробки с сервером MySQL, по крайней мере, для меня. Я пытался использовать «Local Socket / Pipe» для подключения несколькими различными способами, но безрезультатно.

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

sudo mysql -u root

После входа в систему:

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

который вернется к аутентификации с использованием собственного (старого по умолчанию) пароля. Если вы попытались каким-то другим способом решить проблему, вам нужно убедиться, что для поля «plugin» в mysql.user установлено значение «auth_token», что может потребовать использования mysqld_safe для входа в MySQL в случае, если вы Занимался такими вещами, как я.

Благодарим Мигеля Нието в блоге за это решение.

Майк М
источник
Удивительно, я бы никогда этого не понял.
Джонатан
Это исправило это, но в следующий раз, когда я запустил apt update, оно снова сломалось.
Джонатан
Каков был выход обновления apt?
Майк М
Я этого не видел, потому что не заметил, пока в следующий раз не запустил mysql, гораздо позже
Джонатан
Интересно, это Ubuntu 16.04 или mysql 5.7 (Oracle или Canonical сделали это изменение?)
Джонатан
22

MySQL 5.7 и выше не поддерживает подключение как «root», mysql-workbenchпоэтому вы должны создать обычного пользователя и подключиться через него.

sudo mysql -u root -p

Создайте пользователя с именем «admin» и используйте его для подключения 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)
Рон Нуни
4

Этому вопросу может быть два года, но моя работа с mysql-workbench сегодня вечером, кажется, дала мне ответ на него.

Пользователь root теперь по умолчанию использует аутентификацию auth_socket. Единственный способ получить доступ root - войти в систему как root.

Я выяснил это, запустив mysql -u rootкак пользователя root, так и обычного пользователя.

Это не будет работать под обычным пользователем.

Поэтому мой следующий вопрос был - от какого пользователя запускается mysql-workbench. Оказывается, он работает как стандартный пользователь по умолчанию. Чтобы заставить его работать от имени пользователя root, его нужно запустить из-под root. Поэтому я вошел в CLI пользователя root и набрал «mysql-workbench».

Затем мне пришлось зайти в настройки для пользователя root, как показано здесь. Расположение файла действительно для установки Ubuntu 18.04.

Настройки корневого соединения mysql-workbench.

Если это местоположение сокета недопустимо, вам нужно войти в mysql CLI от root или sudo и выполнить следующую команду.

MySQL CLI команда для поиска сокета.

После правильных настроек проверьте соединение. Это должно быть успешным, и вы готовы к работе.

Джордж Таскер
источник
Спасибо тебе за это! Мне не нужно возвращать изменения, связанные с безопасностью, в аутентификацию для поддержки более старого инструмента, когда я могу просто указать этому инструменту для подключения с использованием более нового метода.
Аарон
Достигаю ли я локальное соединение через этот путь? Я не понимаю, почему мы не можем подключиться через TCP / IP.
Джон Гониделис
2

Работает нормально для меня, и я ничего особенного не сделал. Устанавливается mysql-server-5.7и запускается как из командной строки, так и настраивает пользователя с паролем и устанавливает обычные права доступа к базе данных (также с помощью обычного метода).

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

И с базой данных и таблицей:

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

Rinzwind
источник
Интересный. Люблю референсный мир. Когда я переконфигурирую пакеты mysql, я не получаю приглашение изменить пароль. Вы? Я склоняюсь к мысли, что у меня поврежденная установка или какой-то конфликт. Я думаю, что я должен получить приглашение изменить пароль root.
Джонатан
1

Создайте учетную запись пользователя с соответствующими административными привилегиями, которая может подключаться через рабочий стол mysql с помощью плагина auth_socket. Обратите внимание, что это не работает для корневых подключений к серверу mysql .

Войдите в MySQL из терминальной сессии:

$sudo mysql

Если вы можете сделать это, то плагин auth_socket включен, и корневая учетная запись аутентифицируется с помощью этого плагина. Обратите внимание, что это установка по умолчанию при установке mysql в Ubuntu после запуска сценария безопасной установки.

Сначала создайте пользователя mysql для вашей учетной записи valerie:

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

Включите административные привилегии для учетной записи:

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

Выход из оболочки:

mysql> exit

Затем в MySQL верстак:

  1. Создать новое соединение
  2. Выберите способ подключения в качестве локальной розетки / трубы
  3. Установите путь к сокету / каналу : /var/run/mysqld/mysqld.sock (обратите внимание, что это путь для системы Debian / Ubuntu и изменения для других разновидностей Linux)
  4. Установите имя пользователя (в этом примере valerie)

После этого вы сможете подключиться к серверу mysql через это соединение.

Дэвид
источник
0

попробуй это

выберите базу данных MySQL

1: использовать mysql;

2: ОБНОВЛЕНИЕ пользователя set plugin = 'mysql_native_password', где User = 'root';

3: сбросить привилегии;

4: выход;

$ sudo service mysql restart

URI
источник
0

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

После настройки Test db соединение работало. Но фактическое соединение всегда заканчивалось сообщением, подобным сообщению Джонатана Лидера. Проверил журнал на ~/.mysql/workbench/logи обнаружил несколько сообщений «Отказано в доступе» .

Теперь я могу заставить работать mysql-workbench: sudo mysql-workbench

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

Усман Сулеман
источник
2
Это ответ на вопрос?
Джордж Удосен