FAQ.MySQL.RU
Ответы на часто задаваемые вопросы
В этом разделе вы сможете получить ответы на интересующие вас вопросы, связанные с MySQL,
настройке программного обеспечения, и другую полезную информацию.
Общие вопросы:
Q. Что такое MySQL?
MySQL – сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и
легкостью в использовании, является идеальным решением для малых и средних приложений.
Q. Где можно взять MySQL?
На официальном сайте http://www.mysql.com или на http://www.mysql.ru в разделе
Download. Рекомендуем брать с сервера последнюю стабильную версию.
Q. Хочу изучать MySQL. С чего начать?
Советуем начать изучение с раздела документация.
Из нее вы не только узнаете начальные сведения, но, и самое главное, освоите правильные приемы работы.
Q. Что такое PHP?
PHP – это скрипт-язык (scripting language), который интерпретируется и выполняется на сервере.
Q. Что такое Perl?
Perl - это аббревиатура, расшифровывающаяся как Practical Extraction and Report Language
(практический язык извлечений и отчетов).
Технические вопросы:
Q. Как увеличить производительность выполнения mysqldump?
При дампе очень больших таблиц mysqldump пытается использовать очень большой объем ОЗУ.
Чтобы он этого не делал нужно использовать опцию "-q".
Q. Как определить и исправить повреждение MySQL базы?
Для тестирования повреждений рекомендуется выполнять: myisamchk tables[.MYI]
Параметры уровня проверки:
--medium-check - средний
--extend-check - расширенный
В crontab:
35 0 * * 0 /usr/local/mysql/bin/myisamchk --fast --silent /path/to/datadir/*/*.MYI
Внимание, myisamchk нужно запускать при _не_ запущенном mysqld, иначе нужно использовать утилиту mysqlcheck
(mysqlcheck --repair --analyze --optimize --all-databases --auto-repair)
Восстановление таблицы:
REPAIR TABLE tbl_name или myisamchk -r table_name или myisamchk --safe-recover table_name
Q. Как произвести оптимизацию хранилища в MySQL?
Почистить "дырки" (дефрагментация), обновить статистику и отсортировать индексы:
OPTIMIZE TABLE имя_таблицы;
или использовать: myisamchk --quick --check-only-changed --sort-index --analyze
Внимание, myisamchk нужно запускать при _не_ запущенном mysqld, иначе нужно использовать утилиту mysqlcheck
(mysqlcheck --repair --analyze --optimize --all-databases --auto-repair)
Апдейт статистики оптимизатора:
ANALYZE TABLE имя_таблицы;
или использовать: myisamchk --analyze
Рекомендуется регулярно выполнять:
isamchk -r --silent --sort-index -O sort_buffer_size=16M db_dir/*.ISM
myisamchk -r --silent --sort-index -O sort_buffer_size=16M db_dir/*.MYI
Q. Как бэкапить данные в MySQL?
Бэкап структуры:
mysqldump --all --add-drop-table [--all-databases] --force [--no-data] [-c] --password=password --user=user [база] [таблицы] > backup_file
( -c - формировать в виде полных INSERT. --all-databases - бэкап всех баз, --no-data - бэкап только структуры таблиц в базах, [таблицы] - бэкапить только указанные таблицы.)
Восстановление: mysql < backupfile
(для прямой вставки из текстового файла можно воспользоваться mysqlimport)
(для анализа структуры базы, например, списка таблиц: mysqlshow <база>)
Q. Как обеспечить корректную работу MySQL с русскими символами при сортировке и выборке данных?
В /etc/my.cnf вписать в блоке [mysqld]: default-character-set=koi8_ru (или cp1251)
При работе с базой можно выставить рабочую кодировку через: SET CHARACTER SET koi8_ru
Q. Как добавить нового пользователя или БД в MySQL?
use mysql;
insert into user (host,user,password) values ('localhost', 'пользователь', password('пароль'));
insert into db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,
Drop_priv,Grant_priv,References_priv,Index_priv,Alter_priv)
values ('localhost','БД','пользователь','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
flush privileges;
или воспользоваться скриптом mysql_setpermission
Q. Как изменить забытый MySQL административный пароль?
1. перезапустить mysqld с опцией --skip-grant-tables
2. mysqladmin -h хост -u пользователь password 'новый пароль'
Q. Как работать с базой данных MySQL из Access?
Необходимо скачать MyODBC и установить, после этого в Access в базе данных - "создать / связь с таблицами" - тип
файлов указываем ODBC . Для обновления таблиц удобно пользоваться служебной утилитой Access2000
"Сервис / Служебные программы / Диспетчер связанных таблиц".
Q. Как сделать таблицу Excel из таблицы MySQL?
#!/usr/local/bin/perl
use DBI;
$table = "table"; $db = "base"; $db_serv = "192.168.0.1"; $user = "user"; $passwd = "password";
$c = DBI->connect("DBI:mysql:$db:$db_serv", $user, $passwd);
$statement = "select count(*) from $table";
$cc = $c->prepare($statement);
$ccc = $cc->execute;
@row = $cc->fetchrow_array;
$n = $row[0];
$statement = "select * from $table";
$cc = $c->prepare($statement);
$ccc = $cc->execute;
open F, "$ARGV[0]";
for ($i=0; $i<$n; $i++) {
@row = $cc->fetchrow_array;
print F "$row[0];$row[1];$row[3]\n";
}
Запускаем скрипт:
./mysql_2_exel.pl file
После этого можно открыть файл 'file' экселем.
Q. Как поместить время в формате Epoch в MySQL?
from_unixtime(989493919)
Q. Как ограничить число элементов выдаваемых SELECT в MySQL?
Необходимо воспользоваться LIMIT. Первый параметр с какой записи, а второй сколько.
select * from table LIMIT 1,1;
Q. Как использовать базу данных MySQL в своей программе? (под Windows)
Подключите к проекту libMySql.lib, положите заголовочные файлы из поставки MySQL в директорию
заголовочных файлов вашего компилятора, либо в каталог с программой, либо вообще куда душе угодно
(лишь бы сами их не потеряли), libmysql.dll в каталог с программой, и пользуетесь функциями API MySQL,
которые подробнейшим образом описаны в поставляемой вместе с сервером документацией. libmysql.lib и libmysql.dll
берутся после установки дистрибутива MySQL в каталоге lib\opt.
libmysql.lib ОБЯЗАТЕЛЬНО должен работать с libmysql.dll ТОЙ ЖЕ поставки/версии.
По этой причине НАСТОЯТЕЛЬНО НЕ рекомендуется хранить libmysql.dll в системном каталоге WINDOWS!
Храните свою libmysql.dll в каталоге со своей программой.
Для C++ Builder получить libmysql.lib нужно импортом из libmysql.dll:
> implib libmysql.lib libmysql.dll
Из заголовочных файлов требуются:
mysql.h
mysql_com.h
mysql_version.h
В последних версиях ещё и my_alloc.h
Всё это добро берётся после установки дистрибутива MySQL в каталоге include.
Из всех в программе подключается только mysql.h. Перед ним обязательно должно быть подключен windows.h
#include <windows.h>
#include <mysql.h>
Особенности Билдеровского VCL: В программах, использующих VCL, компилятор ругается на my_socket,
объявленную в mysql.h как #define my_socket SOCKET. Заменяем на #define my_socket UINT_PTR и всё работает.
(SOCKET в winsock.h объявлен как typedef UINT_PTR SOCKET).
Q. Как разрешить пользователю доступ к базе данных?
GRANT ALL PRIVILEGES ON *.* TO usernameS@hostname IDENTIFIED BY 'userpassword' WITH ALL PRIVILEGES;
Q. Как запретить пользователю операции с базой данных?
Revoke ALL PRIVILEGES on *.* from usernameS@hostname;
Q. Как получить случайный ряд из таблицы MySQL?
SELECT * FROM table ORDER BY RAND() LIMIT 1;
Q. Как выполнить поиск по регулярному выражению?
Вот например так
mysql> select rec_id from rec where rec_id regexp "^1[0]+$" limit 10;
+--------+
| rec_id |
+--------+
| 10 |
| 100 |
| 1000 |
+--------+
Данный запрос выведет все записи в которых ключевое поле это степень десяти.
Обратите внимание на то что регулярное выражение не имеет ограничителей !
Q. Почему при построении запроса с * ничего не выводится?
В документации по языку четко написано правило построения запроса:
mysql_query("SELECT * FROM Files WHERE FielName LIKE '%строка*%'");
Организационные вопросы:
Q. Не могли бы Вы мне выслать документацию в электронном варианте?
К сожалению нет, мы не высылаем документацию, вы можете ознакомиться с ней на сайте.
Q. У меня возникли вопросы относительно MySQL, на какой e-mail или где их можно задать?
Вы можете задать все вопросы в разделе Форум (Webboard).
Q. Мне нужно разработать софт с использованием MySQL, сам я не программист, не могли бы Вы помочь написать?
К сожалению, нет, Вы можете обратиться по вопросам разработки программного обеспечения в компанию
INSIDE - www: www.inside.ru, e-mail: info@inside.ru
Q. Есть к Вам предложение! У меня есть желание сделать на mysql.ru новый раздел и им заниматься (написать статьи
разместив их на сайте mysql.ru, и.т.д.), возможно ли это?
Да, конечно, вы можете написать нам.
Q. Я хотел бы допополнить данный раздел своим FAQ. Возможно?
Конечно, присылайте!
|