PDA

View Full Version : Работа с mysql базой данных



TijAY
17-07-2006, 03:10
Работа с mysql базой данных на удаленном хосте виртуального провайдера

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

Для работы с базой, как правило, дается предустановленный поставщиком услуг инструмент phpmyadmin. На мой взгляд, качество работы этого клиента оставляет желать... На просторах интернета можно найти много неприятных слов в адрес этой программы. Особенно по обработке ею кодировок базы.. Мне думается, некоторые из пользователей форума с этим встречались..

Частый случай - cp1251 данные пишутся в latin1 базу... В самой базе можно это поправить, но дамп, снятый phpmyadmin'ом, будет иметь только мусор. Много раз приходилось сталкиваться с неверным бекапом, когда копия таблицы не восстанавливается из дампа по малопонятной причине.

Во избежание этих и многих других проблем, хотел бы рекомендовать к применению SQLyog (http://www.webyog.com/).
Программа с графическим интерфейсом, содержит достаточно большое количество инструментов для управления базой. В составе поставки имеется php-скрипт 'SQLyog HTTP Tunneler'. Из названия должно быть ясно, что его назначение - доступ к БД на 127.0.0.1 через туннель.

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

Очень нравится функция переноса файлов базы, когда все содержимое папки БД будет скопировано на другой сервер. Стоит признать, что эта функция есть у многих других программ. Но эта программа не будет просить купить ее, то есть она бесплатна.

---
Заинтересовавшиеся в софте - пишите на email мне
все вылечим )

МакарЧег
07-03-2007, 17:23
Я на счёт бэкапа. Я пользуюсь достаточно удачным маааленьким скриптом! Может и бэкап сжимать в архив.

Digger
07-03-2007, 17:31
Абсолютно нормальный менджер базы данных - phpmyadmin, я им пользуюсь даже тогда, когда есть возможность запустить нормальный клиент.

Объясни мне, пожалуйста, каким образом использование адреса localhost позволяет повысить безопасность сайта? Каким образом это вообще меняет безопасность? Безопасность повышается тем, что файрвол кроет порт доступа к площадке, а адрес может быть любым в рамках локалки.

А вот организация туннеля закачкой скрипта, конвертирующего запросы в данные - во-первых ждет трафик, хотя и незначительно (меньше, чем PhpMyAdmin разумеется :-), но зато сам факт существования такой программы является огромной дырой!

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

За исключением туннелирования (не уверен, мож оно там и есть), самой приятной программой является пакет по для управления MySQL - он есть на сайте самого MySQL.

Хотя, опять же, давно я не имел дела с хостерами, обладание собственным сервером расслабляет :-)

Netwanderer
07-03-2007, 22:00
Я на счёт бэкапа. Я пользуюсь достаточно удачным маааленьким скриптом! Может и бэкап сжимать в архив.
И кто ж нашел тот скрипт? Мне аж интересно...
А насчет phpmyadmin, когда траффик ограничен, то приходится искать более маленький менеджер баз данных... Phpmyadmin очень функционален, не спорю, но веесит он...скажем.. много..так что лучше дома все настроить... сохранить этим самым дампером, и с его же помощью залить на сервер..имхо

Digger
07-03-2007, 22:31
Он весит больше на количество HTML-тегов! Это не так уж и много! ;-)

Netwanderer
07-03-2007, 23:15
Он весит больше на количество HTML-тегов! Это не так уж и много! ;-)
Ну для тех у кого анлимитка конечно... а у меня 350 МБ в месяц и все... можно вешаться...
Еще, кстати, есть NSQL от RST/GHC [http://rst.void.ru] тоже прикольная штука... правда несколько хакерской напрвленности.. но какое-то время я использовал ее...

TijAY
08-03-2007, 04:18
Абсолютно нормальный менджер базы данных - phpmyadmin
а потом у нас latin1/fi :)
не в обиду сказано, но таких случаев - масса.. думаю, хаммер подтвердит.


каким образом использование адреса localhost позволяет повысить безопасность сайта?
это не мое мнение. я с тобой согласен. это - мнение многих хостеров. локалхост дают потому, что сам сервер не имеет внешнего канала в инет. вот так и повышают уровень..


А вот организация туннеля закачкой скрипта, конвертирующего запросы в данные - во-первых ждет трафик, хотя и незначительно (меньше, чем PhpMyAdmin разумеется :-), но зато сам факт существования такой программы является огромной дырой!

не совсем понял. в чем выражается дыра? скрипт, сам по себе, не содержит ничего специфичного.
все формальные параметры - имя базы, логины/пароли, имена серверов бд и прочее - скрипт получает от программы при коннекте к нему..


Хотя, опять же, давно я не имел дела с хостерами, обладание собственным сервером расслабляет :-)
вот так как расслабишься, а сайт уже того... с порнухой на морде висит.. :) шучу!

Digger
08-03-2007, 12:28
Не пробовал обновить скрипт? ;-) С нормально созданной базой у меня проблем в кодировке нет - надо только выставить параметры и, может быть, подредактировать скрипт. У меня была проблема с базой форума, когда я переносил ее с 3-го мускуля на 4-й - она была слишком большая, так что ни один из клиентов (в том числе перечисленных) не хотел ее выгружать, поэтому пришлось ее банально скопировать файлами, но кодировка слетела. В конце концов, это же просто скрипт и он выполняет MySQL-команды через тот же mysql....();

Гыыыы, а как же с него работает сайт, если у сервера нет доступа в инет?! :-))) Спасибо за поднятое с утра настроение :-)

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

TijAY
02-04-2007, 01:33
Сообщение, оно же цитата. Иногда при установке нового сервера php+mysql на этапе регистрации в базе можно схватить сообщение о невозможности соединения с базой.. Например неверный пароль и его вариации. Это при том, что пароль вводится верно. Решает эту проблему чтение мануала по MySQL:


To solve this problem, you should use one of the following approaches:

Upgrade all client programs to use a 4.1.1 or newer client library.

When connecting to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password.

Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function:


mysql> SET PASSWORD FOR
-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');


Исходя из этой информации имеем вот такой готовый запрос:

For mysql-manager - use string


SET PASSWORD FOR
'root'@'localhost' = OLD_PASSWORD('root');

For sqlyog query - use string


SET PASSWORD FOR
'root'@'localhost' = OLD_PASSWORD('root')

HummEr
12-05-2007, 19:58
Эм... А можно вопрос?

Вот допустим есть таблица с записями (около 1000), в ней ячейки id, author, date, url и прочее...
Как автоматизировать процесс смены поля id? Допустим сейчас там порядок такой: 1143025610, 1143025667, 1143025736, 1143025834... А надо так: 1, 2, 3, 4...

И ещё: как автоматизировать процесс замены куска текста в таблице? Допустим во всех описаниях к файлам нужно сменить адрес сайта с _www.xxx.ru на _www.3x.ru

PGArchangel
12-05-2007, 22:13
Не знаю, можно ли такое сделать через SQL-запрос, но вроде нельзя. :) А вот через php-скриптик - можно. :) Если хочешь, могу накатать (тока кинь тада SQL-запрос создания таблицы, структуру то есть). :)

HummEr
13-05-2007, 16:46
Ок. Вечером в аську накатаю...

TijAY
06-09-2007, 19:11
У меня была проблема с базой форума, когда я переносил ее с 3-го мускуля на 4-й - она была слишком большая, так что ни один из клиентов (в том числе перечисленных) не хотел ее выгружать, поэтому пришлось ее банально скопировать файлами, но кодировка слетела. В конце концов, это же просто скрипт и он выполняет MySQL-команды через тот же mysql....();

Буквально вчера столкнулся с похожей проблемой. Виндовый сервер на латин1 писал данные в цп1251. Потом сервер упал. Скопировал папку. Ставлю на БСД хост с ютф8. Получаем ???? вместо текста.

Но нашлось решение - геморой еще тот, но действует!
Переводим в формат блоб, потом в 1251, а потом выгружаем в дамп. А дамп заливаем в базу с ютф. Жопа, но работает! :)

Digger
06-09-2007, 19:18
В формат блоб всю базу - каждое поле каждой таблицы?

TijAY
07-09-2007, 13:34
Нет, только там где текст! Тяжело, но работает..

ALTER TABLE jos_content CHANGE introtext introtext BLOB;
ALTER TABLE jos_content CHANGE introtext introtext TEXT CHARACTER SET cp1251;

Вот два запроса: для каждого столбца таблицы необхзодимо выполнить.

Теория работы данной операции:
в текстовом поле каждый символ представляет собой смещение в таблице кодировки при выборке. Таким образом, перевод в бинарный вид сохранит смещение, а вторая команда - подставит нужный интерпретатор. Проверил на себе - залил, все работает! :)

Долго, муторно, но действенно!

Digger
07-09-2007, 17:05
Да, но обычные текстовые поля - тоже летят! :-(

TijAY
07-09-2007, 18:07
В аттаче по порядку показано что и во что я превращал.
Битые поля в редакторе до, и кириллица в полях после!
Также приведен скрин запроса. Нафиг не нужен, но для ясности не помешает.

---
Меняем, соответственно, поля text, varchar.......