Руководство по использованию mysql

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

Введение

При постоянном расширении веб-приложений и веб-сайтов, управляемых пользователем, появляется необходимость иметь способ хранения данных в
организованном виде, при этом данные можно получить и манипулировать ими «на лету»; что невозможно при статическом контенте.
Для этого необходимо использовать базу данных!
Базой данных в ее простейшей форме является огранизованный сбор данных, независимо от того, используется ли шкаф для хранения документов или компьютеризированную базу данных.
Интеграция базы данных на ваш веб-сайт или веб-приложение позволяет хранить и извлекать данные с помощью определенных команд.
В этой статье мы будем использовать систему управления реляционной базой данных MySQL.
Это программное обеспечение с открытым исходным кодом, доступное в соответствии с общедоступной лицензией GNU, которое, конечно же, делает его бесплатным!
Веб-сайт MySQL можно найти по адресу http://www.mysql.com/. Все что вы видите в этой статье, указывает на функцию MySQL, вы можете найти полную документацию по этим функциям на веб-сайте MySQL.

СОВЕТ. Чтобы выполнить поиск на веб-сайте MySQL по определенной функции, просто добавьте имя этой функции в URL-адрес MySQL. НАПРИМЕР. http://www.mysql.com/SELECT, этот пример будет искать select.

Я создал модифицированную версию поискового буклета Jesse Ruderman для поиска документации MySQL 5.1. Чтобы использовать его, просто выделите подчеркнутое слово, затем нажмите букмарклет, чтобы перейти к результатам поиска. В качестве альтернативы запустите букмарклет ничего не выделяя, чтобы получить окно подсказки с просьбой ввести то, что вы хотите найти.
Закладка:> MySQL SEARCH

Понимание базы данных

Чтобы хранить данные в базе данных, сначала необходимо создать базу данных. Затем эта база данных может хранить множество таблиц (представьте, что в шкафу хранения хранится много файлов); каждая таблица должна иметь определенные столбцы, и эти столбцы создаются для хранения определенных данных (представьте форму ввода данных). Можно ограничить то, что может быть введено в них, например числовые данные или ограничения символов.
После того, как данные будут введены в базу данных, они будут сохранены в соответствующей таблице, тогда таблица будет состоять из строк и столбцов, похожих на таблицу, поскольку данные сохраняются и отображаются в табличной форме. MySQL может управлять несколькими базами данных, которые могут содержать несколько таблиц. Уровни доступа могут предоставляться различным пользователям для предоставления или отзыва определенных привилегий.
MySQL использует команды/функции на основе SQL (язык структурированных запросов). Это позволяет нам использовать ключевые слова, чтобы указать, какие данные мы хотим вернуть. Затем MySQL реализует некоторые дополнительные функции для улучшения доступных функций. Ключевые слова, как правило, легко понять и часто связаны с английским словом или фразой (например SELECT, UPDATE, WHERE).

Приступаем к работе

В этой части мы рассмотрим:

  • Установка MySQL на ваш локальный компьютер (windows)
  • Настройка локальной установки MySQL (windows)
  • Подключение к локальной базе данных
  • Подключение к удаленной базе данных
  • Ввод и форматирование запросов
  • Форматирование и протоколирование результатов
  • Резервное копирование базы данных
  • Восстановление базы данных

Чтобы использовать MySQL, нам необходимо установить его независимо от того, находится ли он в нашей локальной системе или на удаленном веб-узле. Однако для того, чтобы подключиться, мы должны сначала использовать интерфейс.

Сегодня мы будем использовать пакет Essentials, который доступен на веб-сайте MySQL по адресу http://dev.mysql.com/downloads/.
На момент написания этой статьи, текущей стабильной версией была 5.1, и я расскажу, как ее установить в операционной системе Windows. Сначала найдите нужное программное обеспечение, я буду использовать 64-битную версию Windows, но вы можете выбрать другую в зависимости от архитектуры вашей системы. Для этой статьи я решил использовать пакет Essentials, поскольку он включает в себя все необходимые функции. Вы можете сравнить различия между версиями windows  по адресу http://dev.mysql.com/doc/refman/5.1/en/windows-choosing-package.html.

Установка MySQL на локальную машину

После того как вы загрузите соответствующий исполняемый файл установки, запустите его, и вам будет предложено вывести это окно. Как вы видите, я устанавливаю версию 5.1.30. Нажмите «Далее», чтобы перейти к следующему экрану.

Я решил сохранить типичную установку, но не стесняйтесь выбирать, какие компоненты вы хотите установить. Вам понадобятся сервер MySQL и файлы данных, если вы работаете на своей локальной машине; однако, если у вас есть доступная вам удаленная база данных, которую вы хотите использовать, вы можете не устанавливать эти функции. Вам понадобится оболочка командной строки MySQL, так как это приложение, которое мы будем использовать. Опять же, если вы не используете локальную базу данных, вы можете пропустить утилиты командной строки и конфигурацию экземпляра сервера. Эта статья не будет охватывать использование C и MySQL, однако, если вы работаете на C, вы можете установить ее. Нажмите «Далее», чтобы перейти к следующему экрану.

Затем вас попросят подтвердить ваш выбор, нажмите «Установить», если вы согласны, иначе нажмите «Назад», чтобы внести какие-либо изменения.

Будет запущена ваша установка, на этом этапе вы можете получить уведомление от антивируса или управления учетными записями пользователей Windows Vista, в нем указывается, что программа просит установить или получить доступ к определенным файлам. Это будет подписан MySQL AB; это компания, которая работает и поддерживает MySQL, о котором вы можете прочитать на http://www.mysql.com/about/.

После установки убедитесь, что сервер MySQL настроен (если установлен), и нажмите «Готово». Поздравляем, вы успешно установили MySQL Server / components. Затем должен загрузиться мастер настройки экземпляра сервера MySQL. Однако, если он не запускается, не волнуйтесь, вы можете получить к нему доступ в папке программ MySQL (если установлена).

Настройка локальной установки MySQL

Теперь мы настроим вашу установку (если вы установили сервер), нажмите «Далее», чтобы перейти к следующему экрану.

Теперь у вас есть возможность использовать стандартную конфигурацию; однако я буду использовать подробную конфигурацию, которая позволит мне настроить различные аспекты моей установки.

Я выбрал это как машину для разработки; однако вы можете выбрать, какой вариант вы предпочитаете. Машина для разработки содержит полный функицонал, но это предотвратит использование слишком большого количества ресурсов. Нажмите «Далее», чтобы перейти к следующему экрану.

