Работа с MySQL. Принципы работы. Установка и настройка

Самая популярная система управления базами данных

Хотелось бы внести свою лепту в информационное пространство своего сайта о наиболее популярной СУБД (Система Управления Базой Данных) MySQL.
Для начала возьмем себя в руки и посмотрим, что у нас имеется для установки и настройки MySQL.
OS Linux Debian 2.6.26-2-686 и желание разобраться)

Установка MySQL

Установим mysql с помощью простой команды
apt-get install mysql-server

Во время установки спрашивает вбить пароль администратора для mysql
После установки сервис mysql запущен. Пороверим

Использование команд запуска/перезапуска mysql

Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload|status

Команда запуска MySQL

Зайдем в базу используя введенный пароль при установке

mysql -p

Как зайти в MySQL используя пароль?

Как узнать информацию о базе?

\s

Информация о базу данных в Linux

О структуре баз данных

База данных состоит из таблиц, таблицы состоят из полей и записей, поля — атрибуты записи. Каждая запись имеет свой уникальный идентификатор — ключ(primary key), он единственный и уникальный в данной таблице для данной записи. Поля в каждой записи могут иметь разные типы данных(целые, нецелые числа, строковые значения, картинки и много других модификаций для оптимального использования рабочей среды)

Как посмотреть информацию о имеющихся базах данных?

Используем запрос SHOW DATABASES;

В конце каждого запроса к БД должны стоять кавычки, иначе язык запросов будет воспринимать это как незавершенный запрос

Посмотреть БД на сервере

Как видим пока-что у нас имеется две таблицы, которые содержат служебную информацию

Создадим свою базу данных в которой будем «воротить»))

CREATE DATABASE AdminVestnik;

Как создать базу данных в MySQL?

Посмотрим наши базы

mysql_show_databases

База добавлена, идем дальше

Сделаем так, что бы все запросы по умолчанию выполнялись только  к нашей новосозданной базе AdminVestnik используя команду USE

Команда MySQL USE для запросов по умолчанию к выбранной базе

Теперь все запросы будут направлены в нашу базу данных AdminVestnik

Проверим

База данных по умолчанию

Наша база данных пуста, проверим наличие таблиц командой SHOW TABLES;

Посмотреть таблицы в базе данных

Добавим таблицу с помощью команды CREATE TABLE "имя таблицы"(поля для записи);

CREATE TABLE mysiteusers ( id INT(2) AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20), fam VARCHAR(20), workof VARCHAR(30), email VARCHAR(30)) DEFAULT CHARACTER SET UTF8;

id INT(2) AUTO_INCREMENT PRIMARY KEY — целое уникальное ключевое поле для записи в 2 символа(до 99)

name VARCHAR(20) — строковое поле размером в 20 символов

DEFAULT CHARACTER SET UTF8 — кодировка по умолчанию для таблицы

Как видим таблица добавлена, идем дальше

Посмотрим на правильность описания таблицы с помощью команды DESCRIBE

DESCRIBE mysiteusers;

Как проверить правильность описания таблицы в MYSQL?

Видим, что все в порядке, идем далее

Давайте запишем что-то в нашу таблицу с помощью команды INSERT INTO

INSERT INTO mysiteusers VALUES ('', 'Aleksandr', 'Kravchuk, 'System Administrator','admin@admin-vestnik.ru');

команда MySql INSERT

Добавим еще несколько записей для будущих запросов

INSERT INTO mysiteusers VALUES ('', 'Denis', 'Ivanov', 'PHP Programmist', 'denisprog@mail.ru');

INSERT INTO mysiteusers VALUES ('', 'Kolyan', 'Kuziv', 'Chaynik ept', 'chain@mail.ru');

Посмотрим на примере запроса и убедимся в том, что записи добавлены в таблицу

SELECT * FROM mysiteusers;

команда SELECT

Выборка по отдельному полю

SELECT fam FROM mysiteusers;  все записи одного поля fam

Выборка записей по отдельному полю

SELECT name,fam FROM mysiteusers;  все записи полей name и fam

Выборка записей двух полей из таблицы

Попробуем запрос посложнее)

SELECT name,fam FROM mysiteusers WHERE name='Denis'; запрос с условием когда имя (поле 'name') равно Denis

Предположим нам нужно изменить одну запись в таблице. Делается это чудо с помощью команды UPDATE SET

UPDATE mysiteusers SET workof='IT Director' WHERE fam='Kravchuk';

Как обновить запись в таблице данных?

Посмотрим на результат:

Обновленные записи

Как видим запись обновилась, значит все правильно работает, идем дальше

Так как Колян больше не хочет помогать мне в наполнении сайта, удалим его из нашей таблицы)

Удаляем запись с помощью команды DELETE

DELETE from mysiteusers WHERE name='Kolyan';

Удаление записи из таблицы БД

Посмотрим на наши записи и видим, что нужная нам запись была удалена

Записи после удаления

Как подсчитать количество записей в таблице?

SELECT COUNT(*) from mysiteusers;

Как подсчитать количество записей в таблице ?

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

GRANT SELECT, INSERT, UPDATE ON AdminVestnik.mysiteusers TO ‘leo’@'localhost’ IDENTIFIED BY ‘password’;

Разрешаем пользователю leo делать выборку, вставлять записи и изменять их в базе данных AdminVestnik и в таблице mysiteusers на локальной машине с паролем ‘password’

 

Разрешаем другому пользователю управлять таблицей MySQL

Зайдем в нашу базу под пользователем leo используя команду

mysql -u leo -p

Как зайти в базу mysql под другим пользователем?

Проверим

Зашли под определенным пользователем

Как видим мы зашли под пользователем leo, значит все верно, можем продолжать

Команда для просмотра прав для базы данных определенного пользователя

SHOW GRANTS FOR ‘leo’@'localhost’;

Посмотреть права пользователя для данной БД

Вроде самое простое рассмотрели, можно и грохнуть нашу базу данных AdminVestnik

Как удалить базу данных?

Как видим у пользователя leo нет прав на удаление БД, потому нужно выйти из MySql и зайти под пользователем root

Удаляем нашу базу данных

Запрос выполнен успешно, наша база данных удалена.

Пример конфигурационного файла MySQL  /etc/mysql/my.cnf

[client] port            = 3306
socket          = /var/run/mysqld/mysqld.sock
[mysqld_safe] socket          = /var/run/mysqld/mysqld.sock
nice            = 0
[mysqld] user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
language        = /usr/share/mysql/english
skip-external-locking
bind-address            = 127.0.0.1
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8
myisam-recover          = BACKUP
query_cache_limit       = 1M
query_cache_size        = 16M
#log            = /var/log/mysql/mysql.log
expire_logs_days = 10
max_binlog_size = 100M
skip-bdb
[mysqldump] quick
quote-names
max_allowed_packet = 16M
[mysql] [isamchk] key_buffer = 16M
!includedir /etc/mysql/conf.d/

 

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

mysqldump —opt -p AdminVestnik > AdminVestnik.sql

—opt – Тоже самое, что и перечисление —add-drop-table —add-locks –createoptions
—disable-keys —extended-insert —lock-tables —quick –set-charset.
Рекомендуется использовать.
-p – запрашивает строку пароля для пользователя root, можно указать
другого пользователя ключом -u

Простыми словами говоря создается скрипт SQL, который делает все то, что было добавлено в базу, после его запуска данные закачаются в нужную базу

Восстановить базу данных

mysql -p AdminVestnik < AdminVestnik.sql