0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Управление удалённым доступом к серверу MySQL

Нередко, удалённый доступ к серверу MySQL — это единственный способ управления своими базами данных (БД). Для хостинг-провайдеров подобная техническая возможность является обязательной для качественного предоставления услуг клиентам. Для веб-разработчиков (вообще для разработчиков) удалённый доступ позволяет использовать один общий ресурс для обслуживания БД. В любом случае, просто так по-умолчанию сервер MySQL удалённые подключения не допускает. Для включения удалённого доступа к MySQL необходимо конфигурирование определённых параметров как самого сервера, так и обслуживаемых БД и их пользователей. В данной статье будут рассмотрены основные принципы предоставления удалённого доступа к серверу MySQL.

Что для этого нужно?

Сервер MySQL по-умолчанию в целях безопасности сконфигурирован таким образом, что может принимать только локальные соединения, поступающие через локальный сокет с той же самой машины, на которой работает и сам сервер. Эта настройка обслуживается опцией «bind-address» в конфигурационном файле MySQL-сервера

/etc/mysql/mysql.conf.d/mysqld.cnf . Изменив значение указанной опции и перезапустив сервер MySQL можно предоставить доступ для удалённых клиентов.
Кроме самой возможности удалённого подключения к серверу MySQL необходимо также и позаботиться о предоставлении соответствующих привилегий удалённым пользователям. Это также очень важно как для комфортной работы, так и для безопасности. Привилегии пользователей MySQL предоставляются как для подключений, так и для работы

непосредственно с БД. В первом случае для пользователя могут быть заданы привилегии, ограничивающие его действия для конкретного типа подключения. Например, удалённо пользователь не может удалять БД. При этом неважно, что сервер корректно настроен для удалённого доступа. Во втором случае у пользователя могут быть заданы ограничения на уровне самих БД, таблиц и процедур, действующие только при удалённом подключении и отсутствующие при локальном. Например, так бывает, когда системный администратор MySQL не хочет, чтобы БД, таблицы, данные можно было удалить работая с сервером через удалённое подключение, а только локально.

Таким образом, существует возможность задания привилегий, т. е. управления доступом не только для самих пользователей и групп. Но и для характера их подключения к серверу — удалённого или локального. Это необходимо учитывать при организации и управлении удалённым доступом к MySQL-серверу.

Настройка сервера MySQL

По-умолчанию для опции «bind-address» в файле /etc/mysql/mysql.conf.d/mysqld.cnf задано значение 127.0.0.1. И подключиться к серверу можно только локально:

Для того, чтобы иметь доступ к MySQL-серверу с любого IP-адреса, т. е. с любого компьютера в сети, нужно значение 127.0.0.1 изменить на 0.0.0.0:

Сделав изменения в и сохранив файл нужно перезапустить сам сервер MySQL:

Читать еще:  Ошибка 5005 0x80070002 при работе программы установки

Далее можно проверить, что удалённое подключение возможно, выполнив его с другого компьютера в сети:

Здесь «db_host» – это адрес (IP или имя хоста) компьютера, на котором работает сервер MySQL. При удачном подключении пользователь будет переведён в интерфейс командной консоли MySQL.

Настройка привилегий БД

На сервере MySQL может быть несколько пользователей с одинаковым именем, но разным режимом доступа. Например, пользователь с именем john, которому доступно только локальные подключения. На самом деле распознается сервером MySQL как пользователь с именем «john@localhost». Для того, чтобы пользователь john мог подключаться ещё и удалённо с любого IP. На сервере должна быть создана ещё одна учётная запись с именем «john@%». Вот как выглядит создание такой учётной записи в веб-интерфейсе phpMyAdmin:

Как можно видеть, в системе управления доступом MySQL для учётной записи пользователя существует отдельный атрибут «имя хоста», регламентирующий режим подключения. Это сделано как для повышения самой безопасности, так и для более гибкого управления и администрирования. Тот случай, когда одно другому не только не мешает. Но в совокупности поднимает эффективность и безопасность всего сервиса.

Поскольку учётные записи john@localhost и john@% являются разными (хотя и принадлежат одному пользователю), то для них можно отдельно настраивать привилегии. Например, для учётной записи john@% в phpMyAdmin это выглядит следующим образом:

