Как разрешить удаленные подключения к серверу базы данных MySQL
По умолчанию сервер MySQL прослушивает соединения только с localhost, что означает, что к нему могут получить доступ только приложения, работающие на том же хосте.
Однако в некоторых ситуациях необходимо получить доступ к серверу MySQL из удаленного места. Например, если вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или при использовании многосерверного развертывания, когда приложение выполняется на другом компьютере, чем сервер базы данных. Один из вариантов — получить доступ к серверу MySQL через туннель SSH, а другой — настроить сервер MySQL на прием удаленных подключений.
В этом руководстве мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. Те же инструкции применимы и для MariaDB.
Настройка сервера MySQL
Первый шаг — настроить сервер 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 (прослушивается только на localhost).
В этом примере мы настроим сервер MySQL для прослушивания всех интерфейсов IPv4, изменив значение на 0.0.0.0
Если есть строка, содержащая 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 пользователю с именем foo с паролем my_passwd с клиентского компьютера с IP 10.8.0.5 , вы должны запустить:
Настройка межсетевого экрана
Последний шаг — настроить брандмауэр, чтобы разрешить трафик на порт 3306 (порт по умолчанию MySQL) с удаленных машин.
Iptables
Если вы используете iptables в качестве брандмауэра, приведенная ниже команда разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.
Разрешить доступ с определенного IP-адреса:
UFW — это брандмауэр по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), запустите:
Разрешить доступ с определенного IP-адреса:
БрандмауэрD
FirewallD — это инструмент управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:
Чтобы разрешить доступ с определенного IP-адреса через определенный порт, вы можете создать новую зону FirewallD или использовать расширенное правило. Итак, создайте новую зону с именем mysqlzone :
Проверка изменений
Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:
Где user_name — это имя пользователя, mysql_server_ip вы предоставили доступ, а mysql_server_ip — это IP-адрес хоста, на котором работает сервер MySQL.
Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.
Если вы получаете сообщение об ошибке, подобное приведенному ниже, то либо порт 3306 не открыт , либо сервер MySQL не прослушивает IP-адрес .
Приведенная ниже ошибка указывает на то, что пользователь, которого вы пытаетесь войти в систему, не имеет разрешений на доступ к удаленному серверу MySQL.
Выводы
MySQL, самый популярный сервер баз данных с открытым исходным кодом по умолчанию, прослушивает входящие соединения только на localhost.
Чтобы разрешить удаленные подключения к серверу MySQL, вам необходимо выполнить следующие шаги:
- Настройте сервер MySQL для прослушивания всего или определенного интерфейса.
- Разрешите доступ удаленному пользователю.
- Откройте порт MySQL в вашем брандмауэре.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Источник
Как изменить порт по умолчанию mysql от 3306 до 3360
Я хочу изменить номер порта по умолчанию для сервера MySQL в настоящее время – это 3306. Я хочу изменить его на 3360.
Но для меня все не работает. Пожалуйста, предоставьте запрос на изменение порта, а не какую-либо конфигурацию. Я использую 64-разрядную версию Windows 8.
Вам нужно отредактировать файл my.cnf и убедитесь, что у вас установлен порт в следующей строке:
Затем перезапустите службу MySQL, и вам должно быть хорошо идти. Запроса, который вы можете выполнить, чтобы выполнить это изменение, не существует, потому что port не является динамической переменной (qv здесь для документации MySQL, в которой показана таблица все системные переменные).
Если вы находитесь в Windows, вы можете найти файл конфигурации my.ini в этом каталоге
Вы открываете этот файл в текстовом редакторе и смотрите этот раздел:
Затем вы меняете номер порта, сохраняете файл.
Найдите службу MYSQL57 в Диспетчере задач > Службы и перезапустите ее.
Перейдите к установленному пути mysql и найдите папку bin, откройте my.ini и найдите 3306 после этого изменения 3306 – 3360
На самом деле вы можете просто запустить службу с помощью /mysqld —PORT 1234 , это заставит mysql работать на указанном порту без изменения файла cnf/ini.
Я просто подумал, что cnf не работает. Это было вшито… поэтому я просто использую строку cmd как ярлык, и он работает!
Лучший способ сделать это – сделать резервную копию необходимой базы данных и перенастроить сервер.
Создание резервной копии
Команда mysqldump используется для создания текстовых “дампов” баз данных, управляемых MySQL. Эти дампы – это всего лишь файлы со всеми командами SQL, необходимыми для воссоздания базы данных с нуля. Процесс выполняется быстро и легко.
Если вы хотите создать резервную копию одной базы данных, вы просто создаете дамп и отправляете вывод в файл, например:
Одновременно можно резервировать несколько баз данных:
В приведенном выше коде database_one – это имя первой резервной копии базы данных, а database_two – имя второй.
Также легко создать резервную копию всех баз данных на сервере:
После выполнения резервного копирования удалите mysql и переустановите его. После переустановки с нужным номером порта.
Восстановление резервной копии
Поскольку файлы дампа являются только командами SQL, вы можете восстановить резервную копию базы данных, сообщив mysql о запуске в ней команд и поместите данные в соответствующую базу данных.
В приведенном выше коде имя базы данных – это имя базы данных, которую вы хотите восстановить, а database_name.sql – это имя восстанавливаемого файла резервной копии.
Если вы пытаетесь восстановить одну базу данных из дампа всех баз данных, вы должны сообщить mysql следующим образом:
При первом запуске сервера my.ini может не создаваться там, где все заявили. Я смог найти мой в C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.6
Это местоположение имеет значения по умолчанию для каждой настройки.
В Windows 8.1 x64 bit os, в настоящее время я использую версию MySQL :
Для изменения номера порта MySQL , перейдите в каталог установки, мой каталог установки:
откройте файл настроек конфигурации my-default.ini в любом текстовом редакторе.
найдите строку в файле конфигурации.
замените его на:
как я сам изменился на:
Чтобы применить изменения, не забудьте немедленно перезапустить MySQL Server или вашу ОС.
Надеюсь, это поможет многим.
Ниже приведены шаги для изменения порта:
На более новых (например, 8.0.0) простейшем решении (например, хороший выбор для запуска по сценарию):
Источник
Mysql как настроить порт
Программа mysqld понимает параметры командной строки:
—ansi Использовать синтаксис ANSI SQL вместо синтаксиса MySQL. -b, —basedir=path Путь к каталогу установки. Все пути обычно вычисляются относительно его. —big-tables использовать большие наборы результатов, сохраняя все временные наборы в файле. Это решает большинство проблем table full, но также и замедляет запросы, где таблицы в памяти были бы достаточными. Начиная с версии 3.23.2, MySQL способен решить это автоматически, используя память для маленьких временных таблиц и переключаясь на дисковые таблицы там, где необходимо. —bind-address=IP IP-адрес для поиска имен. —character-sets-dir=path Каталог, где лежат наборы символов. —chroot=path Выполнить chroot для mysqld . Немного ограничит LOAD DATA INFILE и SELECT . INTO OUTFILE . —core-file Записать core-файл, если mysqld сваливается. Для некоторых систем Вы должны также определить —core-file-size в скрипте safe_mysqld . -h, —datadir=path Путь к корню базы данных. —default-character-set=charset Заданный по умолчанию набор символов. —default-table-type=type Заданный по умолчанию тип таблицы. —debug[. ]= Если MySQL конфигурирован с опцией —with-debug , Вы можете использовать эту опцию, чтобы получить файл трассировки того, что делает mysqld . —delay-key-write-for-all-tables Не сбрасывать буфера ключей между записями для таблиц MyISAM . —enable-locking Включить блокировки системы. Обратите внимание, что, если Вы используете эту опцию на системе, которая имеет не полностью рабочий lockd() (как на Linux), Вы легко получите зависший mysqld. -T, —exit-info Битовая маска различных флажков, которые можно использовать для точной отладки сервера mysqld. —flush Сбрасывать все изменения на диск после каждой команды SQL. Обычно MySQL делает запись всех изменений после каждой команды SQL и позволяет операционной системе обрабатывать синхронизацию с диском. -?, —help Отобразить короткую справку и завершить работу. —init-file=file Читать команды SQL из этого файла при запуске. -L, —language=. Сообщения об ошибках клиента будут выданы на данном языке. Может быть задан как полный путь. -l, —log[=file] Протоколировать соединения и запросы в файле file. —log-isam[=file] Протоколировать все изменения ISAM/MyISAM в файле file (используется только при отладке ISAM/MyISAM). —log-slow-queries[=file] Протоколировать все запросы, которые потребовали на обработку больше, чем long_query_time секунд в файле file. —log-update[=file] Протоколировать все изменения в файле file.# , где # является уникальным числом, если не задан. —log-long-format Протоколировать дополнительные данные в файле регистрации обновлений. Если Вы используете —log-slow-queries , то запросы, которые не используют индексы, регистрируются в медленном файле регистрации. —low-priority-updates Изменяющие таблицу операции ( INSERT / DELETE / UPDATE ) будут иметь более низкий приоритет, чем выбор из таблицы. Это может также быть выполнено через
Прежде, чем таблица будет автоматически восстановлена, MySQL добавит примечание относительно этого в файле регистрации ошибок. Если Вы хотите автоматически исправлять большинство повреждений без вмешательства пользователя, Вы должны использовать опции BACKUP,FORCE . Это вынудит провести ремонт таблицы, даже если некоторые строки будут удалены, но это сохранит старый файл данных как копию так, чтобы Вы могли позже исследовать то, что с ним случилось. —pid-file=path Путь к pid-файлу, используемому safe_mysqld . -P, —port=. Номер порта, на котором слушать TCP/IP подключения. -o, —old-protocol Использовать протокол 3.20 для совместимости с некоторыми очень старыми версиями клиентов. Сейчас не используется. —one-thread Использовать только один поток (для отладки под Linux). -O, —set-variable var=option Задать значение переменной. Допустимые переменные можно получить с помощью параметра —help . Вы можете найти полное описание всех переменных в разделе » SHOW VARIABLES «. —safe-mode Пропуск некоторых стадий оптимизации. Подразумевается —skip-delay-key-write . —safe-show-database Не показывать базы данных, для которых пользователь не имеет привилегий. —safe-user-create Если это включено, пользователь не может создавать новых пользователей командой GRANT, если он не имеет привилегию INSERT на таблице mysql.user или любом столбце в этой таблице. —skip-concurrent-insert Выключить способность выбирать и вставлять в то же самое время на таблицах MyISAM . Это должно использоваться только, если Вы думаете, что Вы нашли ошибку в этом свойстве. —skip-delay-key-write Игнорировать опцию delay_key_write для всех таблиц. —skip-grant-tables Эта опция заставляет сервер не использовать систему привилегии вообще. Это дает каждому полный доступ ко всем базам данных! Чтобы запустить привилегии, выполните команду mysqladmin flush-privileges или mysqladmin reload . —skip-host-cache Никогда не использовать кэширование имен для более быстрого преобразования имен в адреса. Всегда делать запрос DNS. —skip-locking Не использовать блокировку системы. Чтобы применить isamchk или myisamchk , Вы должны завершить сервер. Обратите внимание, что в MySQL версии 3.23 Вы можете использовать команды REPAIR и CHECK для ремонта и проверки новых таблиц системы MyISAM . —skip-name-resolve Имена хостов не преобразовывать вообще. Все столбцы Host в таблицах должны иметь значение IP-адреса или localhost . —skip-networking Не слушать TCP/IP подключения вообще. Все взаимодействие с mysqld должно быть сделано через сокеты Unix. Эта опция очень рекомендуется на системах, где позволяются только локальные запросы. —skip-new Не использовать новые, возможно, неправильные подпрограммы. Подразумевается опция —skip-delay-key-write . Это также установит заданный по умолчанию тип таблицы в ISAM . —skip-symlink Не удалять или переименовывать файлы, на которые указывает символическая ссылка в каталоге данных. —skip-safemalloc Если MySQL конфигурирован с опцией —with-debug=full , все программы проверят на перекрытие память для каждого распределения и освобождения памяти. Поскольку эта проверка очень медленная, Вы можете отказаться от нее, когда Вы не нуждаетесь в постоянной проверке памяти, используя эту опцию. —skip-show-database Не позволять команды ‘SHOW DATABASE’, если пользователь не имеет привилегию process . —skip-stack-trace Не записывать трассировку стека. Эта опция полезна, когда Вы выполняете mysqld под программой-отладчиком. —skip-thread-priority Отключить использование приоритетов потоков для ускорения ответов. —socket=path Файл сокета, который надлежит использовать для локальных подключений вместо значения по умолчанию /tmp/mysql.sock . —sql-mode=option[,option[,option. ]] Опция может быть любой комбинацией значений: REAL_AS_FLOAT , PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , SERIALIZE , ONLY_FULL_GROUP_BY . Это может также быть пусто ( «» ), если Вы хотите сбросить эту настройку. Определяя все приведенные выше параметры, Вы достигнете того же эффекта, что и опцией —ansi. Но данной опцией можно включить только необходимые SQL-режимы. transaction-isolation= DEFAULT Аналогично опции —myisam-recover . BACKUP Если таблица данных была изменена в течение ремонта, сохраняет копию файла данных `table_name.MYD’ под именем `table_name-datetime.BAK’ . FORCE Выполнить ремонт, даже если будет потеряно более, чем одна строка из файла .MYD. QUICK Не проверять строки в таблице, если в ней нет удаленных блоков.
MySQL может, начиная с версии 3.22, читать заданные по умолчанию параметры запуска для клиентов и сервера из файлов опций.
MySQL читает заданные по умолчанию параметры из следующих файлов (в Unix):
| Имя файла | Зачем он нужен |
| /etc/my.cnf | Глобальные опции для всех |
| DATADIR/my.cnf | Опции для сервера |
| defaults-extra-file | Файл, определенный через —defaults-extra-file=# |
| Специфические для пользователей опции |
DATADIR представляет собой каталог данных MySQL (обычно `/usr/local/mysql/data’ для бинарного дистрибутива или `/usr/local/var’ для установки из исходников). Обратите внимание, что это тот каталог, который был определен в конфигурации, а не указан в опции —datadir при запуске mysqld ! Параметр —datadir не имеет никакого эффекта в то время, когда сервер ищет файлы опций потому, что он их ищет прежде, чем обрабатывает любые параметры командной строки.
MySQL читает заданные по умолчанию параметры из следующих файлов (только в ОС Windows):
| Имя файла | Зачем он нужен |
| windows-system-directory\my.ini | Глобальные опции |
| C:\my.cnf | Глобальные опции |
| C:\mysql\data\my.cnf | Опции для сервера |
Обратите внимание, что в Windows Вы должны определить все пути с / вместо \ . Если Вы используете \ , Вы должны определить это дважды, поскольку \ символ ESC в MySQL.
MySQL пробует читать файлы опции в порядке, перечисленном выше. Если есть несколько файлов настроек, используется опция, определенная в том файле, который читается позже. Параметры, определенные в командной строке имеют приоритет над параметрами, определенными в любом файле опций. Некоторые параметры могут быть определены, используя системные переменные. Параметры, определенные в командной строке или в файлах опций имеют приоритет над значением соответствующей системной переменной.
Следующие программы поддерживают файлы опций: mysql , mysqladmin , mysqld , mysqldump , mysqlimport , mysql.server , myisamchk и myisampack .
Вы можете использовать файлы опций, чтобы определить любую длинную опцию, которую программа поддерживает! Выполните программу с параметром —help , чтобы получить список доступных параметров.
Файл опций может содержать строки следующих форм:
#comment Строки комментария начинаются с `#’ или с `;’ . Пустые строки игнорируются. [group] group представляет собой имя программы или группы, для которой Вы хотите устанавливать параметры. После строки группы любая строка option или set-variable обращается к именованной группе, пока не будет достигнут конец файла опций или другая строка группы. option Эквивалентно —option в командной строке. option=value Эквивалентно —option=value в командной строке. set-variable = variable=value Эквивалентно —set-variable variable=value в командной строке. Этот синтаксис должен использоваться, чтобы установить переменную mysqld .
Группа client позволяет Вам определять параметры, которые обращаются ко всей клиентуре MySQL (но не к mysqld ). Это самая подходящая группа, чтобы определить в ней пароль, который Вы используете, чтобы соединиться с сервером. Но удостоверьтесь, что файл опций читаем и перезаписываем только Вами.
Обратите внимание, что для параметров и значений все конечные и начальные пробелы автоматически удалены. Вы можете использовать управляющие последовательности \b , \t , \n , \r , \\ и \s в Вашей строке ( \s ==пробел).
Имеется типичный глобальный файл опций:
Имеется типичный файл опций пользователя:
Если Вы имеете дистрибутив с исходниками, Вы найдете, что типовые файлы конфигурации называются my-xxxx.cnf в каталоге support-files . А вот в двоичном дистрибутиве смотрите в каталог DIR/support-files , где DIR задает имя пути к каталогу установки MySQL (обычно /usr/local/mysql ). В настоящее время имеются типовые файлы конфигурации для маленькой, средней, большой и очень большой системы. Вы можете копировать my-xxxx.cnf в Ваш основной каталог (переименуйте копию в .my.cnf ), чтобы экспериментировать.
Вся клиентура MySQL, которая поддерживает файлы опций, использует и следующие параметры:
| —no-defaults | Не читать любые файлы опций. |
| —print-defaults | Печатать имя программы и все параметры, которые ей передаются. |
| —defaults-file=full-path-to-default-file | Использовать только данный файл конфигурации. |
| —defaults-extra-file=full-path-to-default-file | Читать этот файл конфигурации после глобального файла опций, но перед чтением файла настроек пользователя. |
Обратите внимание, что вышеупомянутые параметры должны быть первыми в командной строке, чтобы они работали! Однако, —print-defaults может использоваться непосредственно после команды —defaults-xxx-file .
В скриптах оболочки Вы можете использовать команду my_print_defaults , чтобы анализировать файлы конфигурации:
Вышеупомянутый вывод содержит все параметры для групп ‘client’ и ‘mysql’.
В некоторых случаях Вы можете хотеть иметь много различных серверов mysqld на одной машине. Вы можете, например, выполнять новую версию MySQL для тестирования вместе со старой версией, которая находится в постоянном рабочем использовании. Другой случай: Вы хотите давать различным пользователям доступ к разным серверам mysqld , которыми они будут управлять самостоятельно.
Один способ получить новый сервер: запустить его с другим сокетом и портом следующим образом:
Приложение системных переменных включает список других системных переменных, которые Вы можете использовать, чтобы воздействовать на mysqld . Подробности в разделе «Приложение 2. Переменные окружения «.
Если Вы должны делать это более постоянно, Вы должны создать файл опций для каждого сервера. Подробности в разделе «4.1.2 Файлы опций my.cnf». В Вашем скрипте запуска, который будет выполнен при начальной загрузке (mysql.server?), Вы должны определить для обоих серверов:
По крайней мере следующие параметры должны быть различны на серверах:
port=# socket=path pid-file=path
Следующие параметры должны быть различны, если они используются:
log=path log-bin=path log-update=path log-isam=path bdb-logdir=path
Если Вы хотите получить большую эффективность, Вы можете также определять:
Если Вы устанавливаете двоичные версии MySQL (файлы .tar) и запускаете их с ./bin/safe_mysqld , то обычно придется менять только опции socket и port в скрипте safe_mysqld .
Имеются обстоятельства, когда Вы могли бы хотеть выполнять много серверов на одной и той же машине. Например, Вы могли бы проверять новый выпуск MySQL при оставлении Вашей существующей безмятежной установки в рабочем состоянии.
Если Вы хотите выполнять много серверов, самый простой путь состоит в том, чтобы компилировать их с различными портами TCP/IP и файлами сокетов так, что они оба не слушают тот же самый порт TCP/IP или файл сокета.
Предположим, что существующий сервер конфигурирован для заданного по умолчанию номера порта и файла сокета. Теперь конфигурируйте новый сервер командой выбора конфигурации configure :
Здесь port_number и file_name должны отличаться от заданных по умолчанию номера порта и имени пути файла сокета, значение —prefix должно определить другой каталог установки, а не тот, в котором размещена существующая установка MySQL.
Вы можете проверять сокет, используемый любым в настоящее время выполняющимся сервером MySQL, командой:
Обратите внимание, что, если Вы определяете localhost как имя хоста по умолчанию, mysqladmin будет использовать Unix-сокеты вместо протокола TCP/IP.
Если Вы имеете сервер MySQL, работающий на уже занятом порте, Вы получите список из наиболее важных переменных настройки в MySQL, включая имя сокета.
Вы не должны перекомпилировать сервер MySQL только, чтобы запустить его с другого порта и сокета. Вы можете изменять порт и сокет, который нужно использовать, определяя их во время выполнения как параметры для safe_mysqld :
mysqld_multi может также брать safe_mysqld (или mysqld ) как параметр и передавать параметры из файла конфигурации safe_mysqld и в дополнение mysqld .
Если Вы выполняете новый сервер в том же самом каталоге баз данных, что и старый с включенным протоколированием, Вы должны также определить имя журналов в safe_mysqld с помощью опций —log , —log-update или —log-slow-queries . Иначе оба сервера могут попробовать вести протокол в одни и те же файлы!
ПРЕДУПРЕЖДЕНИЕ: Обычно Вы никогда не должны иметь двух серверов, которые модифицируют данные в той же самой базе данных! Если Ваша ОС не поддерживает полноценную блокировку системы, это легко может привести к ОЧЕНЬ неприятным неожиданностям!
Если Вы хотите использовать другой каталог баз данных для второго сервера, Вы можете использовать опцию —datadir=path при вызове safe_mysqld .
ОБРАТИТЕ ВНИМАНИЕ также, что запуск нескольких серверов MySQL ( mysqlds ) на различных машинах и разрешение им обращаться в один каталог данных через NFS вообще ПЛОХАЯ ИДЕЯ ! Проблема состоит в том, что NFS станет узким местом с низким быстродействием. Этот сервис не предполагается для такого использования. К тому же Вам придется придумывать решение, как надежно удостовериться, что два или больше процессов mysqld не сталкиваются друг с другом. В настоящее время не имеется никакой платформы, которая была бы 100% надежной, чтобы делать блокировку файла (обычно lockd daemon) в любой ситуации. Все же имелся бы еще один возможный риск с NFS : этот сервис сделал бы работу для lockd еще более сложной. Так что забудьте о таких развлечениях! Рабочее решение состоит в том, чтобы иметь один компьютер с операционной системой, которая эффективно обрабатывает потоки, и иметь в нем несколько CPU и памяти побольше.
Когда Вы хотите соединиться с сервером MySQL, который работает с другим портом, чем порт, который компилируется в Вашего клиента, Вы можете использовать один из следующих методов:
Источник