MySQL (Русский)

From ArchWiki

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

Установка

Установите пакет mysql из официальных репозиториев.

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

# mysql_secure_installation

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

Настройка

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

mysqladmin -u root password newpass

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

$ mysql -p -u root

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

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

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

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

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

Обновление MySQL

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

# mysql_upgrade -u root -p

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

Не запускается демон 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.

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