Как можно видеть, администратор запретил пользователю john удалять БД через удалённое подключение. Таким же образом можно устанавливать (или убирать) ограничения на уровне БД. Т. е. при работе с таблицами, а также на уровне таблиц — при работе непосредственно с данными.

Заключение

В заключение стоит ещё раз отметить, что предоставление удалённого доступа к БД путём изменения параметра bind-address в значение 0.0.0.0 должно проводиться с учётом принятых мер по обеспечению дополнительной безопасности сервера.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Открыть удаленный доступ к базе для всех

Есть база данных, которая находится не на моем компьютере. (на hostinger.ru)
Нужно сделать так, чтобы к ней можно было подключиться с любого ip. Заранее неизвестно, откуда будет произведено подключение.

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

Открыть удаленный доступ к базе для определенного ip — MySQL
Вот есть хорошая тема https://www.cyberforum.ru/mysql/thread608501.html. Но хотелось бы узнать,как.

Можно ли на хостинге открыть доступ к базе со всех IP
Здравствуйте. Заказал хостинг. Пока идет тестовый период. В поддержке мне сказали что нельзя.

Удаленный доступ к базе 1С 7.7
Всем доброго дня. Прошу помочь знающих людей с таким вопросом. Я понимаю, что тема возможно.

Удаленный доступ к базе
День добрый. Прошу вашей помощи, подсказки.У меня возникла следующая проблема:есть готовый сайт на.

Да, в phpMyAdmin
Я не смог найти, потому что такой вкладки нет в phpMyAdmin на hostinger.ru

P.S. В денвере я ее сразу нашел

Решение

Если MySQL находится на вашем компьютере, то для виндовса Пуск — Выполнить и там ввести cmd . и в появившемся окне далее по инструкции. Для линукса открыть терминал и там далее по инструкции.

Но если MySQL установлен не у вас, а на хостинге, то хостинг обычно предоставляет ssh. Вот по ssh надо к нему подключиться и там уже вводить команды. Из линукса подключаться по ssh очень просто:

Не получается выполнить команду в ответ:

Что это может быть?

Добавлено через 44 минуты
Сорри за мой тупой пост
Это просто mysql не был запущен почему-то. Выполнил

Добавлено через 34 минуты
Есть, все заработало! Огромнейшее спасибо!

От себя добавлю еще пару слов:
Иногда, после проделанных в посте #7 действий, желаемого доступа по прежнему нет. Как и было только что в моем случае.
Откройте файл /etc/mysql/my.cnf и закоментируйте строку:

слушает только локальный адресс!
Добиться 0.0.0.0:3306 не удается! Перечитал все что было здесь на форуме, все попробовал — прошу помощи! Спасибо!

Добавлено через 1 час 57 минут
Может кому пригодится — поборол указанную проблему правкой не только файла my.cnf (указание bind-address=0.0.0.0) но mysqld.cnf аналогично указание bind-address=0.0.0.0.

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

Удаленный доступ к базе данных в .NET
Здравствуйте. Помогите, люди добрые:) Имею некоторый опыт программирования обячных несложных.

Удалённый доступ к видесерверу на базе Windows XP
Такой Вопрос. Есть видеосервер на базе компа с Windows XP и платы видеозахвата ILDVR. Стоит задача.

Удаленный доступ к записи в базе данных
Уважаемые коллеги! Сильно не пинайте, мои знания в базах данных можно назвать поверхностными. Но.

Нужно открыть общий доступ к серверу 1С только для бухгалтерии, а для всех остальных, закрыть его.
Всем здравствуйте. Имеется такая конфигурация: DC сервер — Доменный сервер в который заведены.

Htaccess открыть сайт только одному ip, открыть один фолдер для всех
В корне сайта у меня лежит Order Deny,Allow deny from all allow from 102.11.44.111 Т.е от всех.

Доступ к базе для IIS
Здравствуйте. Пытаюсь запустить свой проект asp.net на IIS. Пишет ошибку "не удалось открыть базу.

Как разрешить удаленные подключения к серверу базы данных MySQL

Главное меню » Базы данных » База данных MySQL » Как разрешить удаленные подключения к серверу базы данных MySQL

