Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:mysql [2013/01/21 16:32] |
wiki:mysql [2020/12/29 02:15] (текущий) [Администрирование] |
||
---|---|---|---|
Строка 2: | Строка 2: | ||
**MySQL** — свободная СУБД для малых и средних приложений. Входит в состав [[LAMP]] и [[XAMPP]]. | **MySQL** — свободная СУБД для малых и средних приложений. Входит в состав [[LAMP]] и [[XAMPP]]. | ||
+ | |||
+ | ===== Версии 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 | | ||
+ | |||
===== Установка ===== | ===== Установка ===== | ||
Строка 26: | Строка 35: | ||
==== Кодировки ==== | ==== Кодировки ==== | ||
+ | <note important> | ||
+ | В данном разделе используется распространённое решение проблемы с кодировкой. Стоит помнить, что данное решение не является правильным, хоть и помогает временно решить проблему. Для правильного использования кодировки создавайте или храните таблицы в любой удобной для хранения в СУБД кодировке, а вот клиент должен подключаться к СУБД с указанием той кодировки, с которй выводится текст или производится обработка данных. | ||
+ | </note> | ||
+ | |||
По-умолчанию в Ubuntu MySQL устанавливается с кодировкой ''latin1''. В этом можно убедиться посмотрев вывод запроса: | По-умолчанию в Ubuntu MySQL устанавливается с кодировкой ''latin1''. В этом можно убедиться посмотрев вывод запроса: | ||
<code mysql>SHOW VARIABLES LIKE 'char%';</code> | <code mysql>SHOW VARIABLES LIKE 'char%';</code> | ||
Строка 56: | Строка 69: | ||
В секцию ''[mysqld]'' добавьте следующие строки: | В секцию ''[mysqld]'' добавьте следующие строки: | ||
<code ini>skip-character-set-client-handshake | <code ini>skip-character-set-client-handshake | ||
- | default-character-set=utf8 | + | character-set-server = utf8 |
init-connect='SET NAMES utf8' | init-connect='SET NAMES utf8' | ||
- | default-collation=utf8_general_ci</code> | + | collation-server=utf8_general_ci</code> |
Так же желательно установить кодировку для клиента и [[#Резервное копирование|mysqldump]]. Для этого в секциях ''[client]'' и ''[mysqldump]'' необходимо добавить строчку: | Так же желательно установить кодировку для клиента и [[#Резервное копирование|mysqldump]]. Для этого в секциях ''[client]'' и ''[mysqldump]'' необходимо добавить строчку: | ||
<file ini>default-character-set=utf8</file> | <file ini>default-character-set=utf8</file> | ||
Строка 76: | Строка 89: | ||
<note important>Если на момент изменения настроек кодировки в базе уже присутствовали записи содержащие кириллицу, то они будут иметь неверную кодировку. Перед изменением кодировки убедитесь что в базе нет таблиц и данных, либо сделайте дамп всех данных из базы до внесения изменений настроек и восстановите после внесения изменений и перезагрузки MySQL.</note> | <note important>Если на момент изменения настроек кодировки в базе уже присутствовали записи содержащие кириллицу, то они будут иметь неверную кодировку. Перед изменением кодировки убедитесь что в базе нет таблиц и данных, либо сделайте дамп всех данных из базы до внесения изменений настроек и восстановите после внесения изменений и перезагрузки MySQL.</note> | ||
- | |||
===== Администрирование ===== | ===== Администрирование ===== | ||
+ | ==== Установка root пароля ==== | ||
+ | <code>sudo mysql_secure_installation</code> | ||
==== Восстановление забытого пароля для root'a ==== | ==== Восстановление забытого пароля для root'a ==== | ||
- | + | Схожая проблема возникает если не задать пароль при установке MySQL, в этом случае mysql [[https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/index.html#apt-repo-fresh-install|использует]] плагин unix-socket. | |
- | -- Остановите ''mysqld'' | + | -- Остановите ''mysqld'': |
.. <code bash>sudo service mysql stop</code> | .. <code bash>sudo service mysql stop</code> | ||
-- Запустите ''mysqld'' с параметрами ''%%--skip-grant-tables --user=root%%'': | -- Запустите ''mysqld'' с параметрами ''%%--skip-grant-tables --user=root%%'': | ||
- | .. <code bash>sudo mysqld --skip-grant-tables --user=root</code> | + | .. <code bash>sudo mysqld --skip-grant-tables --user=root</code> Если команда не сработает, добавьте строку «''skip-grant-tables''» в секцию «''[mysqld]''» файла ''/etc/mysql/mysql.conf.d/mysqld.cnf''. Затем выполните ''sudo service mysql restart''. После выполнения операций удалите эту строку. |
-- Подключитесь к MySQL-серверу командой: | -- Подключитесь к MySQL-серверу командой: | ||
.. <code bash>mysql -u root</code> | .. <code bash>mysql -u root</code> | ||
-- Обновите пароль для root'a: | -- Обновите пароль для root'a: | ||
+ | .. <code mysql>UPDATE mysql.user SET authentication_string=PASSWORD('<новый пароль>'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost'; | ||
+ | FLUSH PRIVILEGES;</code> Для MySQL версий < 5.7: | ||
.. <code mysql>UPDATE mysql.user SET Password=PASSWORD('<новый пароль>') WHERE User='root'; | .. <code mysql>UPDATE mysql.user SET Password=PASSWORD('<новый пароль>') WHERE User='root'; | ||
FLUSH PRIVILEGES;</code> | FLUSH PRIVILEGES;</code> | ||
- | Теперь можете войти под root с новым паролем. | + | -- Перезапустите демона: <code bash>sudo service mysql restart</code> |
+ | Теперь можете проверить вход под root с новым паролем: <code bash>mysql -u root -p</code> | ||
==== Резервное копирование ==== | ==== Резервное копирование ==== | ||
Для создания резервных копий существует специальная утилита ''mysqldump''. Основные ее параметры приведены в таблице: | Для создания резервных копий существует специальная утилита ''mysqldump''. Основные ее параметры приведены в таблице: | ||
Строка 104: | Строка 119: | ||
| ''%%--%%skip-extended-insert'' | Не использовать многострочные INSERT-записи при создании дампа. | ''%%--%%skip-extended-insert'' | | | ''%%--%%skip-extended-insert'' | Не использовать многострочные INSERT-записи при создании дампа. | ''%%--%%skip-extended-insert'' | | ||
| ''-w'where_clause''' | Создавать дамп только тех строк, которые попадают под условие. | ''-w'Id > 10 AND Id < 100''' | | | ''-w'where_clause''' | Создавать дамп только тех строк, которые попадают под условие. | ''-w'Id > 10 AND Id < 100''' | | ||
+ | |||
+ | ==== Отключение и включение автозагрузки сервиса ==== | ||
+ | Начиная с версии Ubuntu 15.04 отключение и включение сервисов возможно одной командой, без редактирования конфигов. В примерах команд ниже слово "SERVICE" следует заменить на "mysql". | ||
+ | |||
+ | Узнать стоит ли сервис в автозагрузке: | ||
+ | <code>$ systemctl is-enabled SERVICE</code> | ||
+ | Убрать сервис из автозагрузки в Ubuntu-16.04: | ||
+ | <code>$ sudo systemctl disable SERVICE</code> | ||
+ | Добавить сервис в автозагрузку в Ubuntu-16.04: | ||
+ | <code>$ sudo systemctl enable SERVICE</code> | ||
+ | |||
===== MySQL Workbench ===== | ===== MySQL Workbench ===== | ||
Строка 116: | Строка 142: | ||
* [[http://forum.ubuntu.ru/index.php?topic=15210.0|Обсуждение на форуме]] | * [[http://forum.ubuntu.ru/index.php?topic=15210.0|Обсуждение на форуме]] | ||
- | {{tag>Администрирование mysql mysqldump workbench}} | + | {{tag>Администрирование mysql mysqldump workbench lamp}} |