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 доступ по сети вы уменьшаете безопасность системы! Так как любой публичный сервис на вашей машине - это потенциальная возможность для взлома.

Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 106 гостей онлайн