MySQL (Русский)

From ArchWiki
Jump to: navigation, search

MySQL - это широко применяемая свободная многопоточная многопользовательская система управления реляционными базами данных. MySQL использует один из диалектов языка SQL для управления базами данных. Более подробную информацию об особенностях MySQL можно посмотреть на официальном сайте.

Note: На сегодняшний день в Archlinux к использованию по умолчанию предлагается MariaDB - официальный форк сервера MySQL. Настоятельно рекомендуется всем пользователям обновиться до MariaDB. Oracle MySQL был перемещен из официальных репозиториев Archlinux в AUR. Для получения более подробной информации прочтите объявление.

Contents

Установка

MariaDB - так именуется форк популярного сервера баз данных MySQL, выбранный сообществом Archlinux. Установите пакеты mariadb, libmariadbclient, mariadb-clients из официальных репозиториев. В качестве альтернативы можете установить, например, percona-server или mysql от Oracle.

Запустите демона mysqld, выполните настроечный скрипт и перезапустите демона.

# systemctl start mysqld
# mysql_secure_installation
# systemctl restart mysqld

Если вы хотите, чтобы MySQL стартовал при загрузке операционной системы, посмотрите настройку запуска демонов при загрузке.

Если есть необходимость во фронтендах к MariaDB, то можете использовать mysql-gui-tools или mysql-workbench.

Апгрейд с MySQL до MariaDB

Для тех кто желает обновиться до MariaDB необходимо установить mariadb, libmariadbclient, mariadb-clients и выполнить mysql_upgrade. Последовательность команд такова:

# systemctl stop mysqld
# pacman -S mariadb libmariadbclient mariadb-clients
# systemctl start mysqld
# mysql_upgrade -p

Обновление MySQL

После обновления MySQL можно запустить полезную утилиту mysql_upgrade для автоматической проверки и обновления MySQL-таблиц на предмет совместимости структур данных с текущей версией MySQL.

# mysql_upgrade -u root -p

Настройка

После установки и запуска MySQL необходимо настроить учетную запись root для администрирования MySQL. Задайте пароль для пользователя root. Это можно осуществить вручную или автоматически на стадии выполнения предыдущего скрипта. Ручная установка пароля для root возможна при помощи утилиты mysqladmin

mysqladmin -u root password newpass

MySQL построен по клиент-серверной архитектуре. Это значит, что систему управления базами данных MySQL можно трактовать как сервер, обменивающийся сообщениями с MySQL-клиентами. Консольный клиент, запускаемый в терминале при помощи команды mysql, позволяет подключиться к серверу баз данных MySQL. Осуществим такое подключение от имени пользователя root:

$ mysql -p -u root

Включение удаленного доступа

Для настройки возможности приема удаленных соединений закомментируйте в файле /etc/mysql/my.cnf строку:

skip-networking

Если вы хотите, чтобы сервер MySQL работал только локально, игнорируя удаленные соединения, необходимо раскомментировать параметр skip-networking.

Note: По умолчанию сервер MySQL принимает удаленные соединения через TCP-порт с номером 3306. При желании его можно изменить.

Режим автодополнения

По умолчанию механизм автодополнения команд и имен в клиенте mysql отключен. Для включения автоматического дополнения отредактируйте общий конфигурационный файл /etc/mysql/my.cnf, заменив параметр no-auto-rehash в секции [mysql] на параметр auto-rehash. Автодополнение вступит в силу после очередного запуска клиента mysql.

Бэкап

Легкий бэкап баз данных можно осуществить с помощью утилиты mysqldump. Нижеследующий скрипт помещает дамп всех баз данных в файл db_backup.gz, который будет расположен в той же папке, что и сам скрипт, и удаляет все бинарные логи старше одной недели:

#!/bin/bash

THISDIR=`dirname $(readlink -f "$0")`

mysqldump --single-transaction --flush-logs --master-data=2 --all-databases -u root -p | gzip > $THISDIR/db_backup.gz
mysql -u root -p -e 'purge master logs before date_sub(now(), interval 7 day);'

Смотрите также страницу официального руководства по работе с mysqldump.

Поиск и устранение неисправностей

Не запускается демон MySQL

Если вы увидите что-то наподобие:

 :: Starting MySQL  [FAIL]

а в логах MySQL отсутствуют записи, то можно проверить содержимое каталогов /var/lib/mysql и /var/lib/mysql/mysql на предмет прав доступа. Если владельцами файлов в этих директориях является не пользователь mysql из одноименной группы, то проделайте следующее:

 # chown mysql:mysql /var/lib/mysql -R

Ежели у вас остаются проблемы, связанные с доступом, несмотря на вышеозначенную рекомендацию, попробуйте скопировать my.cnf в /etc/. Для этого выполните команду:

 # cp /etc/mysql/my.cnf /etc/my.cnf

Теперь попробуйте запустить mysqld.

Ежели вы получите в файле /var/lib/mysql/hostname.err такие строки:

 [ERROR] Can't start server : Bind on unix socket: Permission denied
 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?
 [ERROR] Aborting

Виной этому могут быть некорректные права доступа на /var/run/mysqld. Выполните:

 # chown mysql:mysql /var/run/mysqld -R

Если вы запустили mysqld, но получили следующее сообщение об ошибке:

 Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

Выполните следующую команду из каталога /usr для создания таблиц по умолчанию:

 # cd /usr
 # mysql_install_db --user=mysql --ldata=/var/lib/mysql/

Не могу запустить mysql_upgrade из-за невозможности запуска MySQL

Попытайтесь запустить MySQL в безопасном режиме:

# mysqld_safe --datadir=/var/lib/mysql/

После этого выполните:

# mysql_upgrade -u root -p

Сброс пароля для root

Остановите демона mysqld и выполните:

# mysqld_safe --skip-grant-tables &

Подсоединитесь к серверу MySQL:

# mysql -u root mysql

Измените пароль для пользователя root:

 mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
 mysql> FLUSH PRIVILEGES;
 mysql> exit

Запустите mysqld.

Проверка и восстановление всех таблиц

Можно выполнить автоматическую проверку и восстановление всех таблиц во всех базах данных. Более подробно смотрите здесь.

# mysqlcheck -A --auto-repair -u root -p

Смотрите также

  • LAMP - статья на ArchWiki, описывающая установку и базовую настройку LAMP-сервера (Linux, Apache, MySQL, PHP).
  • http://mariadb.org/ - официальный сайт проекта MariaDB
  • http://www.mysql.com/ - официальный сайт проекта MySQL компании Oracle
  • http://www.percona.com/ - официальный сайт проекта Percona