Установка MySQL на Zyxel Keenetic



Установка пакетов

Поставим пакет вот этой командой

opkg install mysql-server

Настройка MySQL

Создаем базу данных с именем «mysql» (для пользователя с именем «root»)

mysql_install_db --datadir=/media/DISK_A1/system/var/mysql --basedir=/media/DISK_A1/system/usr --force

Лог с информацей создания базы

Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/media/DISK_A1/system/usr/bin/mysqladmin -u root password 'new-password'
/media/DISK_A1/system/usr/bin/mysqladmin -u root -h KEENETIC password 'new-password'

Alternatively you can run:
/media/DISK_A1/system/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /media/DISK_A1/system/usr ; /media/DISK_A1/system/usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /media/DISK_A1/system/usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /media/DISK_A1/system/usr/scripts/mysqlbug script!

Добавляем в скрипт запуска, а лучше в папку firewall.d правило для локальной работы с MySQL. Это нам понадобится для работы со связкой PHP+MySQL. Вот правило которое можно добавить в скрипт запуска

iptables -I INPUT -i lo -j ACCEPT

А вот скрипт для firewall.d

#!/bin/sh
iptables -I INPUT -i lo -j ACCEPT

Если вам нужен автостарт MySQL сервера, то можно сделать так

mv /media/DISK_A1/system/etc/init.d/K27mysqld /media/DISK_A1/system/etc/init.d/S27mysqld

Если вам будет нужно проверить работу БД MySQL, например, из HeidiSQL (см. ниже), то отключите временно «безопасность». Для этого закоментируйте в /media/DISK_A1/system/etc/my.cnf строку. Закомментирование позволяет подключиться к БД с любого IP!

#bind-address		= 127.0.0.1

Запускаем сервер командой

/media/DISK_A1/system/etc/init.d/K27mysqld start

Подключаемся к базе

mysql --defaults-file=/media/DISK_A1/system/etc/my.cnf mysql

Создаем новую базу

mysql> CREATE DATABASE test;

Создаем пользователя test с паролем testtest и с полными правами.

mysql> CREATE USER 'test'@'%' IDENTIFIED BY 'testtest';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%'
    ->     WITH GRANT OPTION;

Устанавливаем программу для работы с MySQL. Я использую бесплатную программу HeidiSQL. Взять можно здесь http://www.heidisql.com/download.php В этой программе можно редактировать базы данных, изменять права пользователей и прочие штучки-дрючки.

Если доступ к базе данных будет только локальный (порой это более предпочтительно, в том числе из соображений безопасности), а в качестве программы управления будет использоваться, например, phpMyAdmin, то приведенный выше пример изменится. Например, для phpBB, Mantis и т.п. более предпочтительно (на примере базы данных phpbb):

mysql> GRANT ALL ON phpbb.* TO 'phpbb'@'localhost' IDENTIFIED BY 'phpbb';

Установка библиотек поддержки MySQL для PHP

В нашем распоряжении есть три модуля

php5-mod-mysql - 5.4.11-2 - MySQL shared module
php5-mod-mysqli - 5.4.11-2 - MySQL Improved Extension shared module
php5-mod-pdo-mysql - 5.4.11-2 - PDO driver for MySQL shared module

Выбираете какой из них вам нужен и ставите. Можно поставить сразу три, если вы экспериментатор.

Ставим их при помощи команд (перед установкой php лучше выгрузить)

opkg install php5-mod-mysql 
opkg install php5-mod-mysqli 
opkg install php5-mod-pdo-mysql

Запускаем php и радуемся! MySQL работает весьма шустро и без проблем.

Установка MySQL на диск с файловой системой NTFS

Из соображений безопасности владельцем конфигурационного файла my.cnf должен быть root и права доступа 600. Для NTFS права установить нельзя, поэтому применяем трюк с созданием символической ссылки.

Сначала my.cnf переименовываем в mysql.cnf.

Затем в S27mysqld ищем строку

CONFIG="--defaults-file=$MOUNT/etc/my.cnf"

и заменяем на

CONFIGINITFILE="$MOUNT/etc/mysql.cnf"
CONFIGWORKFILE="/tmp/my.cnf"
CONFIGLINKFILE="$MOUNT/etc/my.cnf"
CONFIG="--defaults-file=$CONFIGWORKFILE"

и после строки

start() {

добавляем

cp -f $CONFIGINITFILE $CONFIGWORKFILE
chmod 600 $CONFIGWORKFILE
ln -s $CONFIGWORKFILE $CONFIGLINKFILE

Теперь используется базовый конфигурационный файл mysql.cnf, а my.cnf - его копия - становится символической ссылкой на /tmp/my.cnf, и остается только перезапустить MySQL сервер.