Поскольку эта установка предназначена для целей разработки, а не для конкретного проекта, я выбрал многофункциональную базу данных, которая позволяет использовать механизм хранения InnoDB и MyISAM. Подробнее о механизмах хранения можно узнать по адресу http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html. Нажмите «Далее», чтобы перейти к следующему экрану.

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

Теперь вы должны настроить количество одновременных подключений, которые вы собираетесь подключать к своей базе данных в любой момент времени. Выбор DSS позволяет до 100 подключений, но предполагает в среднем 20 одновременных подключений. OLTP поддерживает до 500 одновременных подключений. Однако для нашей машины для разработки мы часто используем только одно соединение; поэтому я установил ручную настройку на 5. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вам предоставляется возможность настроить параметры TCP/IP. Я убрал галочку, чтобы отключить этот флажок. Отключив это, он предотвращает удаленные подключения к базе данных. Затем вы можете установить режим сервера, я оставил этот флажок (вы можете подробнее узнать о режимах сервера по адресу http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html) , Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь нам нужно выбрать, какой набор символов/ кодировку мы будем использовать. Я выбрал UTF8, поскольку она позволяет вводить символы на разных языках. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вам нужно решить, хотите ли вы запускать сервер в качестве службы, вы можете настроить имя службы в раскрывающемся списке. Установив MySQL как службу по умолчанию, сервер будет запущен автоматически и перезапустится даже с ошибкой. Я рекомендую использовать приведенную выше настройку. Вы также можете включить файлы MySQL Bin в путь windows. Это позволяет нам вызывать MySQL непосредственно из командной строки, я также рекомендую это сделать. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вы должны указать пароль для учетной записи root. Это учетная запись «master» с полными привилегиями (имя пользователя учетной записи будет «root»); Я не рекомендую оставлять его пустым! Выбор для включения доступа к корневым машинам по умолчанию отключен; Я сохранил его таким образом, так как отключил настройки TCP/IP, но он также открывает более высокий риск для безопасности, если детали попадают в чужие руки. Я также отключил выбор, чтобы включить анонимную учетную запись, поскольку эта база данных предназначена для личного использования. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь ваша конфигурация установки готова к применению, нажмите «выполнить», чтобы запустить процесс.
Затем вы получите сообщение об успешном конфигурировании. После завершения нажмите кнопку завершения, чтобы выйти из этого мастера. Теперь вы успешно завершили настройку.
Если вы устанавливаете MySQL в другой операционной системе или хотите взглянуть на официальную документацию, то ее можно найти по адресу http://dev.mysql.com/doc/refman/5.1/en/installing.html.

Подключение к локальной базе данных

Теперь, когда у вас установлен сервер, мы можем подключиться к нему!

Я собираюсь использовать Windows CLI (интерфейс командной строки) для инициализации соединения, но вы можете использовать MySQL CLI, найденный в папке программ MySQL.
Сначала откройте командную строку, открыв диалоговое окно запуска, которое находится в меню «Пуск», затем введите CMD и нажмите [ENTER]; под котором вы увидите окно, подобное приведенному ниже.

Первая команда, которую мы собираемся ввести, будет подключаться к серверу с нашим именем пользователя и паролем.
Существует несколько способов подключения к серверу, все из которых выполняют одну и ту же задачу.
Команда соединения MySQL использует следующий синтаксис:

1
mysql [host] [port] [username] [password] [database]

Каждый из этих аргументов может быть передан команде mysql следующим образом:

  • —host=host или -hhost
  • —port=port или -P
  • —username=username or -uusername
  • —password=password or -ppassword
  • база данных задается просто как строка (например db_name)

Примечание. Если вы печатаете строку пароля так, то она будет видна на экране, если вы предпочитаете, вы можете просто предоставить команду -p или -password без пароля, который будет представлен со скрытой подсказкой ввода пароля. Нам также не нужен командный терминатор, поскольку мы вводим в CLI Windows на данный момент не MySQL.

Так как мы хотим подключиться к нашему локальному компьютеру, так что мы можем исключить аргумент host (см. соединение с удаленным хостом позже в этой статье). Мы хотим войти в нашу учетную запись root, чтобы получить полные привилегии, поэтому нам понадобятся наши имя пользователя и пароль; поскольку в настоящее время у нас нет каких-либо баз данных, мы также не будем указывать аргумент базы данных.
Я буду подключаться к учетной записи пользователя root на моей локальной машине с паролем «secret», используя следующую команду:

Эта команда соединится с MySQL с использованием пользователя root и паролем secret. Следующие команды достигнут того же результата.

1
mysql --username=root --password=secret
1
mysql -uroot --password=secret
1
mysql --username=root -psecret

