MySQL — свободная СУБД для малых и средних приложений. Входит в состав LAMP и XAMPP.
Установка
MySQL есть в репозиториях Ubuntu. Он разбит на несколько пакетов.
Для того чтобы установить MySQL сервер выполните команду:
sudo apt-get install mysql-server
При установке конфигурационный скрипт запросит пароль для администратора (root) базы данных.
Для того чтобы установить консольный клиент MySQL выполните команду:
sudo apt-get install mysql-client
Для того чтобы установить модуль для работы с MySQL в PHP выполните команду:
sudo apt-get install php5-mysql
Настройка
Конфигурация сервера MySQL содержится в файле /etc/mysql/my.cnf.
Доступ к серверу из сети
По умолчанию сервер MySQL принимает соединения только с локальной машины. Для того, чтобы разрешить подключаться к нему с других машин замените строку
bind-address = 127.0.0.1
на
#разрешить подключатся с любого хоста
bind-address = 0.0.0.0
#разрешить подключатся только с указанного IP
bind-address = 192.168.1.23
Кодировки
В данном разделе используется распространённое решение проблемы с кодировкой. Стоит помнить, что данное решение не является правильным, хоть и помогает временно решить проблему. Для правильного использования кодировки создавайте или храните таблицы в любой удобной для хранения в СУБД кодировке, а вот клиент должен подключаться к СУБД с указанием той кодировки, с которй выводится текст или производится обработка данных.
По-умолчанию в Ubuntu MySQL устанавливается с кодировкой latin1. В этом можно убедиться посмотрев вывод запроса:
SHOW VARIABLES LIKE 'char%';
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
В связи с этим, даже используя при работе с сервером команду
SET names utf8;
и используя при создании таблиц
...DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
невозможно добиться полной поддержки кодировки utf8:
character_set_client utf8
character_set_connection utf8
...
character_set_server latin1
...
character_sets_dir /usr/share/mysql/charsets/
Кодировка по-умолчанию все равно останется latin1, что неудобно и может привести к ошибкам.
Чтобы сервер сразу загружался с нужной кодировкой, необходимо отредактировать файл /etc/mysql/my.cnf:
sudo nano -w /etc/mysql/my.cnf
В секцию [mysqld] добавьте следующие строки:
skip-character-set-client-handshake
character-set-server = utf8
init-connect='SET NAMES utf8'
collation-server=utf8_general_ci
Так же желательно установить кодировку для клиента и mysqldump. Для этого в секциях [client] и [mysqldump] необходимо добавить строчку:
default-character-set=utf8
Перезагрузите сервер MySQL:
sudo service mysql restart
После этого список переменных будет выглядеть так:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Если на момент изменения настроек кодировки в базе уже присутствовали записи содержащие кириллицу, то они будут иметь неверную кодировку. Перед изменением кодировки убедитесь что в базе нет таблиц и данных, либо сделайте дамп всех данных из базы до внесения изменений настроек и восстановите после внесения изменений и перезагрузки MySQL.
Администрирование
Восстановление забытого пароля для root’a
Остановите mysqld
sudo service mysql stop
Запустите mysqld с параметрами –skip-grant-tables –user=root:
sudo mysqld --skip-grant-tables --user=root
Подключитесь к MySQL-серверу командой:
mysql -u root
Обновите пароль для root’a:
UPDATE mysql.user SET Password=PASSWORD('<новый пароль>') WHERE User='root';
FLUSH PRIVILEGES;
Теперь можете войти под root с новым паролем.
Резервное копирование
Для создания резервных копий существует специальная утилита mysqldump. Основные ее параметры приведены в таблице:
Параметр | Описание | Пример |
---|---|---|
-u<user> |
Пользователь, от лица которого будет производится дамп баз данных. | -uroot |
-p<password> |
Пароль пользователя. Пароль необязательно указывать, достаточно упомянуть этот параметр для того, чтобы утилита знала что подключение требует пароля. | -ppassword -p |
-h<host> |
Хост, на котором расположена база данных. | -h127.0.0.1 |
-A |
Создать бекап всех баз данных. | -A |
-B <databases> |
Базы данных, которые нужно забэкапить. | -B db1 db2 db3 |
--tables <tables> |
Таблицы, которые нужно забэкапить. Перекрывает действие ключа -B | --tables db1.table1 db1.table2 db2.table3 |
-d |
Создать бекап структуры таблиц. Содержимое таблиц скопировано не будет. | -d |
--skip-extended-insert |
Не использовать многострочные INSERT-записи при создании дампа. | --skip-extended-insert |
-w'where_clause ‘ |
Создавать дамп только тех строк, которые попадают под условие. | -w'Id > 10 AND Id < 100 ‘ |
MySQL Workbench
MySQL Workbench – инструмент для визуального проектирования баз данных. MySQL Workbench существует в двух вариантах:
Community Edition – бесплатная версия, распространяемая под лицензией GPL3
Standard Edition – платная версия, включающая в себя некоторые дополнительные возможности.
MySQL Workbench можно скачать с официального сайта http://www.mysql.com/downloads/workbench/.