MySQL (Русский)
MySQL - это широко применяемая свободная многопоточная многопользовательская система управления реляционными базами данных. MySQL использует один из диалектов языка SQL для управления базами данных. Более подробную информацию об особенностях MySQL можно посмотреть на официальном сайте.
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.
Режим автодополнения
По умолчанию механизм автодополнения команд и имен в клиенте 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