- 📑 Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu
- Разрешаем MySQL слушать интерфейс, который смотрит во внешнюю сеть
- Создание внешнего пользователя MySQL
- Не могу подключиться к серверу баз данных как через phpMyadmin, так и через терминал.
- Настройка удаленного подключения к MySQL
- Как установить соединение с удаленной базой?
- Как настроить соединение с удаленной базой?
- Возникающие сложности
- Невозможно подключиться через MySQL Workbench к localhost в Ubuntu 16.04 (без пароля root)
- 6 ответов
📑 Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu
По умолчанию сервер MySQL настроен таким образом, что к нему разрешены подключения только с локальной машины, следовательно, подключиться из-вне (по интернет или локальной сети) не получится.
Убедиться в этом можно набрав на сервере команду:
В результате получите что-то типа этого:
Отсюда видно, что mysql слушает только интерфейс localhost (127.0.0.1). Это не всегда удобно, особенно когда есть необходимость выделить под сервер mysql отдельный сервер. А в рамках корпоративной локальной сети такое бывает очень часто.
Чтобы разрешить серверу MySQL принимать запросы из-вне необходимо предпринять несколько несложных шагов:
- Поменять одну строчку в конфигурационном файле MySQL;
- Создать сетевого пользователя с необходимыми правами.
Разрешаем 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 ( как в прошлом посте) я из принципа распаковать не буду.
Ну ладно, больше не буду. 🙂
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 (или же отсутствие такого параметра, что то же самое, так как это дефолтное значение) приводит к обращению на локальную машину.
Учтите, что параметры имеют две формы записи: длинную и короткую. В свою очередь, если параметр имеет значение (как например, в случае хоста необходимо указать имя хоста к которому нужно подключиться), то короткая форма записи может использоваться с пробелом или без (исключением из этого правила является пароль).
Таким образом, следующие три записи являются эквивалентными:
- 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» для подключения несколькими различными способами, но безрезультатно.
Решение состоит в том, чтобы вернуться к аутентификации с использованием собственного пароля. Вы можете сделать это, войдя в 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 верстак:
- Создать новое соединение
- Выберите способ подключения в качестве локальной розетки / трубы
- Установите путь к сокету / каналу: /var/run/mysqld/mysqld.sock (обратите внимание, что это путь для системы Debian / Ubuntu и изменения для других версий Linux)
- Установите имя пользователя (в этом примере valerie)
После этого вы сможете подключиться к серверу mysql через это соединение.
Источник