Однако в некоторых ситуациях необходимо разрешить удаленные подключения. Например, когда вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или когда вы используете многосерверное развертывание, когда приложение работает на компьютере, отличном от сервера базы данных.

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

Читать еще:  Установка комнатного термостата на газовый котел

Настройка MySQL Server

Первый шаг – настроить сервер MySQL на прослушивание определенного IP-адреса или всех IP-адресов на компьютере.

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

Для этого вам нужно отредактировать файл конфигурации MySQL и добавить или изменить значение опции bind-address. Вы можете установить один IP-адрес и IP-диапазоны. Если адрес есть 0.0.0.0, сервер MySQL принимает соединения на всех интерфейсах IPv4 хоста. Если в вашей системе настроен IPv6 0.0.0.0, используйте вместо .

Расположение файла конфигурации MySQL зависит от дистрибутива. В Ubuntu и Debian файл находится по адресу /etc/mysql/mysql.conf.d/mysqld.cnf, в то время как в дистрибутивах на основе Red Hat, таких как CentOS, файл находится по адресу /etc/my.cnf.

Откройте файл в текстовом редакторе :

Найдите строку, которая начинается с bind-address и установите в качестве значения IP-адрес, который должен прослушивать сервер MySQL.

По умолчанию установлено значение 127.0.0.1 (прослушивается только на локальном хосте).

В этом примере мы настроим сервер MySQL на прослушивание всех интерфейсов IPv4, изменив значение на 0.0.0.0
mysqld.cnf

Если есть строка, содержащая skip-networking, удалите ее или закомментируйте, добавив # в начале строки.

В MySQL 8.0 и выше директива bind-address может отсутствовать. В этом случае добавьте ее в разделе [mysqld].

После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать сервисы.

Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:

В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:

Предоставление доступа пользователю с удаленного компьютера

Следующим шагом является предоставление доступа к базе данных удаленному пользователю.

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

Если вы используете старый плагин аутентификации MySQL для входа в систему от имени пользователя root, введите команду ниже и введите пароль при появлении запроса:

Внутри оболочки MySQL используйте GRANTоператор для предоставления доступа удаленному пользователю.

  • database_name – Имя базы данных, к которой будет подключаться пользователь.
  • user_name – это имя пользователя MySQL.
  • ip_address – это IP – адрес , с которого пользователь будет подключаться. Используйте, %чтобы позволить пользователю подключаться с любого IP-адреса.
  • user_password – это пароль пользователя.

Например, чтобы предоставить доступ к базе данных dbname пользователю с именем andreyex с паролем my_passwd с клиентского компьютера с IP 10.8.0.5, вы должны выполнить:

Настройка брандмауэра

Последний шаг – настройка брандмауэра для разрешения трафика через порт 3306( порт MySQL по умолчанию) с удаленных компьютеров.

Iptables

Если вы используете iptables в качестве брандмауэра, команда ниже разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.

Разрешить доступ с определенного IP-адреса:

UFW – это инструмент брандмауэра по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), выполните:

Разрешить доступ с определенного IP-адреса:

FirewallD

FirewallD является инструментом управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:

Чтобы разрешить доступ с определенного IP-адреса на конкретном порту, вы можете создать новую зону FirewallD или использовать расширенное правило. Хорошо создайте новую зону с именем mysqlzone:

Проверка изменений

Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:

Где user_name имя пользователя, которому вы предоставили доступ и mysql_server_ip, IP-адрес хоста, на котором работает сервер MySQL.

Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.

Если вы получаете сообщение об ошибке, как показано ниже, либо порт 3306 не открыт, либо сервер MySQL не прослушивает IP-адрес.

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

Заключение

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

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

  1. Настройте сервер MySQL для прослушивания всего или определенного интерфейса.
  2. Предоставьте доступ удаленному пользователю.
  3. Откройте порт MySQL в вашем брандмауэре.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Доступ к MySQL из сети

По-умолчанию, сервер MySQL принимает запросы только с localhost, т.е. только с того компьютера, на котором он установлен. В большинстве случаев этого достаточно, тем более что такое поведение обеспечивает лучшую защищенность сервера от атак. Однако случается, что нужно предоставить доступ к базам данным пользователям из сети. Например, для сервиса, который работает на другой машине.

