Не могу подключиться linux mysql

📑 Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu

По умолчанию сервер MySQL настроен таким образом, что к нему разрешены подключения только с локальной машины, следовательно, подключиться из-вне (по интернет или локальной сети) не получится.

Убедиться в этом можно набрав на сервере команду:

В результате получите что-то типа этого:

Отсюда видно, что mysql слушает только интерфейс localhost (127.0.0.1). Это не всегда удобно, особенно когда есть необходимость выделить под сервер mysql отдельный сервер. А в рамках корпоративной локальной сети такое бывает очень часто.

Чтобы разрешить серверу MySQL принимать запросы из-вне необходимо предпринять несколько несложных шагов:

  1. Поменять одну строчку в конфигурационном файле MySQL;
  2. Создать сетевого пользователя с необходимыми правами.

Разрешаем MySQL слушать интерфейс, который смотрит во внешнюю сеть

Открываем конфигурационный файл любимы редактором, например nano, из под привилегированного пользователя:

Если у вас установлен сервер mariaDB, то конфигурационный файл находится в другом месте:

и меняем 127.0.0.1 на 0.0.0.0 — тогда сервер будет слушать все интерфейсы компьютера, либо задаем конкретный ip-адрес локального интерфейса, который смотрит в локальную сеть. Например — 192.168.122.10.

Теперь остается только перезапустить сервис MySQL:

Теперь осталось только завести пользователя, которому разрешено обращаться к серверу MySQL извне.

Создание внешнего пользователя MySQL

Теперь нужной подключиться к MySql с паролем суперпользователя системы (системы. а не MySQL):

После подключения к MySQL можно создать пользователя и дать привилегию, например:

Здесь дается полный доступ к базе данных userdata пользователю с логином user и паролем password, подключающемуся с любого ip.

Можно ограничить права пользователя, разрешив ему подключаться к базе только с определенного ip. Для этого меняем % на конкретный ip-адрес, например 192.168.122.16

А можно и разрешить пользователю всё — подключаться ко всем базам с любого ip-адреса

Это делать не желательно, если конечно вы не заводите себя.

Источник

Не могу подключиться к серверу баз данных как через phpMyadmin, так и через терминал.

Суть в том что после моих кривых рук, не могу подключиться к серверу БД MySql через phpMyAdmin, через терминал. Кстати, на сриншоте где я пытаюсь подключится к серверу БД через терминал, вы можете наблюдать как я пытаюсь восстановить пассворд к руту, но без успешно, возможно дело не в пароле? Лог мускула вот тут.

У тебя она не запускается в safe режиме, потому что сокет не может заделать

Можно еще попросить не паковать ничего в RAR,и если есть возможность , то не делать скриншоты , а копипастить сюда важные части с помощью тега code. Это ппц как неудобно, ходить по ссылкам и всматриваться в мелкие скрины. А уж RAR ( как в прошлом посте) я из принципа распаковать не буду.

Читайте также:  Microsoft windows server management service

Ну ладно, больше не буду. 🙂

Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists.

Я так понял это значит что этой директории не существует? И как это исправить?

В первом же посте всё написано.

