Задавайте вопросы, мы ответим
Вы не зашли.
Система: убунту 8.04
MySQL: 5.0.51a-3ubuntu5.8
Неактивен
Брр, такую переписку пропустил Ну, ничего, лучше поздно, чем никогда.
1. В дебиан-подобных системах MySQL собран так, чтобы писать журнал ошибок
в syslog. Соответственно, по умолчанию он попадает в /var/log/daemon.log.
2. В убунту ребята побоялись использовать selinux, зато не побоялись исполь-
зовать apparmor. В частности, это означает, что Вам не удастся запустить MySQL
с нестандартными путями для баз, для сокета, пидфайла и т.п. Если позволяют
настройки безопасности, то можно просто остановить apparmor или даже удалить
его из системы. Если нужно всё-таки оставить, то следует поизучать
/etc/apparmor.d/usr.sbin.mysqld и добавить туда соответствующие разрешения.
Неактивен
Всё не стала копировать, только, то что после попытки запуска туда дописывается:
/var/log/daemon.log написал:
Jul 28 21:44:54 zzz-tower mysqld_safe[9585]: started
Jul 28 21:44:54 zzz-tower mysqld[9589]: Could not open required defaults file: /etc/mysql/my2.cnf
Jul 28 21:44:54 zzz-tower mysqld[9589]: Fatal error in defaults handling. Program aborted
Jul 28 21:44:54 zzz-tower mysqld_safe[9591]: ended
Файл второй нашла, вот его содержимое, на что менять?
/etc/apparmor.d/usr.sbin.mysqld написал:
# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>
/usr/sbin/mysqld {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
#include <abstractions/mysql>
capability dac_override,a
capability setgid,
capability setuid,
/etc/hosts.allow r,
/etc/hosts.deny r,
/etc/group m,
/etc/passwd m,
/etc/mysql/*.pem r,
/etc/mysql/conf.d/ r,
/etc/mysql/conf.d/* r,
/etc/mysql/my.cnf r,
/usr/sbin/mysqld mr,
/usr/share/mysql/** r,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
}
Неактивен
Добавить туда пути к новым файлам, доступ к которым нужно разрешить mysql. И перезапустить apparmor. Для начала можно остановить apparmor и настроить все без него, а потом уже с безопасностью разбираться.
Неактивен
Как минимум — добавить каталоги, в которые должно пускать сервер
по аналогии со стандартными путями. То есть для Вашего случая я бы
добавил
/var/www/db_servers/db_server_1/ r,
/var/www/db_servers/db_server_1/** rwk,
/var/www/db_servers/tmpdir1/ r,
/var/www/db_servers/tmpdir1/** rwk,
/var/www/db_servers/logs/ r,
/var/www/db_servers/logs/** rwk,
Возможно, понадобится что-то еще. Я бы начал с отключения apparmor
вообще, чтобы убедиться, что дело в нем.
Неактивен
Боюсь накосячить, что потом ничего работать не будет, можите подправить код, я его себе скопирую, все пути указаны выше
Неактивен
Волков бояться — в лес не ходить
Просто скопируйте файлик в сторонку на всякий случай, и дальше редактируйте.
Тогда всегда сможете вернуться к сохраненному варианту
Неактивен
Файлик отредактировала, но не нашла как отключит армор, по аналогии с апачем и ДБ не получилось
Неактивен
Почему не получилось? Вот попытка чтения из запрещенного каталога:
silentia:~$ mysql -e "load data infile '/tmp/a.txt' into table a(id)" test ERROR 29 (HY000) at line 1: File '/tmp/a.txt' not found (Errcode: 13) silentia:~$ sudo /etc/init.d/apparmor teardown * Unloading AppArmor profiles [ OK ] silentia:~$ mysql -e "load data infile '/tmp/a.txt' into table a(id)" test silentia:~$
Неактивен
log написал:
Jul 28 22:29:43 zzz-tower mysqld_safe[10349]: started
Jul 28 22:29:43 zzz-tower mysqld[10352]: 110728 22:29:43 InnoDB: Started; log sequence number 0 46976
Jul 28 22:29:43 zzz-tower mysqld[10352]: 110728 22:29:43 [Note] /usr/sbin/mysqld: ready for connections.
Jul 28 22:29:43 zzz-tower mysqld[10352]: Version: '5.0.51a-3ubuntu5.8-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
Jul 28 22:30:32 zzz-tower mysqld[10352]: 110728 22:30:32 [Note] /usr/sbin/mysqld: Normal shutdown
Jul 28 22:30:32 zzz-tower mysqld[10352]:
Jul 28 22:30:32 zzz-tower mysqld[10352]: 110728 22:30:32 InnoDB: Starting shutdown...
Jul 28 22:30:33 zzz-tower mysqld[10352]: 110728 22:30:33 InnoDB: Shutdown completed; log sequence number 0 46976
Jul 28 22:30:33 zzz-tower mysqld[10352]: 110728 22:30:33 [Note] /usr/sbin/mysqld: Shutdown complete
Jul 28 22:30:33 zzz-tower mysqld[10352]:
Jul 28 22:30:34 zzz-tower mysqld_safe[10381]: ended
consol написал:
zzz@zzz-tower:~$ sudo mysqld_safe --defaults-file=/etc/mysql/my2.cnf
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/www/db_servers/db_server_1
mysqld_safe[10349]: started
STOPPING server from pid file /var/www/db_servers/db_server_1/hostname.pid
mysqld_safe[10381]: ended
zzz@zzz-tower:~$
Пид файл в деректории создался, а вот зокс нет (
а потом консоль выдала это на коннект:
consol написал:
zzz@zzz-tower:~$ mysql -h 127.0.0.181 -P 12355 -u root -ppassword
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.181' (111)
zzz@zzz-tower:~$
Неактивен
Oк, а что Вы делаете перед STOPPING? или оно само? Попробуйте запустить
без mysqld_safe?
MySQL успешно запускается, но потом mysqld_safe его убивает (^C?).
Неактивен
да, контрл-С
Неактивен
но тестирую я ДО того, как убиваю
Неактивен
Он пишет, что порт у вас 3306:
Jul 28 22:29:43 zzz-tower mysqld[10352]: Version: '5.0.51a-3ubuntu5.8-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
Неактивен
Таак, теперь давайте сравнивать конфиги. В последнем, который Вы написали,
порт 3306, а Вы пытаетесь соединиться с каким-то высоким. Нужно, чтобы порт
был тот же самый.
Проверять можно командой telnet, иногда это проще
Если сложно угадать, какой порт слушает сервер, — можно подглядеть. Для
процесса с pid 10352 (так, как у Вас было в предыдущем примере) — что-то вида
sudo lsof -p 10352 | grep LISTEN.
Неактивен
Урааааа, пошло
А теперь можно в кратце несколько пунктов:
Как всё собрать в одном файле
Сделать так чтоб при рестарте компа оно всё разом само запускалось
Как через конфиг прописать рутов каждому?
Неактивен
Стандартного способа убунту, к сожалению, нету, поэтому будем использовать
стандартный способ MySQL.
Есть такой замечательный сценарий — mysqld_multi:
http://dev.mysql.com/doc/refman/5.1/en/ … multi.html
Его можно вполне использовать в качестве инитскрипта. То есть можно сделать
символическую ссылку в init.d, а потом прописать ссылки в уровни загрузки.
Как-то так:
ln -s `which mysqld_multi` /etc/init.d/mysqld_multi
update-rc.d mysqld_multi defaults
Стандартный запускатор, соответственно, убираем:
update-rc.d -f mysql remove
В один файл предлагаю объединить самостоятельно Все различающиеся
куски надо положить в разделы вида [mysqldXXX] (в документации очень
подробный пример, я бы скопировал с него). Что такое «прописать рутов»
не понял, но если Вы пишете какие-то параметры в командной строке, ровно
такие же параметры можно писать и в файле конфигурации (без -- только).
Неактивен
Мне надо отойти на полчасика, приду опробую, со ссылкой знакома, если посмотрите наверху, у меня изначально именно оно и было. Если вас не будет, до завтра отпишусь об успехах
Неактивен
не разобралась, всё таки в линуксе я ещё нуб (
Неактивен
И что не заработало?
Неактивен
Утро доброе.
paulus написал:
То есть можно сделать
символическую ссылку в init.d
Ссылку на что иммено?
Неактивен
На mysqld_multi. В linux принято, чтобы все запускаемые системой сценарии
располагались в /etc/init.d (посмотрите, там много файликов). mysqld_multi
можно или скопировать туда, или просто сделать символическую ссылку на
него.
update-rc.d в свою очередь сделает символические ссылки с правильными
названиями в каталогах /etc/rc.*d — из них сценарии выполняются при старте
системы.
Надеюсь, понятно объяснил
P.S. Про это есть кусок в КИТ (презентация про gnu/linux):
http://company.yandex.ru/academic/kit , в Ubuntu используется SysV и upstart
(в Вашей версии — только sysvinit).
Неактивен
Сделала
consol написал:
zzz@zzz-tower:~$ sudo ln -s `which mysqld_multi` /etc/init.d/mysqld_multi
zzz@zzz-tower:~$ sudo update-rc.d mysqld_multi defaults
Adding system startup for /etc/init.d/mysqld_multi ...
/etc/rc0.d/K20mysqld_multi -> ../init.d/mysqld_multi
/etc/rc1.d/K20mysqld_multi -> ../init.d/mysqld_multi
/etc/rc6.d/K20mysqld_multi -> ../init.d/mysqld_multi
/etc/rc2.d/S20mysqld_multi -> ../init.d/mysqld_multi
/etc/rc3.d/S20mysqld_multi -> ../init.d/mysqld_multi
/etc/rc4.d/S20mysqld_multi -> ../init.d/mysqld_multi
/etc/rc5.d/S20mysqld_multi -> ../init.d/mysqld_multi
zzz@zzz-tower:~$ sudo update-rc.d -f mysql remove
Removing any system startup links for /etc/init.d/mysql ...
/etc/rc0.d/K21mysql
/etc/rc1.d/K21mysql
/etc/rc2.d/S19mysql
/etc/rc3.d/S19mysql
/etc/rc4.d/S19mysql
/etc/rc5.d/S19mysql
/etc/rc6.d/K21mysql
zzz@zzz-tower:~$
Теперь, что дальше?
Неактивен
/etc/init.d/mysqld_multi start — должно запустить все настроенные экземпляры MySQL
Неактивен
Я их ещё не до настраивала, можете проверить файл плз.
Дело в том, что такой файл я уже делала позавчера, когда читала мануал про мультизапуск, но так как он немного отличался от оригинального файла, с которым нам сегодня/вчера удалось запустить второй сервер, я его немного скомпоновала, перенеся из основного файла, не закомментированные строчки, если они уже у меня были, я их содержимое заменила, на то, что я уже прописала, но вот не знаю, что делать с теми, что остались, откуда взяла, плохо помню, думаю, что из мануала, я их на всякий случай тут закоментировала
my_multi.cnf написал:
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
#user = root
#password = samsung
user = multi_admin
password = my_password
[mysqld1]
user = mysql
bind-address = 127.0.0.181
port = 12355
pid-file = /var/www/db_servers/db_server_1/db_server_1.pid
socket = /var/www/db_servers/db_server_1/mysql.sock
log = /var/www/db_servers/log1/log.log
basedir = /usr
datadir = /var/www/db_servers/db_server_1
tmpdir = /var/www/db_servers/tmpdir1/
language = /usr/share/mysql/english
skip-external-locking
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
skip-bdb
#tcp-ip
#protocol = TCP
#host = dbserver1.xxx.info
#log-error = /var/www/db_servers/log1/log_error.log
#bdb-tmpdir = /var/www/db_servers/bdbtmpdir1/
#user = root
#password = samsung
#
#[mysqld2]
user = mysql
bind-address = 127.0.0.182
port = 12355
pid-file = /var/www/db_servers/db_server_2/db_server_2.pid
socket = /var/www/db_servers/db_server_2/mysql.sock
log = /var/www/db_servers/log2/log.log
basedir = /usr
datadir = /var/www/db_servers/db_server_2
tmpdir = /var/www/db_servers/tmpdir2/
language = /usr/share/mysql/english
skip-external-locking
#tcp-ip
#protocol = TCP
#host = dbserver2.xxx.info
#log-error = /var/www/db_servers/log2/log_error.log
#bdb-tmpdir = /var/www/db_servers/bdbtmpdir2/
#user = root
#password = samsung
##
Неактивен