Учетная запись пользователя «root» — это основная учетная запись MySQL, которая была создана во время установки; это тот же пользователь, с которым вы должны подключаться. Однако имейте в виду, что не рекомендуется оставлять учетную запись root, включенной при веб-установке, для получения дополнительной информации см. Учетные записи пользователей и привилегии на веб-сайте MySQL. (http://dev.mysql.com/doc/refman/ 5.1 / о / добавления-users.html)

Подключение к удаленной базе данных

(пропустите это, если вы подключаетесь к локальной базе данных). Чтобы подключиться к вашей удаленной базе данных, часто предоставляемой хостинг-провайдером, вы должны знать IP-адрес или имя хоста вашей базы данных (и, возможно, номер порта, если он был изменен от значения по умолчанию — 3306). Вы будете подключаться к такой базе точно так же,как если бы вы подключались к локальной базе данных, просто заменяя аргументы хоста и порта в зависимости от конфигурации вашего хостинга.

Закрытие соединения

Чтобы отключиться от сеанса MySQL, отправьте команду QUIT (или q).

Форматирование запросов и результатов

Теперь, когда мы подключены (после получения сообщения «Welcome to the MySQL monitor.»), мы готовы отправить наши команды, но сначала есть еще несколько замечаний.

MySQL позволяет использовать пробелы, не влияя на введенные команды. Это пригодится, чтобы сделать наши запросы максимально читаемыми (см. изображение ниже). Оба этих запроса дают одинаковый результат, однако второй значительно легче читать.

Примечание. Этот запрос не будет работать, поскольку у нас нет базы данных, установленной для демонстрационных целей!
Вы можете увидеть код, который я использовал ниже, оба введенных запроса идентичны, но нажав [ENTER], CLI позволяет нам продолжать команду на отдельной строке. MySQL реализовал функцию отмены ввода, если ваша команда охватывает несколько строк, просто выпустите команду clear « c».

1
SELECT fld_1longlonglong, fld_2longlonglong, fld_3longlonglong, fld_4longlonglong, fld_5longlonglong, fld_6longlonglong, fld_7longlonglong FROM tbl_name WHERE fld_1longlonglong = `datavalue`;

Это, однако, также означает, что необходимо отправить специальную команду, чтобы указать, что это конец команды. Мы можем использовать одно из следующих:

  • ;
  • g
  • G

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

Восстановление базы данных

Затем мы будем импортировать файл SQL, это тот же процесс, который вы бы делали, если бы восстанавливали резервную копию базы данных. Этот файл просто имеет все команды, необходимые для создания дубликата базы данных в заданное время резервного копирования.
В идеале мы создали бы собственную базу данных, однако создание базы данных может быть сложным процессом, который включает в себя отношения, соглашения об именах, механизмы хранения и настройки полей, что выходит за рамки данной статьи.

Мы собираемся использовать предварительно подготовленную базу данных, доступную по адресу http://dev.mysql.com/doc/#sampledb, прокрутите вниз до тех пор, пока вы не увидите примеры баз данных, и вы хотите продолжить и загрузить базу данных world.

(world.sql).

После подключения к MySQL мы собираемся восстановить базу данных world, так как это резервная копия предыдущей базы данных. Этот файл представляет собой просто список команд MySQL, которые будут запускаться для создания новой базы данных. Этот файл SQL содержит только данные таблицы и не сохраняет информацию о базе данных, поэтому мы должны сначала создать базу данных для хранения таблиц (см. Аналогию в начале статьи).
Примечание. Чтобы эта статья не стала слишком длинной, я буду размещать несколько команд в фрагментах кода, вы можете разделить эти команды или собрать их вместе для поиска завершающих команд, показанных ранее в этой статье. Также имейте в виду, что функции MySQL не чувствительны к регистру, поэтому SELECT — это то же самое, что и select и SeLEcT. Я лично использую функции MySQL, чтобы сделать мои запросы максимально простыми, поскольку запросы становятся длиннее и сложнее.

Чтобы создать базу данных, которую мы собираемся вызвать команду CREATE DATABASE, после создания мы будем использовать USE базу данных.

1
CREATE DATABASE db_world; USE db_world;

Время импортировать резервную копию, есть много способов сделать это (http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html). Поскольку мы уже подключены к MySQL, мы будем использовать команду SOURCE, за которой следует наше имя файла. Я извлек файл «world.sql» из папки zip и поместил его в свой корневой каталог C: вам нужно знать абсолютный путь к исходному файлу. Если вы укажете только свое имя файла, то MySQL будет искать источник в папке, в которой вы запустили свою командную строку (C:USERSUSERNAME на vista C:Documents and SettingsUsername
на XP). Вы не можете перейти в другой каталог, используя интерфейс MySQL, поэтому убедитесь, что вы предоставили соответствующий абсолютный путь. После выдачи этой команды окно CLI выдает каждую из команд в файле SQL, после завершения вы будете возвращены в приглашение mysql>.

Теперь у вас есть полностью функциональная база данных. Однако мы еще не знаем, что она содержит! Давайте немного поизучаем ее содержимое; мы будем использовать следующие команды:

  • SHOW TABLES; — это показывает таблицы в текущей базе данных.
  • DESCRIBE tbl_name; — это показывает, какие поля существуют в указанной таблице.

После выдачи команды мы теперь знаем, что база данных содержит три таблицы: «city», «country» и «countrylanguage». Затем мы узнаем, какие поля хранятся в этих таблицах. Для каждой из таблиц выполните DESCRIBE tbl_name .

После выдачи команды DESCRIBE для таблицы country вы увидите, что она вернула нечитаемый беспорядок, чтобы решить эту проблему, просто используйте терминатор G вместо;.

1
DESCRIBE city;
2
DESCRIBE country;
3
DESCRIBE country G
4
DESCRIBE countrylanguage;

Теперь у нас есть вся информация, которая нам нужна для управления таблицами по своему желанию, у нас есть имя пользователя, пароль, имя базы данных, имена таблиц и имена полей, если вы работаете на другом языке, таком как PHP, это информация вам потребуется чтобы получить эти данные в вашей системе (см. http://php.net/mysql).

Логирование результатов

Мы можем выбрать логирование вывода MySQL-интерфейса; мы делаем это, отправив команду T filename.txt. Чтобы остановить ведение журнала, мы выдаем команду t. В приведенном ниже примере сохраняется файл с именем log.txt в корневой каталог жесткого диска E:. На моей машине это запасной жесткий диск, обратите внимание, что у вас должно быть разрешение на доступ к этому диску; вы не сможете записать данные в корень на установочном диске Windows в Windows Vista без запуска MySQL из командной строки с повышенными правами.

1
T E:log.txt
2
SHOW TABLES;
3
t

1

2
E:log.txt contents:
3
mysql> SHOW TABLES;
4
+--------------------+

5
| Tables_in_db_world |
6
+--------------------+

7
| city               | 
8
| country            | 
9
| countrylanguage    | 
10
+--------------------+

11
3 rows in set (0.00 sec)
12

13
mysql> t

Резервное копирование базы данных

Монитор MySQL поставляется с расширением mysqldump; так как вы могли бы ожидать эта команда делает дамп из базы данных, чтобы иметь возможность сделать точную копию. Команда mysqldump использует следующий синтаксис:

1

2
mysqldump [username] [password] [database name] > [dump file]

Чтобы запустить это, вы должны быть отключены от сеанса MySQL.

Следующий код логируется в сеанс MySQL с учетной записью пользователя root с паролем secret, затем он выгружает таблицу db_world в файл db_worldbak.sql.

1

2
mysqldump -uroot -psecret db_world > db_worldbak.sql

Заключение

Прочитав эту статью, я надеюсь, что вы получили четкое представление о том, как взаимодействовать с mysql на уровне командной строки. То, что может оказаться полезным в качестве команд, может быть отправлено непосредственно в базу данных MySQL, а не через другой язык сценариев. Пожалуйста, не останавливайтесь здесь, http://dev.mysql.com/doc/ действительно отличный ресурс, и вы никогда не будете создавать свою собственную базу данных. Ниже я написал для вас несколько базовых запросов для поиска в базе данных world и некоторые примеры. Посмотрим, сможете ли вы их понять, если вы еще не знаете, где находится документация.

1
SELECT Name, Population
2
FROM city
3
WHERE CountryCode='GBR'
4
ORDER BY Population ASC
5
LIMIT 0,5G

На английском языке этот запрос SELECT и возвращает Name и Population FROM таблицы city WHERE код страны является GBR, результаты затем фильтруются с использованием ORDER BY Population ASC (возрастающая популяция) и затем LIMIT, чтобы вернуть первые 5 результатов. Этот запрос показывает название и население 5 наименее населенных городов Великобритании.

И еще немного…

1

2
SELECT
3
CONCAT(city.Name,' speak the ', countrylanguage.Language, ' language')AS Detail,
4
city.Population
5
FROM city, countrylanguage
6
WHERE city.CountryCode = countrylanguage.CountryCode
7
AND city.countryCode = 'GBR'
8
AND countrylanguage.Language = 'English'
9
ORDER BY city.Population ASC
10
LIMIT 5,5 G

На английском языке этот запрос SELECT данные, он CONCAT Name из таблицы city и Language из таблицы countrylanguage и отображает результаты AS Detail запрос также SELECT Population из таблицы city. Снова этот запрос SELECT свои данные FROM таблицы city и таблицы countrylanguage, он возвращает данные, в которых код страны города совпадает с кодом страны на языке страны. Данные отфильтровываются, чтобы отображать страны, WHERE код страны — это GBR, AND язык — английский, затем он ORDER BY возрастающей численности населения, а результаты LIMIT, чтобы показать результаты от 6 до 10. Этот запрос известен как INNER JOIN, поскольку две таблицы связаны между собой в запросе. Этот запрос отобразит 6-ю по 10-ю наименее населенные города с кодом страны GBR, в которых оворят по-английски.

Как я узнал, какие данные нужно писать для этих запросов? Запустив следующий запрос SELECT, он использует символ wild card, чтобы выбрать все поля и вернуть все данные в указанной таблице. Из результата запроса я понял, что было включено, и я сделал некоторые сценарии, которые я хотел запросить.

1
SELECT * FROM tbl_name;

Вот несколько функций, которые вы можете посмотреть более подробно, чтобы начать работу:

  • SELECT
  • FROM
  • WHERE
  • ПРЕДЕЛ
  • ORDER BY
  • А ТАКЖЕ
  • OR
  • CONCAT
  • ПОКАЗАТЬ БАЗЫ ДАННЫХ
  • USE
  • CREATE
  • ПОКАЗАТЬ ТАБЛИЦЫ
  • DESCRIBE
  • UPDATE

Следите за последующим руководством по извлечению и обработке данных. Не стесняйтесь задавать любые вопросы в комментариях, и я сделаю все возможное, чтобы ответить на них. Убедитесь, что вы начали свой вопрос с #Q, чтобы я мог их найти!

  • Подпишитесь на RSS-канал NETTUTS для получения других ежедневных статей по веб-разработоке.

Последнее обновление: 04.06.2021

  1. Глава 1. Введение в MySQL

    1. Что такое MySQL. Установка сервера

    2. Консольный клиент MySQL Command Line Client

    3. Консольный клиент MySQL Shell

    4. Графический клиент MySQL Workbench

  2. Глава 2. Определение структуры данных

    1. Создание и удаление базы данных

    2. Создание и удаление таблиц

    3. Типы данных MySQL

    4. Атрибуты столбцов и таблиц

    5. Внешние ключи FOREIGN KEY

    6. Изменение таблиц и столбцов

  3. Глава 3. Основные операции с данными

    1. Добавление данных. Команда INSERT

    2. Выборка данных. Команда SELECT

    3. Фильтрация данных. Оператор WHERE

    4. Обновление данных. Команда UPDATE

    5. Удаление данных. Команда DELETE

  4. Глава 4. Запросы

    1. Выборка уникальных значений. Оператор DISTINCT

    2. Операторы фильтрации

    3. Сортировка. ORDER BY

    4. Получение диапазона строк. Оператор LIMIT

    5. Агрегатные функции

    6. Группировка

    7. Подзапросы

    8. Подзапросы в основных командах SQL

    9. Оператор EXISTS

  5. Глава 5. Соединение таблиц

    1. Неявное соединение таблиц

    2. Inner Join

    3. Outer Join

    4. UNION

  6. Глава 6. Встроенные функции

    1. Функции для работы со строками

    2. Функции для работы с числами

    3. Функции для работы с датами и временем

    4. Функции CASE, IF, IFNULL, COALESCE

  • Глава 1. Введение в MySQL
    • Что такое MySQL. Установка сервера
    • Консольный клиент MySQL Command Line Client
    • Консольный клиент MySQL Shell
    • Графический клиент MySQL Workbench
  • Глава 2. Определение структуры данных
    • Создание и удаление базы данных
    • Создание и удаление таблиц
    • Типы данных MySQL
    • Атрибуты столбцов и таблиц
    • Внешние ключи FOREIGN KEY
    • Изменение таблиц и столбцов
  • Глава 3. Основные операции с данными
    • Добавление данных. Команда INSERT
    • Выборка данных. Команда SELECT
    • Фильтрация данных. Оператор WHERE
    • Обновление данных. Команда UPDATE
    • Удаление данных. Команда DELETE
  • Глава 4. Запросы
    • Выборка уникальных значений. Оператор DISTINCT
    • Операторы фильтрации
    • Сортировка. ORDER BY
    • Получение диапазона строк. Оператор LIMIT
    • Агрегатные функции
    • Группировка
    • Подзапросы
    • Подзапросы в основных командах SQL
    • Оператор EXISTS
  • Глава 5. Соединение таблиц
    • Неявное соединение таблиц
    • Inner Join
    • Outer Join
    • UNION
  • Глава 6. Встроенные функции
    • Функции для работы со строками
    • Функции для работы с числами
    • Функции для работы с датами и временем
    • Функции CASE, IF, IFNULL, COALESCE

Помощь сайту

YooMoney:

410011174743222

Перевод на карту

Номер карты:

4048415020898850

Данный документ поможет пользователю в настройке и использовании MySQL.

Начало работы с MySQL

Введение

MySQL — это популярный сервер баз данных, используемый в разных приложениях. SQL означает язык структурированных запросов — (S)tructured (Q)uery (L)anguage, который MySQL использует для коммуникации с другими программами. Сверх того, MySQL имеет свои собственные расширенные функции SQL для того чтобы обеспечить пользователям дополнительный функционал. В этом документе мы рассмотрим как провести первоначальную установку MySQL, настроить базы данных и таблицы, и создать новых пользователей. Давайте начнем с установки.

Установка MySQL

Сначала убедитесь что MySQL установлен на вашу систему. В случае если вам требуется определенная функциональность MySQL, убедитесь, что установлены необходимые USE-флаги, так как они помогут в тонкой настройке инсталляции.

По завершении установки, вы увидите следующее уведомление:

КОД Сообщение einfo MySQL

You might want to run:
"emerge --config =dev-db/mysql-[version]"
if this is a new install.

Так как это новая установка, мы запустим эту команду. Вам надо нажать ENTER по запросу во время конфигурации базы данных MySQL. В процессе конфигурации устанавливается основная база данных MySQL, которая содержит служебную информацию, такую как базы данных, таблицы, пользователи, разрешения и т.д. В процессе конфигурации рекомендуется чтобы вы изменили свой пароль root так быстро, как это возможно. Мы определенно это сделаем, иначе кто-нибудь сможет волей случая появиться и взломать сервер MySQL, настроенный по умолчанию.

root #emerge --config =dev-db/mysql-[version]

 * MySQL DATADIR is /var/lib/mysql
 * Press ENTER to create the mysql database and set proper
 * permissions on it, or Control-C to abort now...
 
   Preparing db table
   Preparing host table
   Preparing user table
   Preparing func table
   Preparing tables_priv table
   Preparing columns_priv table
   Installing all prepared tables
 
   To start mysqld at boot time you have to copy support-files/mysql.server
   to the right place for your system
 
   PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
   To do so, issue the following commands to start the server
   and change the applicable passwords:
 
   /etc/init.d/mysql start
   /usr/bin/mysqladmin -u root -h pegasos password 'new-password'
   /usr/bin/mysqladmin -u root password 'new-password'
   Depending on your configuration, a -p option may be needed
   in the last command. See the manual for more details.

Заметка
Если предыдущая команда не выполнится из-за того, что имя хоста установлено в localhost, измените его на другое имя, например gentoo. Обновите файл /etc/conf.d/hostname и перезапустите /etc/init.d/hostname.

Некоторая нехарактерная для ebuild-файлов информация MySQL удалена отсюда, чтобы содержать этот документ настолько последовательным, насколько возможно.

Важно
Начиная с mysql-4.0.24-r2, пароли вводятся во время этапа конфигурации, что делает пароль root более надежным.

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

Если вы используете OpenRC, выполните данную команду:

root #/etc/init.d/mysql start

 * Re-caching dependency info (mtimes differ)...
 * Starting mysqld (/etc/mysql/my.cnf) ...        [ ok ]

Если вы используете systemd, вместо этого используйте следующую команду:

root #systemctl restart mysqld.service

With >=dev-db/mariadb-10.1.18, use:

root #systemctl restart mariadb.service

После этого установите пароль root:

root #/usr/bin/mysqladmin -u root -h localhost password 'new-password'

Теперь вы можете проверить, что пароль root был успешно настроен, попытавшись войти на MySQL-сервер:

user $mysql -u root -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 4 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Параметр -u указывает пользователя, который будет выполнять вход. Параметр -h указывает хост. Обычно это будет localhost, если только вы не настраиваете удаленный сервер. И, наконец, -p сообщает клиенту mysql что вы будете вводить пароль для доступа к базе данных. Обратите внимание на приглашение mysql>. Это то место, где вы будете вводить все ваши команды. Теперь, когда мы в командной строке mysql в качестве пользователя root, мы можем начать настраивать нашу базу данных.

Важно
Установка mysql по умолчанию приемлема для систем разработки. Для более безопасных значений по умолчанию можно запустить /usr/bin/mysql_secure_installation

Настройка Базы Данных

Создание Базы Данных

Мы вошли и приглашение mysql показано на экране. Сначала, давайте рассмотрим базы данных, которые у нас имеются в настоящий момент. Чтобы это сделать, мы используем команду SHOW DATABASES.

mysql>SHOW DATABASES;

+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.09 sec)

Важно
Пожалуйста, запомните что команды MySQL должны оканчиваться точкой с запятой — ;

Вопреки тому факту, что тестовая база данных уже создана, мы собираемся создать нашу собственную. Базы данных создаются с использованием команды CREATE DATABASE. Мы создадим одну из них под названием gentoo.

mysql>CREATE DATABASE gentoo;

Query OK, 1 row affected (0.08 sec)

Ответ позволяет нам узнать, что команда была выполнена без ошибок. В этом случае, одна строка была изменена. Это является отсылкой к основной базе данных mysql, которая содержит список всех баз данных. Вам не нужно сильно беспокоиться о второстепенных деталях. Последнее число является характеристикой того, насколько быстро был выполнен запрос. Мы можем проверить, что база данных была создана, запустив команду SHOW DATABASES снова.

mysql>SHOW DATABASES;

+----------+
| Database |
+----------+
| gentoo   |
| mysql    |
| test     |
+----------+
3 rows in set (0.00 sec)

В самом деле, наша база данных была создана. Для того чтобы работать с созданием таблиц для нашей новой базы данных gentoo, нам надо выбрать ее в качестве текущей базы данных. Чтобы это сделать, мы используем команду USE. Команда USE принимает имя базы данных, которую вы хотите использовать в качестве текущей. Другой возможностью является ее установка в командной строке после параметра -D. Давайте продолжим и переключимся к базе данных gentoo.

mysql>USE gentoo;

Database changed

Сейчас, текущей базой данных является созданная нами ранее база данных gentoo. Теперь, когда мы ей пользуемся, мы можем начать создавать таблицы и заполнять их информацией.

Работа с таблицами в MySQL

Создание таблицы

В структуру MySQL входят базы данных, таблицы, записи, и поля. Базы данных объединяют таблицы, таблицы объединяют записи, записи объединяют поля, которые содержат действительную информацию. Такая структура позволяет пользователям выбирать как они хотят обращаться к своей информации. На данный момент, мы разобрались с базами данных, теперь давайте поработаем с таблицами. Во-первых, таблицы могут быть перечислены, подобно базам данных, с использованием команды SHOW TABLES. Сейчас, в базе данных gentoo не имеется таблиц, как и показывает нам следующая команда:

mysql>SHOW TABLES;

Empty set (0.00 sec)

Это означает нам надо создать какие-либо таблицы. Чтобы это сделать, мы используем команду CREATE TABLE. Однако, эта команда достаточно отличается от простой команды CREATE DATABASE тем что принимает список аргументов. Формат команды следует ниже:

КОД Синтаксис CREATE TABLE

CREATE TABLE [table_name] ([field_name] [field_data_type]([size]));

table_name — это имя таблицы, которую мы хотим создать. В данном случае, давайте создадим таблицу с именем developers . Эта таблица будет хранить имя разработчика, email адрес и его должность.

field_name будет хранить имя поля. В этом случае мы имеем три требуемых имени: имя разработчика, email адрес, и должность.

field_data_type — это то, какой тип информации будет сохранен. Различные доступные форматы могут быть найдены по адресу MySQL Column Types Page . Для наших целей, мы будем использовать тип данных VARCHAR для всех наших полей. VARCHAR — это один из простейших типов данных, когда дело касается работы со строками.

size — это то, как много данных будет хранить одно поле. В нашем случае, мы будем использовать 128. Это означает, что поле будет иметь данные типа VARCHAR, которые занимают 128 байт. В настоящий момент, вы можете спокойно думать об этом как о 128 символах, хотя существует более техническое объяснение, которое вам предоставит сайт, указанный выше. Теперь, когда мы знаем как мы создадим таблицу, давайте это сделаем.

mysql>CREATE TABLE developers ( name VARCHAR(128), email VARCHAR(128), job VARCHAR(128));

Query OK, 0 rows affected (0.11 sec)

Похоже, наша таблица была успешно создана. Давайте проверим это командой SHOW TABLES:

mysql>SHOW TABLES;

+------------------+
| Tables_in_gentoo |
+------------------+
| developers       |
+------------------+
1 row in set (0.00 sec)

Да, наша таблица существует. Однако, она, по-видимому, не имеет никакой информации о типах полей, которые мы создали. Для этого, мы используем команду DESCRIBE (или, кратко, DESC), которая принимает имя таблицы в качестве своих аргументов. Давайте посмотрим что она нам даст для нашей таблицы developers.

mysql>DESCRIBE developers;

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(128) | YES  |     | NULL    |       |
| email | varchar(128) | YES  |     | NULL    |       |
| job   | varchar(128) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Показаны разные поля и их типы. Также показано несколько дополнительных атрибутов, которые находятся за рамками данного руководства. Пожалуйста, обратитесь за подробностями к Справочному Руководству MySQL . Теперь у нас есть таблица для работы с ней. Давайте продолжим и заполним ее.

Заполнение Базы Данных MySQL

Мы заполним таблицу (или добавим в нее данные), используя команду INSERT. Подобно команде CREATE TABLE, она также имеет особый формат:

КОД Синтаксис INSERT

INSERT INTO table (col1, col2, ...) VALUES('value1', 'value2', ...);

Эта команда используется для вставки записи в таблицу. table содержит таблицу MySQL, в которую мы хотим ввести информацию. Имя таблицы может сопровождаться списком столбцов для вставки данных, VALUES() хранит значения, которые вы хотите вставить в таблицу. Вы можете опустить список столбцов, если вы вставляете значение в каждый из них и если Вы пишете значения в том же порядке, в котором определены столбцы. В данном случае, мы хотим вставить данные в таблицу developers. Давайте добавим примеры записей:

mysql>INSERT INTO developers VALUES('Joe Smith', 'joesmith@gentoo.org', 'toolchain');

Query OK, 1 row affected (0.06 sec)
## (Если вы не знаете порядок столбцов в таблице или хотите вставить неполную запись)
mysql> INSERT INTO developers (job, name) VALUES('outsourced', 'Jane Doe');
Query OK, 1 row affected (0.01 sec)

В соответствии с полученным результатом, кажется, запись была вставлена правильно. Что если мы хотим ввести больше, чем просто одну запись? Это тот случай, когда команда LOAD DATA вступает в действие. Она загружает записи из файла, разделенного символами табуляции. Давайте это попробуем, отредактировав файл в домашнем каталоге пользователя и добавив в него записи. Мы назовем этот файл records.txt . Здесь приведен пример:

КОД ~/records.txt

John Doe	johndoe@gentoo.org	portage
Chris White	chriswhite@gentoo.org	documentation
Sam Smith	samsmith@gentoo.org	amd64

Важно
Убедитесь, что вы знаете, с какими данными вы будете работать. Очень небезопасно использовать LOAD DATA, когда вы не уверены насчет содержимого файла!

Команда LOAD DATA имеет в каком-то смысле пространное определение, но здесь мы используем ее самую простую форму.

КОД Синтаксис LOAD DATA

LOAD DATA LOCAL INFILE '/path/to/filename' INTO TABLE table;

/path/to/filename — это каталог и имя файла, которые будут использоваться. table — это имя нашей таблицы. В этом случае, наш файл — ~/records.txt, а имя таблицы — developers.

mysql>LOAD DATA LOCAL INFILE '~/records.txt' INTO TABLE developers;

Query OK, 3 rows affected (0.00 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0

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

Сработало хорошо. Однако, это просто вставляет записи, и не дает вам какого-либо контроля над MySQL. Множество веб-приложений используют скрипты sql для того чтобы настроить MySQL быстро и легко. Если вы хотите использовать скрипты sql, вам нужно запустить mysql в пакетном режиме, или использовать файл в качестве источника команд. Здесь приведен пример запуска mysql в пакетном режиме:

user $mysql -u root -h localhost -p < sqlfile

Как и в случае с LOAD DATA, убедитесь, что вы можете сказать что делает файл sqlfile. Невозможность этого может скомпрометировать вашу базу данных! Другим способом выполнения этого является использование команды source. Эта команда запустит команды из файла sql, находясь в интерактивном режиме mysql. Здесь показано как использовать sql file в качестве источника команд:

Если вы видите, что веб-приложение требует запуск sql файла, две команды выше могут быть использованы для выполнения данной задачи. Мы настроили нашу таблицу, как же нам проверить наши поля? Мы выполним это поиском в нашей таблице с помощью запросов.

Запросы к Таблицам MySQL

Запросы являются одной из основных функций любой базы данных SQL. Они помогают превратить данные в таблицах во что-то полезное. Большинство запросов выполняются командой SELECT . Команда SELECT — довольно сложна, и мы рассмотрим только три основных формы этой команды в данном документе.

КОД Виды команды SELECT

## (Выбрать все записи в таблице)
SELECT * FROM table;
## (Выбрать определенные записи в таблице)
SELECT * FROM table WHERE field=value;
## (Выбрать определенные поля)
SELECT field1,field2,field3 FROM table [WHERE field=value];

Давайте-ка быстро рассмотрим первую форму команды. Она относительно проста и дает общее представление о вашей таблице. Мы продолжим и запустим ее, чтобы посмотреть какие данные у нас есть в настоящий момент.

mysql>SELECT * FROM developers;

+-------------+-----------------------+----------------+
| name        | email                 | job            |
+-------------+-----------------------+----------------+
| Joe Smith   | joesmith@gentoo.org   | toolchain      |
| John Doe    | johndoe@gentoo.org    | portage        |
| Chris White | chriswhite@gentoo.org | documentation  |
| Sam Smith   | samsmith@gentoo.org   | amd64          |
| Jane Doe    | NULL                  | Outsourced job |
+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)

Мы видим как данные, которые мы добавили с INSERT, так и вставленные LOAD DATA. Теперь, давайте предположим что мы просто хотим посмотреть запись для Chris White. Мы можем сделать это с помощью второй формы команды select, как показано ниже.

mysql>SELECT * FROM developers WHERE name = 'Chris White';

+-------------+-----------------------+---------------+
| name        | email                 | job           |
+-------------+-----------------------+---------------+
| Chris White | chriswhite@gentoo.org | documentation |
+-------------+-----------------------+---------------+
1 row in set (0.08 sec)

Как предполагалось, выбрана отдельная запись, которую мы искали. Теперь, предположим, мы только хотели узнать должность и email адрес данной персоны, но не ее имя. Мы можем это выполнить с помощью третьей формы SELECT , как здесь и показано.

mysql>SELECT email,job FROM developers WHERE name = 'Chris White';

+-----------------------+---------------+
| email                 | job           |
+-----------------------+---------------+
| chriswhite@gentoo.org | documentation |
+-----------------------+---------------+
1 row in set (0.04 sec)

Этот способ выбора намного легче в управлении, особенно с большими объемами информации, как мы увидим позже. А сейчас, будучи mysql пользователем root, мы обладаем неограниченными разрешениями делать с базой данных MySQL то, что мы захотим. В среде выполнения сервера, наличие пользователя с такими привилегиями может вызвать немало проблем. Для того, чтобы контролировать кто и что может делать с базами данных, мы установим привилегии.

Привилегии MySQL

Привилегии — это то, каким доступом обладают пользователи к базам данных, таблицам, почти ко всему. На данный момент в базе данных gentoo, учетная запись MySQL root — это единственная учетная запись, которая может получить к ней доступ, учитывая ее разрешения. Теперь, давайте создадим двух обычных пользователей, guest и admin, которые получат доступ к базе данных gentoo и будут работать с информацией, хранящейся в ней. Учетная запись guest будет ограниченной в правах. Все, что он сможет сделать, это получить информацию из базы данных, и только это. admin будет иметь те же самые права на управление, что и root, но только к базе данных gentoo (а не основным базам данных mysql). Перед тем как начать, давайте рассмотрим подробнее этот, в некотором смысле, упрощенный формат команды GRANT.

Creating users

The CREATE USER SQL statement will define users and set the authentication method, commonly by password but other plugins may be available.

An example CREATE USER command is:

КОД CREATE USER Syntax

CREATE USER '[user]'@'[host]' IDENTIFIED BY '[password]';

user is the name of the user and host is the hostname the user will be accessing from. In most cases, this will be localhost. To create our users for this example:

(admin)

mysql>CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';

(guest)

mysql>CREATE USER 'guest'@'localhost' IDENTIFIED BY 'password';

Важно
A host of ‘localhost’ does not mean DNS localhost (127.0.0.1) to MySQL. Instead, it refers to the UNIX socket connection and not TCP/IP.

Предоставление Привилегий Командой GRANT

Let’s have a closer look at this somewhat simplified format of the GRANT command.

КОД Синтаксис команды GRANT

GRANT [privileges] ON database.* TO '[user]'@'[host]' IDENTIFIED BY '[password]';

Во-первых, мы имеем привилегии, которые мы хотим назначить. Исходя из того что мы выучили на данный момент, имеются несколько привилегий, которые вы можете установить:

  • ALL — Дает полный контроль базы данных со всеми привилегиями
  • CREATE — Позволяет пользователям создавать таблицы
  • SELECT — Позволяет пользователям делать запросы к таблицам
  • INSERT — Позволяет пользователям вставлять данные в таблицу
  • SHOW DATABASES — Позволяет пользователям просматривать список баз данных
  • USAGE — Пользователь не имеет привилегий
  • GRANT OPTION — Позволяет пользователям предоставлять привилегии

Заметка
Если вы запустили MySQL чтобы передавать данные веб-приложению, CREATE, SELECT, INSERT (обсуждалось здесь же), DELETE и UPDATE (для получения дальнейшей информации посмотрите раздел Справочного Руководства MySQL — Синтаксис GRANT и REVOKE) — это единственные разрешения, которые вам, скорее всего, понадобятся. Большинство делает ошибку, предоставляя все разрешения, когда в этом нет действительной необходимости. Сверьтесь с разработчиками приложения, чтобы посмотреть, не вызовут ли такие разрешения проблемы в общей работе.

Для пользователя admin, подойдет уровень ALL. Для пользователя guest, SELECT будет достаточно для доступа только на чтение. database — это база данных, над которой пользователь, как мы того желаем, должен иметь эти разрешения. В этом примере, базой данных является gentoo. .* означает все таблицы. Если бы вы хотели, вы могли бы установить права доступа для каждой из таблиц. user — это имя пользователя, а host — имя хоста, с которого пользователь будет получать доступ. В большинстве случаев, это будет localhost. И наконец, password — это пароль пользователя. Учитывая эту информацию, давайте продолжим и создадим наших пользователей.

mysql>GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY 'password';

mysql>GRANT SELECT ON gentoo.* TO 'guest'@'localhost' IDENTIFIED BY 'password';

Теперь, когда мы настроили наших пользователей, давайте их протестируем. Сначала, мы завершим работу mysql, введя quit в командной строке:

Теперь мы снова в консоли. Сейчас, когда пользователи созданы, давайте продолжим и посмотрим что они могут делать.

Проверка Пользовательских Разрешений

Сейчас мы должны попытаться войти в качестве пользователя guest. В настоящий момент, пользователь guest имеет только привилегии SELECT. Это, просто-напросто, сводится к способности поиска в базе данных, и ничему другому. Продолжайте и войдите как пользователь guest.

user $mysql -u guest -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 6 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Теперь мы должны протестировать пользовательские ограничения. Давайте переключимся к базе данных gentoo:

mysql>USE gentoo;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed

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

mysql>CREATE TABLE test (test VARCHAR(20), foobar VARCHAR(2));

ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'

Как видите, эта функция не сработала, так как наш пользователь не имеет соответствующих прав доступа. Однако, одной из привилегий, которую мы предоставили, является выражение SELECT. Давайте попробуем:

mysql>SELECT * FROM developers;

+-------------+-----------------------+----------------+
| name        | email                 | job            |
+-------------+-----------------------+----------------+
| Joe Smith   | joesmith@gentoo.org   | toolchain      |
| John Doe    | johndoe@gentoo.org    | portage        |
| Chris White | chriswhite@gentoo.org | documentation  |
| Sam Smith   | samsmith@gentoo.org   | amd64          |
| Jane Doe    | NULL                  | Outsourced job |
+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)

