Здравствуйте, сегодня речь пойдет о Ubuntu MySQL — свободная СУБД для малых и средних приложений. Не пугайтесь таких названий это все очень просто. Вам надо просто попробовать и у вас все получится. И так начнем с установки.
Рекомендую к прочтению:
Как установить и настроить MySQL на Ubuntu 20.04 LTS
Установка Ubuntu MySQL
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
Конфигурация сервера 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.
Администрирование MySQL
Восстановление забытого пароля для roota Схожая проблема возникает если не задать пароль при установке 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
Обновите пароль для roota:
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 Пользователь, от лица которого будет производится дамп баз данных. -uroot -p Пароль пользователя. Пароль необязательно указывать, достаточно упомянуть этот параметр для того, чтобы утилита знала что подключение требует пароля. -ppassword -p -h Хост, на котором расположена база данных. -h127.0.0.1 -A Создать бекап всех баз данных. -A -B Базы данных, которые нужно забэкапить. -B db1 db2 db3 tables Таблицы, которые нужно забэкапить. Перекрывает действие ключа -B tables db1.table1 db1.table2 db2.table3 -d Создать бекап структуры таблиц. Содержимое таблиц скопировано не будет. -d skip-extended-insert Не использовать многострочные INSERT-записи при создании дампа. skip-extended-insert
-wwhere_clause Создавать дамп только тех строк, которые попадают под условие. -wId > 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