1 просмотров
Рейтинг статьи
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’@ ‘%’

Читать еще:  Установка Windows 10 на nvme ssd

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

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

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

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

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

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

Требования к базе данных MySQL

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

Поскольку большинство из этих факторов различны для каждой реализации, системные требования каждый раз разные. Для корпоративных установок обычно требуется 4 ядра ЦП, 8 ГБ ОЗУ и настройка RAID

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

Тестовая база данных MySQL может быть установлена ​​практически на любой версии Linux, Windows или Mac. Просмотрите список поддерживаемых платформ, если вас это вообще касается. Загрузите установщик Windows MySQL, в котором есть все, что вам нужно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Установка графической оболочки в centos 7

Далее о нюансах [ править ]

1. Конфигурационный файл расположен:

После правок перезагружать сервис: service mysqld restart.

2. Подключения к базе данных. При обычных параметрах, подключения идут к базе локально (localhost, 127.0.0.1, 0.0.0.0). Но если нам требуется подключится к базе из другого места, нужно думать заранее. Потому, что из соображений безопасности доступа к базе все подключения из вне отрублены. Такие необходимости возникают при необходимости подключится допустим из среды разработки NetBeans. При попытке подключения нам будет выдано сообщение:

Решением будет, только указание расположения подключающегося клиента при его создании.

3.Как получить доступ к MySQL из сети? Если действительно необходимо и доступ ограничивается внешними средствами — закомменируйте (поставьте знак # в начале строки) параметр

в файле /var/lib/mysql/my.cnf, с последующим перезапуском службы mysqld.

4. Посмотреть на каком порту, для каких интерфейсов работает mysqld демон, командой:

Видно, что mysql работает для всех интерфейсов и слушает 3306 порт.

О кодировках в MySQL 5.x [ править ]

В ALT Linux кодировка, передаваемая через параметр -C в mysqld, задаётся через CHSET в /etc/sysconfig/mysqld, либо определяется по системной локали. Это —character-set-server — кодировка, используемая сервером по умолчанию. Как нужно настроить сервер, чтобы по умолчанию кодировка была cp1251, но это можно было переопределять на utf8?

Кодировку и таблицу сортировки, используемые по умолчанию в сервере, лучше задавать в my.cnf:

Для клиентов (например, команды mysql) кодировка указывается в секции [client] файла my.cnf:

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

в my.cnf. Команда set names устанавливает при подсоединении такие переменные как set_client, set_result, collaction_client, что позволяет серверу корректно воспринимать запросы и возвращать ответы.

Обратите внимание, что имена (таблиц и полей) хранятся в сервере в кодировке utf8 и это неизменяемо. Что насчёт их кодировки в запросе?

Включение логирования каждого запроса: [ править ]

Отредактируем файл настроек:

Важно отметить, что пути отсчитываются от корня чрута, то есть от

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