Один раз получилось приконектится к CБД, но теперь уже нет (я имею ввиду режим восстановления пароля MySql, выполнил вот это:

ls -la /var/run/mysqld

Ничего при запущенном мускуле в нормальном режиме. Вот оно кстати:

Что то у тебя ни mysqld.pid нету на обычном месте, и с mysqld.sock проблемы, а что кажет:

grep -Ev «(^$|#)» /etc/my.cnf

ну и проверяй есть ли они там, права на директории где это у тебя создается или должно создаваться.

Файла /etc/my.cnf нет, система Ubuntu 17.04. Но есть файл /etc/mysql/mysql.conf.d/mysqld.cnf и в нём есть вот эти строки:

Вот версия мускула.

так все таки не создаются у тебя /var/run/mysqld/mysqld.pid и /var/run/mysqld/mysqld.sock

их ведь нет, мускул останавливал- пускал вновь? читай логи системные и самого мускула, почему он не может создать их, права и пути вроде в норме.

Возможно ли переустановить мускул? Тем более что данных там у меня нет. И да, я устанавливал lamp-server при установке Ububntu 17.04, придётся ли после переустановки мускула связывать его как-то с другими службами из lamp-server?

Ну а почему нет?! не знаю что там у вас в Убунте за пакетный менеджер, у меня Fedora древняя на yum еще, который уже тоже устарел. 😉 У вас наверно apt доки по нему тоже полно, гугл знает.

если из репозитария:

Даже если и есть какие то базы, то они легко копируются, опять же не знаю как в современном дистре и убунте у меня базы в папках \var\lib\mysql

или штатно архивирует mysqldump

Погуглил про lamp-server просвятился, вон оно оказывается, что это за зверь. Имхо никак особенно все это не связанно, ставил все это по отдельности. и сейчас могу легко снести мускул и поставить вновь, накатить базу и с апача будет все работать. Поправьте старшеи товарищи если я не прав.

Да я уже решил проблему, просто переустановил mysqld mysqld-server-core и mysqld-server. А баз там никаких пока что не было. 🙂 И да что-то мне подсказывает что проблема возникла в связи с тем что я каким-то образом повредил таблицы привилегий. Вот кстати то, что я щёлкнул в phpmyadmin из за чего собственно всё и поломалось.

Источник

Настройка удаленного подключения к MySQL

Материал статьи предназначен для начинающих, профессионалы Хабра в большинстве не нуждаются в изложении этого вопроса. Тем не менее, те, кто делает первые шаги в работе с MySQL часто задают подобные вопросы. Статья написан для тех, кто впервые столкнулся с необходимостью установить удаленное соединение с базой данных MySQL. В статье рассказывается о сложностях, которые могут возникнуть при настройке удаленного соединения и о методах их преодоления.

Как установить соединение с удаленной базой?

Для установления удаленного соединения нужно указать параметры, характеризующие устанавливаемое подключение. Это

  • —host
  • —protocol
  • —port

Из четырех возможных протоколов удаленное подключение позволяет только TCP/IP, поэтому первым требованием является доступность компьютера из сети по TCP/IP.
Далее необходимо добавить имя хоста (или ip адрес машины, на которой расположена база) в строке подключения:
mysql —host=host_name
Обратите внимание, что указание в качестве имени хоста значения localhost (или же отсутствие такого параметра, что то же самое, так как это дефолтное значение) приводит к обращению на локальную машину.

Читайте также:  Search all processes linux

Учтите, что параметры имеют две формы записи: длинную и короткую. В свою очередь, если параметр имеет значение (как например, в случае хоста необходимо указать имя хоста к которому нужно подключиться), то короткая форма записи может использоваться с пробелом или без (исключением из этого правила является пароль).
Таким образом, следующие три записи являются эквивалентными:

  • mysql —host=myhost.ru
  • mysql -h myhost.ru
  • mysql -hmyhost.ru

Как настроить соединение с удаленной базой?

В MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться. По умолчанию доступ разрешен только с локальной машины, т.е. для пользователя user@localhost. Права на доступ пользователям даются с помощью команды GRANT. Команда выполняется под рутом.

Например, если я хочу создать юзера, который сможет коннектиться с любого хоста с полными правами, то следует выполнить следующую команду:
GRANT ALL PRIVILEGES ON `имя_базы`.* TO myuser@% IDENTIFIED BY ‘пароль’;

Примечание. Обратите внимание, что данная команда дает доступ пользователю myuser со всех IP кроме 127.0.0.1, соответсвующего localhost.
Для пользователя myuser@localhost необходимо давать права отдельной командой GRANT.

Если вы решите обратиться к локальной машине как к удаленной, используя протокол TCP/IP, то не забывайте, что myuser@localhost и myuser@ip_собственного_компа это разные пользователи и каждому из них права нужно давать отдельной командой.

Второй пример показывает как дать право читать таблицу time_zone в базе mysql пользователю myuser с машины 192.168.0.76
с паролем mypassy:
GRANT SELECT ON mysql.time_zone TO myuser@192.168.0.76 IDENTIFIED BY ‘mypassy’;

Возникающие сложности

Если после всех действий у вас возникает ошибка
(Can’t connect to Mysql Server on ‘ваш IP'(10061)),
значит соединение блокирует firewall (windows firewall, outpost, антивирус или еще что-то).

Если возникает ошибка
(Client does not support autentification protocol request by server; consider upgrading MySQL client), клиент (то есть ваша программа) не поддерживает требуемый сервером протокол.
Эту ошибку можно исправить, установив пароль старого формата:
SET PASSWORD FOR user@host = OLD_PASSWORD(‘password’);

Источник

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

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

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

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

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

6 ответов

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

Создайте пользователя с именем «admin» и используйте его для подключения mysql-workbench ,

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

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

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

Читайте также:  Sysinternals autoruns для windows

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

sudo mysql -u root

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тогда в MySQL верстак:

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

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

Источник

Оцените статью