Настройка MySQL

MySQL (произносится «Май Эс Кью Эль») — свободная система управления базами данных (СУБД). MySQL характеризуется большой скоростью, устойчивостью и лёгкостью в использовании, является решением для малых и средних приложений. Наряду с Oracle Database это одна из самых быстрых СУБД на сегодняшний день. Распространение СУБД MySQL на основе GPL и высокая скорость обработки запросов привело к тому, что эта база данных стала стандартом де-факто в услугах сетевого хостинга. В данной статье будет рассмотрен процесс установки и предварительной настройки сервера MySQL.

1. Установка и настройка MySQL

# cd /usr/ports/databases/mysql51-server
# make with-charset=cp1251 with-collation=cp1251_general_ci install clean

Установка должна пройти успешно и никаких трудностей возникнуть не должно. После установки, дописываем в /etc/rc.conf следующую строчку, чтобы сервер запускался автоматически с системой:

mysql_enable="YES"

Теперь выполним еще пару действий, необходимых для успешного запуска mysql.

# mysql_install_db --user=mysql
# mysqld_safe --user=mysql &

Проверяем работоспособность сервера, как-нибудь обращаясь к базе данных, например:

# mysqladmin version

или

# mysqladmin variables

Если видим результаты, то мускул нормально работает.
Теперь необходимо задать пароли пользователям, а анонимные аккаунты удалить. Т.к. при установке все пользователи в mysql создаются без пароля. Заходим в mysql пользователем root:

# mysql -u root

Есть два способа установить пароли. Первый способ — использовать команду SET PASSWORD, второй — UPDATE. Мне больше нравится второй способ, но на всякий случай приведу два способа.

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'ваш_hostname' = PASSWORD('newpwd');

Замените ваш_hostname именем вашего сервака, а newpwd вашим паролем.

mysql> UPDATE mysql.user SET password = PASSWORD('newpwd')
-> WHERE user='root';
mysql> FLUSH PRIVILEGES;

Удаляем пользователей без паролей:

mysql> DELETE FROM mysql.user WHERE user='';
mysql> FLUSH PRIVILEGES;

Я предпочитаю удалять всех пользователей, кроме root@localhost. А ему задаю пароль. Имхо, не нужны все эти пользователи.

2. Установка и настройка phpMyAdmin

# cd /usr/local/databases/phpmyadmin
# make install clean

В опциях установки выбираем все. После установки открываем файл /usr/local/etc/apache22/httpd.conf и раскомментируем там следующую строчку:

Include etc/apache22/extra/httpd-vhosts.conf

Далее открываем файл/usr/local/etc/apache22/extra/httpd-vhosts.conf и приводим его к примерно вот такому виду:

Listen 8080

NameVirtualHost: *:8080

<VirtualHost *:8080>
ServerAdmin [email protected]
DocumentRoot "/usr/local/www/phpMyAdmin"
ServerName server.ru
<Directory "/usr/local/www/phpMyAdmin/">
Options none
AllowOverride Limit

Order Deny,Allow
Deny from all
# указываем компьютер, откуда можно открывать phpMyAdmin
Allow from 192.168.0.200
</Directory>
</VirtualHost>

Важно! Если при старте Apache будет возникать ошибка:

[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

то она решается путем модификации файла /boot/defaults/loader.conf и установкой следующего значение в YES:

accf_http_load="YES"

После этого надо либо выполнить команду:

# kldload accf_http

либо перезагрузить систему.

Далее необходимо создать конфиг для phpMyAdmin. Сейчас разработчики предусмотрели мастер конфигов, который автоматически создает конфиг на основе небольшого мастера. Чтобы его вызвать, надо набрать в адресной строке следующий адрес: server.ru:8080/setup/ (именно с такими параметрами у нас настроен виртуальный хост выше). Если до этого не было настройки php, то высветится ошибка, говорящая, что не установлен часовой пояс для функции date_default_timezone_get(). Чтобы его установить, надо перемиеновать файл /usr/local/etc/php.ini-recommended в /usr/local/etc/php.ini и раскомментировать там следующую строчку, дописав вашу зону (узнать зону можно тут):

date.timezone = Europe/Moscow

Так же, необходимо создать папку /usr/local/www/phpMyAdmin/config и установить на нее права на запись:

# cd /usr/local/www/phpMyAdmin
# mkdir config
# chmod o+rw config

Дополнительные функции phpMyAdmin. Чтобы их получить, нужно создать пользователя и базу данных PMA. Сначала создаем пользователя:

GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
ON mysql.tables_priv TO 'pma'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';

Теперь (вернее, это надо было сделать до предыдущего запроса) надо создать базу данных phpmyadmin. Скрипт для ее создания лежит в папке /usr/local/www/phpMyAdmin/scripts/create_tables.sql
Все, теперь отвечаем на все вопросы в мастере, сохраняем конфиг и переносим его в корень phpMyAdmin (/usr/local/www/phpMyAdmin/).

# mv config/config.inc.php .
# chmod o-rw config.inc.php

У меня получился вот такой вот конфиг:

<?php
/* Servers configuration */
$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowRoot'] = false;
$cfg['Servers'][$i]['hide_db'] = '(information_schema|mysql|phpmyadmin)';
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['controluser'] = 'pma_user';
$cfg['Servers'][$i]['controlpass'] = 'password';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';

/* End of servers configuration */

$cfg['blowfish_secret'] = 'secret';
$cfg['DefaultLang'] = 'ru-utf-8';
$cfg['ServerDefault'] = 1;
$cfg['Export'] = array (
'compression' => 'gzip',
'asfile' => true,
'charset' => 'windows-1251',
);
$cfg['ShowPhpInfo'] = true;
$cfg['SQLQuery'] = array (
'Validate' => true,
);
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
$cfg['DefaultCharset'] = 'windows-1251';
$cfg['LoginCookieRecall'] = false;
?>

Update
Импортирование дампа:

# mysql -u USER -p DBNAME < dump.sql

Добавление пользователя с привилегиями:

GRANT SELECT,INSERT,UPDATE,DELETE ON dbname.* TO 'user'@'localhost' IDENTIFIED BY 'password';

[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

1 Комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *