mysql доступ по сети

mysql доступ по сети

Если требуется обеспечить к mysql доступ по сети, то необходимо сделать несколько вещей:

  1. Изменение настроек mysql демона;
  2. Перезапуск mysql демона;
  3. Создание mysql пользователя с необходимыми правами;
  4. Открытие порта в IPTABLES (опционально);

Убедиться в том, что mysql демон допускает только локальные подключения можно набрав команду:

$ netstat -tlp

Вы должны увидеть, что mysql демон запущен и принимает только локальные подключения о чем свидетельствует строка: localhost:mysql

mysql запущен для локальных подключений

Изменение настроек mysql демона.

Первое что нужно сделать, что бы открыть к mysql доступ по сети — это изменить файл настроек mysql демона. Этот файл находится, как правило, по пути: /etc/mysql/my.cnf.

Открываем его редактором из под привилегированного пользователя:

$ nano /etc/mysql/my.cnf

Находим в файле строку с директивой bind-address и комментируем её символом решетка "#", а ниже прописываем следующее: bind-address = :: Это откроет к mysql доступ по сети, как по протоколу IPv4, так и по протоколу IPv6 с любого внешнего хоста. Если необходимо обращаться с определенного хоста, то необходимо указать его по аналогии с существующим значением.

Если кому интересно, можно прочитать про директиву bind-address здесь: MySQL 5.7 Reference Manual/Server Command Options/bind-address

В результате должно получиться следующее:

Отредактированный файл my.conf

Перезапуск mysql демона.

Второе, что нужно сделать, что бы открыть к mysql доступ по сети — это произвести перезапуск его демона (или сервиса mysql. Кому как проще), что бы он считал новую конфигурацию. Это можно сделать либо так:

$ /etc/init.d/mysql restart

либо так:

$ service mysql restart

Теперь при выводе команды:

$ netstat -tlp

можно наблюдать следующую картину:

mysql запущен для внешних подключений

Что означает, что к нашему mysql можно обращаться из вне.

Создание mysql пользователя с необходимыми правами.

Под необходимыми правами я имею ввиду, что нужно указать требуемый хост для пользователя, или разрешить ему доступ со всех хостов: 'outuser'@'%'

mysql> GRANT ALL PRIVILEGES ON *.* TO 'outuser'@'%' IDENTIFIED BY '...' WITH GRANT OPTION

MySQL 5.7 синтаксис выражения GRANT

Открытие порта в IPTABLES

Данных манипуляций должно быть достаточно что бы обеспечить к mysql доступ по сети, но если у вас используется iptables, то возможно вам придется открывать порт для внешних соединений явно (опять же из под привилегированного пользователя):

$ iptables -A INPUT -p tcp –dport 3306 -j ACCEPT

Команда выше означает: "Добавить в цепочку INPUT, правило для tcp пакетов, у которых порт назначения 3306 — РАЗРЕШИТЬ", ну, или типа того.

Руководство по iptables на opennet.ru

Соответственно, если вы используете нестандартный порт, то указываете его вместо 3306, плюс при старте клиента тоже необходимо его указать явно:

$ mysql -h ХОСТ_MYSQL_СЕРВЕРА -P ПОРТ_MYSQL_СЕРВЕРА -u ИМЯ_ЮЗЕРА -p

После вводите пароль и радуетесь жизни 😉 Всем желаю добра и приятной разработки.

PS:
Но будьте осторожны, открывая к mysql доступ по сети вы уменьшаете безопасность системы! Так как любой публичный сервис на вашей машине — это потенциальная возможность для взлома.

 

Возможно Вас заинтересуют эти материалы

Debian: Как включать и выключать модули php5

Debian: Как включать и выключать модули php5

Не часто требуется, но иногда нужно включить, или отключить тот, или иной модуль PHP5. Хороший
Включаем технологию zswap на Debian jessie

Включаем технологию zswap на Debian jessie

Смысл технологии zswap сводится к тому, что при необходимости выгрузки страниц памяти на диск производится попытка сжать
NO_PUBKEY или публичный ключ репозитория

NO_PUBKEY или публичный ключ репозитория

Недавно решил установить на свой linux Debian Jessie новый Mozilla Firefox добавил новый репозиторий, и