Команда завершилась успешно, и мы мельком увидели, что могут делать пользовательские разрешения. Мы, однако же, также создали и учетную запись admin. Она была создана для того чтобы показать, что даже пользователи, которым предоставлены все права, все же могут иметь ограничения. Завершите работу MySQL и войдите под учетной записью admin.

user $mysql -u admin -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Для начала, мы попытаемся создать новую базу данных от учетной записи admin. Этот пользователь будет иметь права доступа схожие с учетной записью root в MySQL, и будет способен выполнить любые изменения выбранной базы данных gentoo. Это протестирует права доступа данного пользователя к главной базе данных MySQL. Вспомните, что ранее мы установили разрешения только для определенной базы данных.

mysql>CREATE DATABASE gentoo2;

ERROR 1044: Access denied for user: 'admin@localhost' to database 'gentoo2'

В самом деле, пользователь admin не может создавать базы данных в основной базе данных MySQL, вопреки всем своим разрешениям к базе данных gentoo. Однако, мы все еще способны использовать учетную запись admin для изменения базы данных gentoo, как показано на этом примере вставки данных.

mysql>USE gentoo;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> INSERT INTO developers VALUES('Bob Simmons', 'bobsimmons@gentoo.org', 'python');
Query OK, 1 row affected (0.08 sec)

Пользователь admin может получить доступ к базе данных по желанию. Иногда, мы должны избавиться от пользовательских разрешений. Примером может быть все что угодно, от пользователя, вызывающего проблемы, до уволенного сотрудника. Давайте рассмотрим как отключить пользовательские разрешения командой REVOKE.

Удаление Прав Доступа Пользователя Командой REVOKE

Команда REVOKE позволяет нам запретить доступ пользователю. Мы можем запретить или все права на доступ, или определенные права. В действительности, формат весьма схож с командой GRANT .

КОД Синтаксис REVOKE

REVOKE [privileges] ON database.* FROM '[user]'@'[host]';

Здесь, параметры объясняются в разделе команды GRANT . Однако же, в этом разделе, мы собираемся запретить пользователю доступ полностью. Давайте предположим, мы обнаружили, что учетная запись guest вызывает некоторые проблемы с безопасностью. Мы решаем отозвать все привилегии. Мы заходим под учетной записью root и делаем то, что необходимо.

mysql>REVOKE ALL ON gentoo.* FROM 'guest'@'localhost';

Query OK, 0 rows affected (0.00 sec)

Заметка
В данном случае, права доступа пользователя достаточно просты, поэтому их удаление из базы данных не является проблемой. Однако, в более общем случае, вы, скорее всего, использовали бы *.* вместо gentoo.* для того чтобы удалить права доступа пользователя ко всем другим базам данных.

