Все записи с тегом "mysql"

Соединение с MySQL через SSH

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

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

    echo "SELECT * FROM table" | mysql

  • Сделать проброс соединения через SSH

Так как первых два варианта глупые чуть более, чем полностью, остановимся на третьем. Для этого нам понадобится выполнить всего одну команду в консоле:

ssh -L 3307:localhost:3306 [email protected]

Где 3307 - локальный порт, к которому нужно присоединяться из PHP, localhost - локальный хост, 3306 - удаленный порт, [email protected] - пользователь@удаленный хост

Подводные камни

  1. Команду нужно выполнять после каждого перезапуска сервера и контролировать работоспособность
  2. Время отклика возрастет, так как добавятся накладные расходы на шифрование/расшифровывание
  3. На локальном компьютере появится уязвимость удаленного сервера, так как есть прямой проброс соединения. Так что следует для порта 3307 заблокировать доступ извне через iptable или брандмауэр
Читать дальше

Отключение кэширования запросов в MySQL

Когда перед вами встает задача оптимизации sql запросов, важно измерять "чистое" время запроса, чтобы определить прирост или регресс. Классическим способом заставить MySQL игнорировать кэш является ключевое слово SQLNOCACHE.

SELECT SQL_NO_CACHE * FROM `table` t LEFT JOIN ...

Если же вам нужно оптимизировать пачку запросов, это решение может быть не удобным. В таком случае можно отключить кэширование полностью, выполнив запрос:

SET GLOBAL query_cache_size=0;
-- заново включить можно перезапустив MySQL или командой
SET GLOBAL query_cache_size=1024*1024*32;

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

Читать дальше