Один пользователь может иметь несколько различных адресов, с которых может производиться подключение, поэтому на данном этапе проверяется значение Host. Если значение поле Host пусто, тогда проводится дополнительная проверка в таблице host. Таблица Host идентична таблице Db, за исключением того, что в ней отсутствует поле User. Столбцы таблицы host аналогичны столбцам таблицы db, разница состоит только в том, что данные из таблицы host при совпадении полей Host и Db имеют более высокий приоритет, и перекрывают ранее установленные значения.
MySQL сервер позволяет устанавливать ограничения на доступ к отдельным таблицам и столбцам таблицы (эта информация хранится в таблицах tables_priv и columns_priv), но увеличение числа проверок приводит к уменьшению производительности.
2. Команды пакета MySQL.
СУБД MySQL поставляется со следующими основными программами и скриптами:
· mysql
· mysqlaccess
· mysqladmin
· mysqld
· mysqldump
· mysqlshow
· isamchk
· isamlog
· safe_mysqld
Еще есть несколько утилит. Они не жизненно важны для MySQL, но обеспечивают полезные дополнительные функциональные возможности.
· comp_err
· msql2mysql
· mysqlbug
· perror
· replace
· which1
· zap
Клиентская программа MySQL.
Запуск:
mysql [OPTIONS] database
ОПИСАНИЕ:
Клиентская часть СУБД MySQL названа MySQL. Она обеспечивает интерфейс командной строки с СУБД MySQL, и возможность неинтерактивной пакетной обработки.
Программой mysql поддерживаются следующие опции. Можно использовать или "короткий" одиночный символ или более подробную версию.
| -\?, --help | Справка. |
| -d, --debug=[options] | Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. |
| -d, --debug-info | Вывести отладочную информацию при выходе из программы. |
| -e, --exec | Выполнить команду и выйти, неявная форма опции --batch. |
| -f, --force | Продолжить, даже если есть SQL ошибка. |
| -h, --hostname=[hostname] | Задает имя сервера, с которым необходимо соединиться. |
| -P, --port=[port] | Порт, для соединения с сервером MySQL. |
| -p, --password=[password] | Пароль пользователя, для соединения с сервером MySQL. Не должно быть пробела между -p и паролем. |
| -q, --quick | Быстрый (небуферизованный вывод), может замедлить сервер, если вывод приостановлен. |
| -s, --silent | Работать молча (подавить вывод). |
| -u, --user=[user] | Имя пользователя для соединения с сервером MySQL. Необязательно, если имя пользователя такое же, как логин. По умолчанию логин используется в качестве имени пользователя. |
| -v, --verbose | Подробный вывод. -v опция может быть удвоена или утроена для более подробного вывода. |
| -w, --wait | Если подключение терпит неудачу, то подождать и повторить попытку. |
| -B, --batch | Выполнить в пакетном режиме. Никаких запросов и никаких ошибок в STDOUT. Устанавливается автоматически при чтении из/записи в канал. Результаты будут выведены в формате с разделением табуляцией. Одна строка результата соответствует одной строке вывода. |
| -I, --help | Справка, эквивалент -\?. |
| -V, --version | Вывести информацию о версии пакета. |
Проверка прав доступа пользователя.
СИНТАКСИС:
mysqlaccess [host] [user] [db] OPTIONS
ОПИСАНИЕ:
Скрипт mysqlaccess используется, чтобы внести в список привилегии пользователя для конкретной базы данных. Это дает информацию, которая может быть полезна при диагностировании проблем с доступом пользователей к данной базе данных.
Скрипт mysqlaccess поддерживает следующие параметры (можно использовать "короткий" одиночный символ или более подробную версию):
| -?, --help | Справка. |
| -v, --version | Информация о версии |
| -u, --user=... | Имя пользователя для доступа к базе данных. |
| -p, --password=... | Пароль пользователя, для соединения с сервером MySQL. |
| -h, --host=... | Имя сервера, используется для проверки прав доступа. |
| -d, --db=... | Имя базы данных, используется для проверки прав доступа. |
| -U, --superuser=... | Логин администратора. |
| -P, --spassword=... | Пароль администратора. |
| -b, --brief | Вывести краткие сведения о таблице. |
| --relnotes | Вывести заметки по реализации. |
| --plan | Вывести идеи для будущих реализаций. |
| --howto | Вывести примеры использования `mysqlaccess' |
| --debug=N | Уровень отладки N (0..3) |
Необходимо указать по крайней мере имя пользователя и имя базы данных, которые нужно проверить. Если имя сервера не задано, то подразумевается имя 'localhost'.
Выполняет административные функции.
СИНТАКСИС:
mysqladmin [OPTIONS] command command...
ОПИСАНИЕ:
Программа mysqladmin используется, для управления различными аспектами функционирования СУБД MySQL. Допустимы следующие опции (можно использовать "короткий" одиночный символ или более подробную версию):
| -\?, --help | Справка. |
| -d, --debug=[options] | Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. |
| -f, --force | Не спрашивать подтверждения при пропуске таблицы. |
| -h, --host=[hostname] | Имя сервера, если не localhost. |
| -i, --sleep=[seconds] | Выполнить команды несколько раз с паузой в [секунд] между ними. |
| -p, --password[password] | Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем. |
| -u, --user=[user] | Имя пользователя. Если не указано, используется текущий логин. |
| -P, --port=[port] | Порт, для соединения с сервером MySQL. |
| -V, --version | Вывести информацию о версии. |
Кроме этого программа mysqladmin поддерживает следующие команды:
| create [имя базы данных] | Создать базу данных. |
| drop [имя базы данных] | Удалить базу данных (вместе со всеми таблицами). |
| processlist | Вывести сведения о работающих потоках MySQL. |
| reload | Перечитать настройки и очистить все кэши. |
| shutdown | Завершить работу СУБД MySQL. Все запущенные MySQL-сессии помечаются как 'killed'. Это означает, что все потоки, которые простаивают в настоящее время, будут закрыты немедленно, а управление потоками будет закрыто, когда они достигнут точек завершения, определенных сервером. Клиенты получат сообщение об ошибке 'mysql server has gone away'. |
| status | Вывести короткое сообщение о статусе сервера. |
Серверная часть пакета MySQL (mysqld).
СИНТАКСИС:
mysqld [OPTIONS]
ОПИСАНИЕ:
Программа mysqld является ядром СУБД MySQL. Она запускается как демон в системе и принимает подключения из клиентских программ, выполняя запросы и возвращая результаты. Она многопоточная, то есть обработает больше чем один запрос одновременно.
Может наблюдаться спад производительности при использовании опции --log-isam, поскольку при этом очень многое пишется в файл протокола. Непериодические изменения, обновления и удаления могут уменьшить производительность на 5-10%. Производительность может сильно понизиться на обновлениях, требующих большого числа одновременных изменений.
Опция --log-isam может использоваться, для копирования базы данных. ISAM журналы могут стать ОЧЕНЬ большими.
Каждая операция UPDATE, DELETE и INSERT имеет заголовок в 13 байтов дополнительно к команде.
Каждая открытая таблица требует девять байтов плюс длина имени файла таблицы. Это необходимо только для таблиц, которые еще не в кэше таблиц.
Кроме того будут иметься одиннадцать байтов дополнительно для любых команд, которые кэшируют/блокируют таблицы. Эти события обычно вызваны внутренними командами mysql. Наиболее часто, когда используется SELECT.
В большинстве случаев нужно выполнять mysqld из скрипта safe_mysqld .
Программа mysqld поддерживает следующие опции командной строки:
| -\?, --help | Справка |
| -#, --debug=[options] | Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. |
| -b, --basedir=[path] | Полное имя каталога в который установлен пакет. |
| -h, --datadir [homedir] | Полное имя каталога в котором хранятся базы данных. |
| -l, --log=[filename] | Имя файла протокола запросов к базам данных и подключений. |
| --log-isam=[filename] | Имя файла протокола изменений isam. |
| -O, --set-variable var=option | Установить переменную. См. ниже. |
| -L, --language=[language] | Значение по умолчанию 'english/'. Может быть так же 'swedish/', 'germany/','french/' или 'czech/'. Текущий список можно посмотреть в подкаталог share/mysql каталога, в который установлен MySQL. |
| -P, --port=[port] | Порт для соединения. |
| -T, --debug-info | Вывести отладочную информацию. |
| --skip-new-routines | Не использовать новые возможности этой версии. |
| --skip-grant-tables | Игнорировать таблицы предоставления доступа. Это дает любому ПОЛНЫЙ доступ ко всем таблицам. |
| --skip-locking | Не использовать блокировку системы. Может дать лучшую эффективность, но не должен использоваться вместе с isamchk. ТО ЕСТЬ, сначала остановите сервер. |
| --skip-name-resolve | Эта опция заставит mysqld принимать адреса IP только тех серверов, которые явно указаны в базе данных привилегий mysql. DNS можно более или менее просто хакнуть, а эта опция позволяет избежать ряда проблем, если прикладная программа требует высокого уровня защиты. |
| --skip-networking | Использовать подключения только через интерфейс localhost. Эта опция не будет работать с MIT потоками. Если подключения к базе данных будут только локальные, то использование этой опции защитит от создания удаленных подключений. |
| --skip-unsafe-select | Пропустить возможно опасные оптимизации. |
| --socket=[socket] | Имя сокет-файла для MySQL. Недоступно при использовании версии MySQL, скомпилированной с MIT потоками. ПРИМЕР: mysqld --socket=/tmp/mysql.sock |
| -V, --version | Вывести информацию о версии. |
Если опция -h не определена, mysql будет считать, что основной каталог = "/my/data/sql/mysql".