Давайте теперь выйдем и попытаемся зайти в качестве пользователя guest.

user $mysql -u guest -h localhost -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 9 to server version: 4.0.25
 
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
 
mysql>

Хотя мы и были способны выполнить вход, наши права доступа к gentoo теперь исчезли.

mysql>USE gentoo;

ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'

И наш проблемный пользователь больше не может получить доступ к базе данных gentoo. Пожалуйста, заметьте, что пользователь все еще может выполнить вход. Это потому что он остается в основной базе данных MySQL. Давайте рассмотрим как полностью удалить учетную запись командой DELETE и взглянем на таблицу пользователей MySQL.

Удаление Учетных Записей с Использованием DELETE

Таблица пользователей MySQL является перечислением всех пользователей и информации о них. Убедитесь, что вы выполнили вход под root. Затем продолжайте и используйте основную базу данных MySQL.

DROP USER will delete the record in the user table and all privilege tables. Let’s go ahead and do that:

mysql>DROP USER 'guest'@'localhost';

Query OK, 1 row affected (0.07 sec)

Кажется, сработало на отлично. Давайте это протестируем, выйдя и попытаясь войти как пользователь guest.

user $mysql -u guest -h localhost -p

Enter password:
ERROR 1045: Access denied for user: 'guest@localhost' (Using password: YES)

Наш пользователь успешно удален!

Заключение

В то время как это руководство сфокусировано, в основном, на настройке MySQL из командной строки, доступно несколько альтернатив с графическим интерфейсом:

  • phpMyAdmin — Популярный инструмент администрирования MySQL, основанный на php.
  • mysqlnavigator — Интерфейс QT к MySQL.
  • gmyclient — MySQL клиент, основанный на GNOME.
  • knoda — клиент MySQL для KDE.

Это завершает вводное руководство к MySQL. Я надеюсь это дало вам лучшее понимание основ MySQL и настройки базы данных.


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Chris White, Shyam Mani, Xavier Neys
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article’s associated history page.

Понравилась статья? Поделить с друзьями:
  • Амоксиклав 100мл инструкция по применению суспензия для детей
  • Тримедат показания к применению инструкция цена
  • Индометацин плюс мазь инструкция по применению
  • Ревитал гель восстанавливающий инструкция по применению
  • Акип 3410 5 руководство по эксплуатации