Содержание
Версии MySQL в Ubuntu
| Ubuntu | MySQL | 
|---|---|
| 12.04 LTS (Precise) | 5.5 | 
| 14.04 LTS (Trusty) | 5.5, 5.6 | 
| 15.10 (Wily) | 5.6 | 
| 16.04 LTS (Xenial) | 5.7 | 
Установка
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/
Администрирование
Установка root пароля
sudo mysql_secure_installation
Восстановление забытого пароля для root'a
Схожая проблема возникает если не задать пароль при установке MySQL, в этом случае mysql использует плагин unix-socket.
Остановите
mysqld:sudo service mysql stopЗапустите
mysqldс параметрами--skip-grant-tables --user=root:sudo mysqld --skip-grant-tables --user=root
Если команда не сработает, добавьте строку «
skip-grant-tables» в секцию «[mysqld]» файла/etc/mysql/mysql.conf.d/mysqld.cnf. Затем выполнитеsudo service mysql restart. После выполнения операций удалите эту строку.Подключитесь к MySQL-серверу командой:
mysql -u rootОбновите пароль для root'a:
UPDATE mysql.user SET authentication_string=PASSWORD('<новый пароль>'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES;
Для MySQL версий < 5.7:
UPDATE mysql.user SET Password=PASSWORD('<новый пароль>') WHERE User='root'; FLUSH PRIVILEGES;
Перезапустите демона:
sudo service mysql restart
Теперь можете проверить вход под root с новым паролем:
mysql -u root -p
Резервное копирование
Для создания резервных копий существует специальная утилита 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'  | 
	
Отключение и включение автозагрузки сервиса
Начиная с версии Ubuntu 15.04 отключение и включение сервисов возможно одной командой, без редактирования конфигов. В примерах команд ниже слово «SERVICE» следует заменить на «mysql».
Узнать стоит ли сервис в автозагрузке:
$ systemctl is-enabled SERVICE
Убрать сервис из автозагрузки в Ubuntu-16.04:
$ sudo systemctl disable SERVICE
Добавить сервис в автозагрузку в Ubuntu-16.04:
$ sudo systemctl enable SERVICE
MySQL Workbench
MySQL Workbench – инструмент для визуального проектирования баз данных. MySQL Workbench существует в двух вариантах:
- Community Edition – бесплатная версия, распространяемая под лицензией GPL3
 - Standard Edition – платная версия, включающая в себя некоторые дополнительные возможности.
 
MySQL Workbench можно скачать с официального сайта http://www.mysql.com/downloads/workbench/.
ppa:olivier-berten/misc .