The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Не работает chroot в MySQL 4.0.16"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Не работает chroot в MySQL 4.0.16"
Сообщение от oleg44 emailИскать по авторуВ закладки on 11-Дек-03, 15:13  (MSK)
Здравствуйте!
Поставил MySQL 4.0.16. Прописываю в /etc/my.cnf chroot=/usr/local/mysql/data
После запуска (в лог файле):
31211 15:38:30 Can't find messagefile '/usr/local/mysql/data/errmsg.sys'

Файл errmsg.sys лежит в /usr/local/mysql/data/errmsg.sys, права mysql.

Что делать?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Не работает chroot в MySQL 4.0.16"
Сообщение от OldOwl Искать по авторуВ закладки on 11-Дек-03, 17:04  (MSK)
>Здравствуйте!
> Поставил MySQL 4.0.16. Прописываю в /etc/my.cnf chroot=/usr/local/mysql/data
> После запуска (в лог файле):
> 31211 15:38:30 Can't find messagefile '/usr/local/mysql/data/errmsg.sys'
>
> Файл errmsg.sys лежит в /usr/local/mysql/data/errmsg.sys, права mysql.
>
> Что делать?

Для mysqld /usr/local/mysql/data - новый корень, относительно которого он и "прокладывает" себе все пути. Т.е., чтобы определить, где _на_самом_деле_ (относительно настоящего корня /) mysqld ищет какой-либо файл, прибавь к его пути то, что прописано в chroot. В твоем случае это будет /usr/local/mysql/data/usr/local/mysql/data/errmsg.sys
Вот и попробуй положить errmsg.sys туда. Естественно, создав несуществующие каталоги.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Не работает chroot в MySQL 4.0.16"
Сообщение от oleg44 emailИскать по авторуВ закладки on 16-Дек-03, 13:15  (MSK)
>Для mysqld /usr/local/mysql/data - новый корень, относительно которого он и "прокладывает" себе
>все пути. Т.е., чтобы определить, где _на_самом_деле_ (относительно настоящего корня /)
>mysqld ищет какой-либо файл, прибавь к его пути то, что прописано
>в chroot. В твоем случае это будет /usr/local/mysql/data/usr/local/mysql/data/errmsg.sys
>Вот и попробуй положить errmsg.sys туда. Естественно, создав несуществующие каталоги.

Пробовал всяко, не желает.
031216 14:15:35  Can't find messagefile '/usr/local/mysql/data/share/mysql/charsets/english/errmsg.sys
031216 14:15:35  Aborting

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Не работает chroot в MySQL 4.0.16"
Сообщение от OldOwl Искать по авторуВ закладки on 16-Дек-03, 15:35  (MSK)
>>Для mysqld /usr/local/mysql/data - новый корень, относительно которого он и "прокладывает" себе
>>все пути. Т.е., чтобы определить, где _на_самом_деле_ (относительно настоящего корня /)
>>mysqld ищет какой-либо файл, прибавь к его пути то, что прописано
>>в chroot. В твоем случае это будет /usr/local/mysql/data/usr/local/mysql/data/errmsg.sys
>>Вот и попробуй положить errmsg.sys туда. Естественно, создав несуществующие каталоги.
>
>Пробовал всяко, не желает.
>031216 14:15:35  Can't find messagefile '/usr/local/mysql/data/share/mysql/charsets/english/errmsg.sys
>031216 14:15:35  Aborting

Чего-то я не понял. У тебя errmsg.sys лежал в /usr/local/mysql/data/errmsg.sys, а mysqld искал его в /usr/local/mysql/data/ и не находил. Я имел ввиду, что тебе нужно попробовать в /usr/local/mysql/data/ (или что там прописано в chroot=?)
создать путь /usr/local/mysql/data/, т.е. чтоб в итоге получился путь /usr/local/mysql/data/usr/local/mysql/data/, и туда положить errmsg.sys.
А у тебя теперь errmsg.sys вообще ищется в /usr/local/mysql/data/share/mysql/charsets/english/. Что ты поменял, что mysqld стал искать файл в другом месте?
../charserts/.. здесь вообще ни при чем, там хранятся настройки кодировок.
Где у тебя сейчас лежит errmsg.sys и что сейчас прописано в chroot?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Не работает chroot в MySQL 4.0.16"
Сообщение от oleg44 emailИскать по авторуВ закладки on 16-Дек-03, 16:52  (MSK)
>Чего-то я не понял. У тебя errmsg.sys лежал в /usr/local/mysql/data/errmsg.sys, а mysqld
>искал его в /usr/local/mysql/data/ и не находил. Я имел ввиду, что
>тебе нужно попробовать в /usr/local/mysql/data/ (или что там прописано в chroot=?)
>
>создать путь /usr/local/mysql/data/, т.е. чтоб в итоге получился путь /usr/local/mysql/data/usr/local/mysql/data/, и туда
>положить errmsg.sys.
>А у тебя теперь errmsg.sys вообще ищется в /usr/local/mysql/data/share/mysql/charsets/english/. Что ты поменял,
>что mysqld стал искать файл в другом месте?
>../charserts/.. здесь вообще ни при чем, там хранятся настройки кодировок.
>Где у тебя сейчас лежит errmsg.sys и что сейчас прописано в chroot?
>
/etc/my.cnf
[mysqld]
chroot=/usr/local/mysql
basedir=/usr/local/mysql
port=3306
datadir=/usr/local/mysql/data/db
#bdb-logdir=/log
log=/usr/local/mysql/data/log/queries
pid-file=/usr/local/mysql/data/mysqld.pid
#skip-networking
socket=/usr/local/mysql/data/mysql.sock
tmpdir=/usr/local/mysql/data/tmp
user=mysql
default-character-set=cp1251
skip-locking
skip-show-database
set-variable = key_buffer=20M
#character-sets-dir=/share/mysql/charsets/
#language=/usr/local/mysql/share/mysql/charsets/english

------------
Создал в /usr/local/mysql  /usr/local/mysql, в нем /data, /share/mysql , скопировал в него все файлы charsets, сообщений на разных языках.
MySql запускается , в логе :

31216 17:47:14  mysqld started
Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line
Fatal error: Can't change to run as user 'mysql' ;  Please check that the user exists!
031216 17:47:14  Aborting
031216 17:47:14  /usr/local/mysql/libexec/mysqld: Shutdown Complete
031216 17:47:14  mysqld ended
-----
Теперь похоже ему нужно создать /etc/passwd с пользователем mysql.
Чем и буду заниматься.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Не работает chroot в MySQL 4.0.16"
Сообщение от OldOwl Искать по авторуВ закладки on 16-Дек-03, 18:21  (MSK)
>Создал в /usr/local/mysql  /usr/local/mysql, в нем /data, /share/mysql , скопировал в
>него все файлы charsets, сообщений на разных языках.
>
Во, теперь другое дело. Таким же образом нужно создать/разложить копии всех каталогов и файлов, которые могут понадобиться mysqld для работы. Например, /usr/local/mysql/data/db, где будут лежать собственно базы.
Кстати, по идее, чтобы не городить огород, можно было бы попробовать сделать проще:
Поставить в my.cnf вместо basedir=/usr/local/mysql basedir=/
и во всех остальных путях типа datadir=/usr/local/mysql/data/db и т.п. просто вырезать начальное "/usr/local/mysql". Тогда ничего не надо переносить. Хотя тогда пути типа /etc, /bin и т.п., которые тоже будут нужны, будут вперемежку с папками mysql.

>MySql запускается , в логе :
>
>31216 17:47:14  mysqld started
>Warning: Ignoring user change to 'mysql' because the user was set to
>'mysql' earlier on the command line
>
Это одно.

>Fatal error: Can't change to run as user 'mysql' ;  Please
>check that the user exists!
>
А вот это уже совсем другое.

>Теперь похоже ему нужно создать /etc/passwd с пользователем mysql.
>Чем и буду заниматься.
>
Верно. Рекомендуется взять копию etc/master.password, удалить в ней всех лишних пользователей, кроме mysql, а потом создать из нее новые базы pwd.db и spwd.db, сама копия и полученный passwd потом не нужны.
Также понадобится копия /etc/group, в которой также оставить только mysql.

Ну а дальше сам увидишь, если еще что понадобится - ругнется.

Я так чрутил mysql и apache. Только не в my.cnf указывал chroot=..., а сам mysqld (и httpd соответственно) запускал через команду chroot. Так что mysqld вообще не подозревает, что что-то не так. :-)
Так вот файлов и папок продублировать по новым путям пришлось предостаточно.

Удачи!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Не работает chroot в MySQL 4.0.16"
Сообщение от oleg44 emailИскать по авторуВ закладки on 17-Дек-03, 09:11  (MSK)
>Верно. Рекомендуется взять копию etc/master.password, удалить в ней всех лишних пользователей, кроме
>mysql, а потом создать из нее новые базы pwd.db и spwd.db,
У меня Linux. Нет master.password.
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру