Наши партнеры

UnixForum





Библиотека сайта 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