В общем случае нам необходимо выполнить 2 действия:

а) Разрешить серверу MySQL прослушивание на сетевых интерфейсах (не только на 127.0.0.1)
б) Создать разрешения для сетевых пользователей.

Если с первым пунктом более-менее ясно, то по пункту (б) необходимо пояснить. Дело в том, что обычно пользователи создаются вида ‘username’@’localhost’, что позволяет им цепляться с определенными привилегиями к определенным базам данных, но только с localhost. Из сети эти пользователи подключиться не могут — MySQL сообщает им, что пароль или имя пользователя неверны.

Фишка заключается в том, что MySQL содержит список пользователей, разделенный по машинам, с которых они могут цепляться. Так, пользователь User1 может подключаться с localhost с паролем ABCD, с адреса 192.168.0.1 он может быть прописан с паролем BBBCCC, а с адреса 192.168.1.1 — уже с паролем BCDE и только для некоторых баз. Т.е. мы можем задать — с каких компьютеров пользователю разрешено подключаться, какой пароль он будет иметь в таком случае и к каким базам у него будут привилегии. На самом же деле, если взглянуть в базу данных mysql, то мы увидим, что это не один пользователь, а 3 разных юзера: user1@localhost, user1@192.168.0.1 и user1@192.168.1.1. Т.е. с точки зрения MySQL — это разные пользователи, соответственно, имеющие разные привилегии и пароли.

Читать еще:  Операционная система на флешке без установки

Таким образом, чтобы получить доступ из сети, нам необходимо завести дополнительных пользователей в MySQL с указанием уже не localhost. Причем, Вы можете как указать конкретные IP адреса, с которых разрешено этим пользователям подключаться, так и специальный символ ‘%’, который обозначает «любые компьютеры, кроме localhost».

Вот пример имен пользователей:

  • username@’localhost’ : подключаться может только с localhost
  • username@’192.168.0.1′ : подключаться может только с 192.168.0.1
  • username@’%’ : подключаться может с любого компьютера, кроме localhost
  • username@’192.168.0.%’ : подключаться может с любого компьютера, IP-адрес которого начинается с 192.168.0.

Как видно, для localhost пользователя необходимо всегда указывать отдельно.

Если же необходимо указание нескольких IP-адресов для одного пользователя. придется заводить эти IP-адреса отдельно, к сожалению, либо через запятую, но после каждой запятой — опять конструкция вида IDENTIFIED BY.

Итак, давайте дадим к серверу MySQL доступ из сети.

1) Во-первых, необходимо проверить, что сервер слушает запросы не только на localhost.

Открываем файл /etc/mysql/my.cnf и ищем в нем строчку bind-address. Нам нужно, чтобы она была раскоментирована и содержала значение 0.0.0.0 :

Если строчку Вы меняли — необходимо перезагрузить сервер MySQL:

По-умолчанию во FreeBSD сервер MySQL слушает на всех доступных интерфейсах и ничего дополнительно менять не нужно.

2) Теперь необходимо добавить пользователей, имеющих доступ из сети. Без этого сервер будет слушать сеть, но пускать все равно к себе не будет.

# mysql -u root -p
Password:
// приветствие MySQL

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘user1’@’192.168.0.%’ IDENTIFIED BY ‘password1’;
mysql> GRANT ALL PRIVILEGES ON mydatabase.* TO ‘user2’@’%’ IDENTIFIED BY ‘password2’;

В этом коде пользователю user1 разрешается полный доступ ко всем базам на сервере, но только с компьютеров из сети 192.168.0.*

Второму же пользователю разрешается заходить с любого компьютера вообще (кроме localhost, конечно), но он имеет полный доступ только к базе mydatabase.

По подобию можно добавлять необходимых пользователей с необходимыми привилегиями.

3) Проверяем сетевой доступ.

Вместо 192.168.0.100 — укажите IP адрес машины с MySQL сервером, а вместо username — имя пользователя.

Если сервер не пускает — в первую очередь проверьте — а не стоит ли на пути к нему файерволов и открыт ли на этих файерволах порт MySQL: 3306.

Настройка удаленного подключения к 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’);

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector