LINUX.ORG.RU
ФорумAdmin

поделитесь опытом запуска mysql в chroot


2

1

Застрял на создании таблиц привилегий. Без chroot таблицы привилегий нормально создаются командой:

cd /usr
mysql_install_db --user=mysql --datadir=/baza --basedir=/usr

Для chroot в /etc/my.conf прописываю:

chroot = /chroot/mysql

В этой папке создаю каталоги:

/dev /bin /etc /baza /usr /tmp /var /var/tmp

переношу в них все файлы и библиотеки необходимые для mysql так же переношу файлы passwd, hosts, my.conf, group, resolv.conf из passwd и group удаляю всех пользователей кроме пользователя mysql

Все права и пользователи на файлы и папки такие же как и в основной системе.

Теперь таблицы привилегий создаю командой:

cd /chroot/mysql/usr
mysql_install_db --user=mysql --language=russian --datadir=/chroot/mysql/baza --basedir=/chroot/mysql/usr

в этой команде добавляю опцию --language=russian что бы был найден файл errmsg.sys так как в chroot нет локализации, в основной системе локализация:

LANG=ru_RU.UTF-8 LC_CTYPE=«ru_RU.UTF-8» LC_NUMERIC=«ru_RU.UTF-8» LC_TIME=«ru_RU.UTF-8» LC_COLLATE=«ru_RU.UTF-8» LC_MONETARY=«ru_RU.UTF-8» LC_MESSAGES=«ru_RU.UTF-8» LC_PAPER=«ru_RU.UTF-8» LC_NAME=«ru_RU.UTF-8» LC_ADDRESS=«ru_RU.UTF-8» LC_TELEPHONE=«ru_RU.UTF-8» LC_MEASUREMENT=«ru_RU.UTF-8» LC_IDENTIFICATION=«ru_RU.UTF-8» LC_ALL=ru_RU.UTF-8

но таблицы привилегий не создаются, а выдаются вот такие ошибки:

Installing MySQL system tables...
120617 14:29:46 [ERROR] Can't find messagefile '/chroot/mysql/usr/share/mysql/russian/errmsg.sys'
120617 14:29:46 [Warning] Can't create test file /chroot/mysql/baza/server.lower-test
120617 14:29:46 [Warning] Can't create test file /chroot/mysql/baza/server.lower-test
/srv/mysql/usr/sbin/mysqld: Can't change dir to '/chroot/mysql/baza/' (Errcode: 2)
120617 14:29:46 [ERROR] Aborting

120617 14:29:46 [Note]

Installation of system tables failed!  Examine the logs in
/chroot/mysql/baza for more information.

You can try to start the mysqld daemon with:

    shell> /chroot/mysql/usr/sbin/mysqld --skip-grant &

and use the command line tool /chroot/mysql/usr/bin/mysql
to connect to the mysql database and look at the grant tables:

    shell> /chroot/mysql/usr/bin/mysql -u root mysql
    mysql> show tables

Try 'mysqld --help' if you have problems with paths.  Using --log
gives you a log in /chroot/mysql/baza that may be helpful.

Please consult the MySQL manual section
'Problems running mysql_install_db', and the manual section that
describes problems on your OS.  Another information source are the
MySQL email archives available at http://lists.mysql.com/.

Please check all of the above before mailing us!  And remember, if
you do mail us, you MUST use the /chroot/mysql/usr/scripts/mysqlbug script!

Первая ошибка пишет что нет файла:

[ERROR] Can't find messagefile '/chroot/mysql/usr/share/mysql/russian/errmsg.sys'

Хотя этот файл есть.

Подскажите пожалуйста как решить проблему и стоит ли запускать mysql в chroot? может это настолько сложное и трудоёмкое занятие что этим не стоит и заниматься?

★★

смысл держать мускуль в chroot?

dreamer ★★★★★ ()

Небольшое дополнение:

Если запускать mysql_install_db не в chroot, закоментировав строку chroot = /chroot/mysql в файле /etc/my.conf с параметром --language=russian

то выдаёт вот какие ошибки:

Installing MySQL system tables...
120617 14:44:51 [ERROR] An old style --language value with language specific part detected: /usr/share/mysql/russian/
120617 14:44:51 [ERROR] Use --lc-messages-dir without language specific part instead.
OK
Filling help tables...
120617 14:44:51 [ERROR] An old style --language value with language specific part detected: /usr/share/mysql/russian/
120617 14:44:51 [ERROR] Use --lc-messages-dir without language specific part instead.
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:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h server.com password 'new-password'

Alternatively you can run:
/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 /usr ; /usr/bin/mysqld_safe &

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

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

соответственно с --language=english выдаёт:

Installing MySQL system tables...
120617 14:46:19 [ERROR] An old style --language value with language specific part detected: /usr/share/mysql/english/
120617 14:46:19 [ERROR] Use --lc-messages-dir without language specific part instead.
OK
Filling help tables...
120617 14:46:19 [ERROR] An old style --language value with language specific part detected: /usr/share/mysql/english/
120617 14:46:19 [ERROR] Use --lc-messages-dir without language specific part instead.
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:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h server.com password 'new-password'

Alternatively you can run:
/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 /usr ; /usr/bin/mysqld_safe &

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

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

При этом таблицы привилегий всё равно создаются.

Если параметр --language не использовать то таблицы привилегий создаются вообще без ошибок.

v4567 ★★ ()
Ответ на: комментарий от v4567

смысл держать мускуль в chroot?

Для повышения безопасности.

v4567 ★★ ()

Создать таблицы привилегий без chroot. Потом перенести в chroot.

стоит ли запускать mysql в chroot?

Для повышения безопасности.

Я бы ограничился selinux. Если очень хочется chroot и безопасность, то %virtual_machine_name% + selinux по желанию.

fjoe ()
Ответ на: комментарий от fjoe

Создать таблицы привилегий без chroot. Потом перенести в chroot.

Попробую сейчас. Но ведь должны же и в chroot без проблем создаться.

v4567 ★★ ()
Ответ на: комментарий от v4567

Для чистоты экспериментов c chroot я бы делал

chroot /chroot
и потом уже пытался настраивать базы из этой консоли.

fjoe ()
Ответ на: комментарий от v4567

если не получиться, рекомендую lxc как альтернативу chroot

Pinkbyte ★★★★★ ()
Ответ на: комментарий от v4567

Для повышения безопасности.

Чрут для этого не предназначен - это даже в мане написано. Для этого можно попробовать lxc.

zloelamo ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.