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 Комментарий