Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
Здравствуйте.
Есть несколько вопросов:
читать дальше1) Есть ли разница, как писать команды в запросе к MySQL? То бишь, под виндой у меня работает и select, и SELECT абсолютно одинаково. Но я не знаю, где будет крутится база. В общем, зависит ли регистр команд от оси или MySQL'ю всё равно под какой системой он работает и в любом случае select=SELECT? Просто, насчёт имён таблиц и баз, я знаю что они чувствительны к регистру, а вот насчёт команд не в курсе. upd: команды регистронезависимы и операционка роли не играет. Спасибо DukeSS
2) Как правильно делать перенос базы с сервера на сервер? И что надо сделать на принимающей стороне? Перенос, как я понимаю, корректно будет делать через mysqldump. То есть: 1. сделать дамп у себя и получить namebase.sql 2. перенести namebase.sql на сервер принимающей стороны 3. выполнить на принимающей стороне mysqldump, чтобы база появилась на новом сервере. Правильно? upd: разобрался. Правильная последовательность: на старом сервере: mysqldump `basename` -u user -p > "namebase.sql" на новом сервере: mysql -u user -p mysql>create database `namebase`; mysql>exit mysql -u user -p `namebase` < "namebase.sql"
Отсюда вытекает ещё несколько вопросов. 3) Если мне надо будет регулярно делать дамп базы, для этого надо чтобы на новом сервере мне сделали учётку в системе с правами на запуск mysqldump? Или это как-то иначе реализовать можно? (без всяких phpmyadmin и иже)
4) Я так понимаю, что надо будет обязательно сделать на новом сервере пользователя MySQL, чтобы обращаться к базам. Вопрос - как правильно прописать права, чтобы я мог делать с базами что угодно, но только со с теми, которые сам создал? Для одной базы, я понимаю, оно будет выглядеть так: GRANT ALL ON basename.* TO user@localhost IDENTIFIED BY 'password'; Это откроет мне все права по отношению к указанной базе. Но мне нужно, чтобы я мог создавать другие. В общем, нужна команда, которая позволит мне творить с базами что угодно, но ТОЛЬКО со своими (которые сам создал) и не даст мне влиять на работу сервера, только на свои базы.
5) Вопрос про кодировки. У меня настройки MySQL прописаны так, что данные внутри баз хранятся в utf-8. Если я перенесу базу на новый сервер, а там настройки кодировки другие, что надо будет сделать, чтобы избежать проблем? Можно ли определить для базы кодировку принудительно (как?) чтобы она была в этой кодировке, вне зависимости от настроек сервера?
6) Вопрос, по возврату данных, после запроса с помощью AJAX. В мануале пишется, что данные с сервера будут находится в XMLHttpRequest.responseText (ссыль). Что должно быть на стороне сервера, чтобы передать данные в это свойство? То бишь, можно сделать echo "Ответ сервера" и "Ответ сервера" попадёт в responseText или создаётся какая-то переменная, которой надо присваивать передаваемые данные, типа $response = "Ответ сервера". Вопрос возможно глупый, но а) все с чего-то начинают; б) в мануале описана только клиентская часть, как отправить данные серверу и как обработать полученные, а примеров серверной части не указано. upd: Разобрался. Просто echo работает, его вывод автоматом записывается в responseText.
1) Разницы в регистре нет. 2)1 - да, 2 - да, 3 - кажется, нет, надо пользоваться mysql - пусть товарищи поправят 3) Попросить сделать задание по cron для автоматического дампа
Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
neo_rage, Не все. InnoDB вроде как только через дамп. Это к примеру. У меня InnoDB не фурычит, поэтому у меня в стандартном MyISAM. Его можно и просто переносом. Но, имхо, дампом спойнее как-то + не надо искать где в системе базы лежат.
ваще конечно правильный совет -- рулить на постгрес, но я прекрасно понимаю что его никто не оценит.
про файлы данных: копировать конечно можно, но совершенно не нужно. сразу запомните, что если вам нужно скопировать файлы данных, вы делаете что-то не то. данные переносятся дампом всегда, за исключением очень нестандартных ситуаций.
про дамп: 1. возьмите себе за правило сразу жать его: mysqldump ... | gzip > filename.sql.gz 2. никогда-никогда-никогда не создавайте БД без дефолтной кодировки. кодировка всегда юникод. 3. дамп отлично работает по сети есичо (к вопросу о системном юзере)
про гранты: 1. нет никакого смысла указывать хост юзеру, это только мешает и ничего не даёт. 2. мускуль такая помойка, что может выдать грант на несуществующую базу, этим и пользуйтесь. сначала делаете юзера с грантом ALL, потом от него делаете свою базу, очень удобно.
ещё про кодировки: настройки сервера никак не влияют на существующие данные. ставьте явно кодировку каждой базы (бонус за каждую таблицу) и клиентского соединения, и проблем у вас быть не должно.
про аякс: судя по используемой терминологии, HTTP для вас -- это непонятная магия. это плохо. HTTP очень простой протокол, рекомендую потратить пару часиков и прочитать его RFC.
ответы на все ваши вопросы можно легко найти на офсайте. например для того чтобы узнать "как ставить кодировку для базы/таблицы" изучите синтаксис команд create database и create table. заодно просмотрите там же общие материалы по кодировкам, там всё адово неочевидно, как впрочем и во всём у них.
2)1 - да, 2 - да, 3 - кажется, нет, надо пользоваться mysql - пусть товарищи поправят
3) Попросить сделать задание по cron для автоматического дампа
про файлы данных: копировать конечно можно, но совершенно не нужно. сразу запомните, что если вам нужно скопировать файлы данных, вы делаете что-то не то. данные переносятся дампом всегда, за исключением очень нестандартных ситуаций.
про дамп:
1. возьмите себе за правило сразу жать его: mysqldump ... | gzip > filename.sql.gz
2. никогда-никогда-никогда не создавайте БД без дефолтной кодировки. кодировка всегда юникод.
3. дамп отлично работает по сети есичо (к вопросу о системном юзере)
про гранты:
1. нет никакого смысла указывать хост юзеру, это только мешает и ничего не даёт.
2. мускуль такая помойка, что может выдать грант на несуществующую базу, этим и пользуйтесь. сначала делаете юзера с грантом ALL, потом от него делаете свою базу, очень удобно.
ещё про кодировки: настройки сервера никак не влияют на существующие данные. ставьте явно кодировку каждой базы (бонус за каждую таблицу) и клиентского соединения, и проблем у вас быть не должно.
про аякс: судя по используемой терминологии, HTTP для вас -- это непонятная магия. это плохо. HTTP очень простой протокол, рекомендую потратить пару часиков и прочитать его RFC.
А можно пример, как кодировку для базы/таблицы ставить?