- Исходные данные
# uname -sr FreeBSD 10.1-RELEASE-p9 # pkg info | grep mysql mysql56-client-5.6.24 Multithreaded SQL database (client) mysql56-server-5.6.24 Multithreaded SQL database (server)
- Подготовка
Проверяем наличие или добавляем строки в /etc/make.conf:PORTSDIR?=/usr/ports .if ${.CURDIR} == ${PORTSDIR}/databases/mysql56-* WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes .endif
- Установка
# cd /usr/ports/databases/mysql56-server # make install clean
- Обновление
Если у вас уже стоял MySQL вы ставите новую версию взамен предыдущей, то необходимо остановить MySQL сервер и выполнить mysql_upgrade:# /usr/local/etc/rc.d/mysql-server stop # mysqld --skip-grant-tables & # mysql_upgrade
- Настройка
Проверяем наличие или добавляем строку в /etc/rc.conf:mysql_enable="YES"
Создаем конфигурационный файл /var/db/mysql/my.cnf с настройками# cd /var/db/mysql # touch my.cnf # chown mysql:mysql my.cnf # chmod 0660 my.cnf
Записываем в /var/db/mysql/my.cnf:[mysqld] skip-networking character-set-server=utf8 init-connect="SET NAMES utf8" query_cache_size=64M long_query_time=5 slow_query_log=1 slow_query_log_file=/var/db/mysql/slow.log [client] character_set_client=utf8
Описание:- skip-networking - отключаем сетевую подсистему, доступ к серверу в этом случае возможен только через сокет
- character-set-server=utf8, init-connect="SET NAMES utf8" - задаем использование сервером кодировки utf8
- character_set_client=utf8 - задаем использование клиентом кодировки utf8
- long_query_time=5
slow_query_log=1
slow_query_log_file=/var/db/mysql/slow.log
эти директивы задают слежение за медленными запросами. Медленным в данном случае считаются запросы, выполняющиеся больше 5 секунд.
Тем, кто хочет остаться по умолчанию на MYISAM, необходимо в секцию [mysqld] добавить строки:default-storage-engine=MYISAM
Создаем начальные базы данных:# cd /usr/local # ./bin/mysql_install_db # chown -R mysql:mysql /var/db/mysql
Запускаем MySQL сервер# /usr/local/etc/rc.d/mysql-server start
Проверяем что сервер запустился и работает# ps ax | grep mysql 2132 ?? Is 0:00.01 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --data 2333 ?? I 0:00.08 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datad
Выполняем скрипт который удаляет тестовую базу, гостевой аккаунт и делает ещё некоторую оптимизацию для повышения безопасности (данный скрипт можно выполнить в любое время позже):# mysql_secure_installation
Или просто задаем пароль root для mysql-сервера# /usr/local/bin/mysqladmin -uroot password "ПАРОЛЬ"
Пробуем подключиться:# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.6.24 Source distribution Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
- Логин и пароль в командной строке
Начиная с версии 5.6, MySQL при явном указании в командной строке логина и пароля через -uUSER -pPASSWORD, появляется вот такое предупреждение:Warning: Using a password on the command line interface can be insecure.
Этой строчкой нас, с целью повышения секьюрности, для аутентификации ненавязчиво просят использовать данные из конфигураций, которые может создавать mysql_config_editor.
Смотрим список конфигураций:# mysql_config_editor print --all
Создаем конфигурацию:# mysql_config_editor set --login-path=backup --host=localhost --user=localuser --password
--login-path: название конфигурации
--host: сервер, с которого можно логиниться пользователю
--user: имя пользователя
--password: программа попросит ввести пароль
Удаляем всю конфигурацию:# mysql_config_editor remove --login-path=backup
- Работа с MySQL
Повседневные и не очень операции, которые рано или поздно захочется автоматизировать:
- Создаем базу данных newdb:
файл createdb.sqlcreate database newdb; grant all privileges on newdb.* to 'UserForNewDb'@'localhost' identified by 'PasswordForNewDb';
- UserForNewDb : имя пользователя в MySQL (будет создан автоматически)
- PasswordForNewDb : пароль
файл createdb.sh#!/bin/sh DBNAME='newdb' mysql --login-path=backup < createdb.sql mysql --login-path=backup $DBNAME < $DBNAME.sql
- Резервное копирование (в том числе и через cron)
копирование всей базы в один файл:#!/bin/sh FOLDER='/home/backup' DBNAME='newdb' cd $FOLDER /usr/local/bin/mysqldump --login-path=backup $DBNAME > $DBNAME.sql if [ -s $DBNAME.sql.zip ] then rm $DBNAME.sql.zip fi /usr/local/bin/zip $DBNAME.sql.zip $DBNAME.sql rm $DBNAME.sql
копирование каждой таблицы в отдельный файл:#!/bin/sh FOLDER='/home/backup' DBNAME='newdb' cd $FOLDER mkdir -p $FOLDER/$DBNAME for TABLE in `/usr/local/bin/mysql --login-path=backup --silent --skip-column-names $DBNAME -e "show tables"` do /usr/local/bin/mysqldump --login-path=backup --skip-opt $DBNAME $TABLE > $DBNAME/$TABLE.sql done /usr/local/bin/zip -r $DBNAME.zip $DBNAME rm -r $DBNAME
- чиним таблицы (для MyISAM):
#!/bin/sh DBNAME='newdb' mysql --login-path=backup --silent --skip-column-names $DBNAME -e "show tables" | awk '{print "repair table `"$1"`;"}' | mysql --login-path=backup $DBNAME
- Создаем базу данных newdb:
Статья опубликована: 2015-05-05 15:51:16
Последние правки: 2017-09-02 23:25:04
Без сервера баз данных нынче обойтись нельзя. Ставим и настраиваем MySQL 5.6.