Библиотека сайта rus-linux.net
Серверы Linux. Часть II. База данных MySQL
Оригинал: Introduction to sql using mysqlАвтор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 11 июля 2015 г.
Глава 3. Вводная информация о структурированном языке запросов SQL и сервере базы данных MySQL
MySQL
является сервером базы данных, который использует структурированный язык запросов (Structured Query Language
, SQL
). На начальном этапе разработка MySQL осуществлялась силами сотрудников шведской компании MySQL AB
. Первая стабильная версия продукта была выпущена в 1995 году. В 2008 году компания MySQL AB была приобретена компанией Sun Microsystems (на сегодняшний день являющейся собственностью компании Oracle).
Сервер базы данных MySQL
снискал наибольшую популярность в области разработки веб-сайтов, где он чаще всего используется в комбинации с интерпретатором сценариев PHP
и веб-сервером Apache
(в аббревиатуре LAMP
MySQL
обозначается с помощью буквы M
), но, несмотря на это, MySQL
также используется и в организациях, работающих с базами данных большого объема, таких, как Facebook, Flickr, Google, Nokia, Wikipedia и Youtube.
Прочитав данную главу, вы научитесь работать со структурированным языком запросов (SQL
) в процессе взаимодействия с локальным сервером базы данных MySQL
, заключающегося в создании и использовании небольших баз данных, таблиц, запросов и простых триггеров.
3.1. Установка компонентов MySQL
В дистрибутиве Debian/Ubuntu вы можете использовать команду aptitude install mysql-server
для установки сервера базы данных
и клиентской утилиты MySQL
.
root@ubu1204~# aptitude install mysql-server НОВЫЕ пакеты, которые будут установлены: libdbd-mysql-perl{a} libdbi-perl{a} libhtml-template-perl{a} libnet-daemon-perl{a} libplrpc-perl{a} mysql-client-5.5{a} mysql-client-core-5.5{a} mysql-server mysql-server-5.5{a} mysql-server-core-5.5{a} обновлено 0, установлено 10 новых пакетов, для удаления отмечено 0 пакетов, и 1 пакетов не обновлено. Необходимо скачать 25.5 MБ архивов. После данной операции, объём занятого дискового пространства возрастёт на 88.4 MБ. Хотите продолжить [Д/н]?
В процессе установки вам будет предоставлена возможность ввода пароля для пользователя root базы данных MySQL
, который необходимо запомнить (в процессе обучения вы можете использовать пароль hunter2
, как делаю я).
Для проверки версии установленного пакета программного обеспечения в дистрибутиве Debian/Ubuntu следует использовать команду dpkg -i
. В примере ниже показан вывод данной команды в случае установки пакета программного обеспечения с компонентами MySQL версии 5.5.
root@ubu1204~# dpkg -l mysql-server | tail -1 | tr -s ' ' | cut -c-72 ii mysql-server 5.5.24-0ubuntu0.12.04.1 MySQL database server (metapacka
Для получения аналогичной информации о версии пакета программного обеспечения с компонентами MySQL в дистрибутиве Red Hat/Fedora/CentOS следует использовать команду rpm -q
.
[paul@RHEL52 ~]$ rpm -q mysql-server mysql-server-5.0.45-7.el5
Для работы с триггерами
вам понадобится версия пакета программного обеспечения с компонентами MySQL не ниже 5.0.
3.2. Получение доступа к серверу MySQL
3.2.1. Учетные записи пользователей Linux-системы
При установке компонентов MySQL
осуществляется автоматическое создание учетной записи пользователя, информация о которой записывается в файл /etc/passwd
, и группы пользователей, информация о которой записывается в файл /etc/group
.
kevin@ubu1204:~$ tail -1 /etc/passwd mysql:x:120:131:MySQL Server,,,:/nonexistent:/bin/false kevin@ubu1204:~$ tail -1 /etc/group mysql:x:131:
После запуска демон сервера базы данных MySQL с именем mysqld
использует права доступа, установленные для упомянутых учетной записи пользователя и группы пользователей.
root@ubu1204~# ps -eo uid,user,gid,group,comm | grep mysqld 120 mysql 131 mysql mysqld
3.2.2. Клиентское приложение mysql
Теперь вы можете начать работу с сервером базы данных MySQL из командной строки, просто введя команду mysql -u root -p
, после чего вас попросят ввести пароль (от учетной записи пользователя root сервера базы данных MySQL
). В примере ниже показана команда exit
, введенная пользователем для выхода из консоли MySQL.
root@ubu1204~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.5.24-0ubuntu0.12.04.1 (Ubuntu) Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye
Кроме того, вы можете передавать пароль в формате открытого текста в командной строке, но такой подход не является безопасным. В этом случае любой человек, имеющий доступ к файлу с историей команд вашей командной оболочки bash, будет иметь возможность получения пароля для учетной записи пользователя root сервера базы данных MySQL.
root@ubu1204~# mysql -u root -phunter2 Welcome to the MySQL monitor. Commands end with ; or \g. ...
3.2.3. Файл конфигурации ~/.my.cnf
Вы можете сохранить параметры доступа к серверу базы данных MySQL в скрытом файле с именем .my.cnf
в вашей домашней директории. В примере ниже мы разместили имя учетной записи пользователя root сервера базы данных MySQL и пароль для этой учетной записи в файле .my.cnf.
kevin@ubu1204:~$ pwd /home/kevin kevin@ubu1204:~$ cat .my.cnf [client] user=root password=hunter2 kevin@ubu1204:~$
Благодаря наличию данного файла вы можете использовать учетную запись пользователя root сервера базы данных MySQL
сразу же после ввода команды mysql
.
kevin@ubu1204:~$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 56 Server version: 5.5.24-0ubuntu0.12.04.1 (Ubuntu)
3.2.4. Клиентское приложение mysql с интерфейсом командной строки
Вы можете использовать утилиту mysql
для изучения структуры баз данных, а также для исполнения SQL-запросов, предназначенных для осуществления манипуляций с данными из этих баз. Методика работы с данной утилитой проиллюстрирована с помощью приведенных ниже примеров.
В данном случае мы исполняем команду show databases
. Каждая команда должна завершаться символом разделителя. Стандартным символом разделителя является символ ;
(точка с запятой).
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)
Мы будем использовать данную команду в следующих разделах.
3.3. Базы данных MySQL
3.3.1. Вывод списка всех существующих баз данных
Вы можете использовать утилиту mysql
как для ознакомления с списком баз данных, так и для исполнения SQL-запросов с целью осуществления манипуляций с данными из этих баз. В приведенных ниже примерах показано, как следует работать с данной утилитой. В первую очередь мы авторизуемся на уровне нашего сервера базы данных MySQL и выполняем команду show databases
для ознакомления со списком баз данных, обслуживаемых в данный момент сервером MySQL.
kevin@ubu1204:~$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 57 Server version: 5.5.24-0ubuntu0.12.04.1 (Ubuntu) Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)
3.3.2. Создание базы данных
Вы можете создать новую базу данных с помощью команды create database
.
mysql> create database famouspeople; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | famouspeople | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec)
3.3.3. Использование базы данных
После создания базы данных мы должны сообщить серверу MySQL
о том, что хотим работать с этой базой данных с помощью команды use $имя_базы_данных
. В примере ниже показана методика выбора базы данных с именем famouspeople
в качестве текущей (рабочей) базы данных.
mysql> use famouspeople; Database changed mysql>
3.3.4. Управление доступом к базе данных
Для предоставления кому-либо прав доступа к базе данных на уровне сервера MySQL следует использовать команду grant
.
mysql> grant all on famouspeople.* to kevin@localhost IDENTIFIED BY "hunter2"; Query OK, 0 rows affected (0.00 sec)
3.3.5. Удаление базы данных
Если база данных больше не нужна, вы можете удалить ее навсегда с помощью команды drop database
.
mysql> drop database demodb; Query OK, 1 row affected (0.09 sec)
3.3.6. Сохранение резервной копии базы данных и восстановление базы данных из нее
Вы можете создать резервную копию базы данных или переместить базу данных на другой компьютер с помощью утилит mysql
и mysqldump
. В примере ниже мы создаем резервную копию базы данных famouspeople
на компьютере с именем laika
.
mysqldump -u root famouspeople > famouspeople.backup.20120708.sql
А это пример команды для восстановления базы данных из резервной копии.
mysql -u root famouspeople < famouspeople.backup.20120708.sql
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 2. Знакомство с прокси-сервером Squid | 3.4. Таблицы базы данных MySQL |