Настройка сервера Linux и Windows
ITShaman - Сайт для АЙТИшников!
"Машины должны работать. Люди должны думать."
(девиз компании IBM)

Как подключиться к MySQL удаленно?

После того, как Вы установили сервер MySQL, подключиться к нему Вы можете только с этой же машины. Сделано это в целях безопасности системы, так как в большинстве случаев MySQL используется в Web, а там в редких случаях разносят web-сервер и сервер баз данных.

В корпоративном же сегменте правильнее использовать 1 сервер под все похожие задачи. Глупо держать MySQL с одной базой данных на каждом сервере, где он может потребоваться. Поэтому сервер баз данных должен быть один, на котором заведено нужное количество баз данных под разные задачи.

Кстати, в Web`е разносят сервер базы данных и web-сервер только в тех случаях, когда мощности одного сервера не хватает. Арендуется выделенный сервер и выноситься на него база данных. Хотелось бы уточнить, что делать это разумно только в пределах одного ДЦ.

Разрешаем подключаться к MySQL удаленно

В конфигурационном файле самого MySQL есть параметр bind-address, который отвечает за это, поэтому:

  1. открываем конфигурационный файл для редактирования:
    sudo nano /etc/mysql/my.cnf
  2. комментируем строку:
    # bind-address = 127.0.0.1
  3. перезапускаем MySQL:
    sudo service mysql restart

Закомментировать эту строку равносильно тому, что присвоить IP-адрес 0.0.0.0, то есть разрешить подключаться всем. Указать 2 IP-адреса в этой строчке нельзя. Если нужно ограничить подключение к серверу MySQL, нужно использовать возможности iptables.

Теперь через telnet-клиент Вы можете подключиться к серверу базы данных, но для того, чтобы зайти внутрь нужна учетная запись, которой разрешено подключаться не только с localhost. Для этого нужно подключиться к MySQL с самого сервера и создать такого пользователя:

mysql -u root -p

И командой создаем пользователя:

GRANT ALL PRIVILEGES
ON *.*
TO 'новый_пользователь'@'удаленный_адрес'
IDENTIFIED BY 'пароль'
WITH GRANT OPTION;

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

GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,ALTER
ON 'имя_базы'.*
TO 'новый_пользователь'@'удаленный_адрес'
IDENTIFIED BY 'пароль'
WITH GRANT OPTION;

Этой командой мы ограничили полномочия пользователя только одной базой данных и действиями с ней.

Полный список всех прав, которые можно указать пользователю:

Статья опубликована 03.12.2014 · Автор статьи: Зюзгин Иван
Статья относится к
Случайные 7 статей:
  1. Команда mount в Linux или все о монтировании разделов, дисков, образов ISO и SMB ресурсов.
  2. Advanced IP Scanner - простой сетевой сканер на всякий случай
  3. QComment.ru - новая биржа комментариев
  4. Плагины для Opera
  5. Как из Windows XP Home сделать Windows XP Professional?
  6. Сегодня профессиональный праздник - День системного администратора
  7. Неправильно закрываются терминальные сессии после закрытия приложения
Комментарии [4]
  1. Nird #
    8 Декабрь, 08:10

    А не проще iptables’ом форвардить пакеты на порт к другой машине. Более того, необходимо огранччить количество запросов в минуту.и настройить fail2ban на авторизацию в мускуль. Иначе забрутят мускуль и привет.

  2. Alex #
    20 Февраль, 09:33

    Вообще-то из покон веков MySQL вешают на локалхост онли и подключаются к нему через SSH тунель с пробросом 8080 в обе стороны.

  3. Light Solution #
    2 Октябрь, 21:17

    Отличная статья, спасибо. Обязательно будем использовать данный кейс.

  4. spanjokus #
    14 Ноябрь, 08:19

    А что мешает подключаться по ssh До сервера и с него уже юзать MySQL

Имя (обязательное поле)
e-mail (обязательное поле) Сайт
Текст комментария:
IT-новости
Популярное
Облако тегов
При цитировании документа активная ссылка на сайт обязательна.
Администрирование и настройка серверов, рабочих станций на базе ОС Linux и Windows. www.itshaman.ru - Настройка Linux и Windows © 2009 - 2016