По какой-то причине в моем каталоге / var / run / dir на debian6 были изменены chown и chmod. Проблема в чем? Результатом является то, что mysql не работает. Я предполагаю, что самый простой способ исправить это переустановить MySQL. (Раньше эта ЛАМПА работала нормально.)
Однако я создал базы данных и таблицы и не хочу их терять. Поскольку mysql не запущен, я не могу выполнить резервное копирование (верно?).
Я просто хочу подтвердить, что:
1). если я переустановлю, я не потеряю свои базы данных.
2). apt-get install mysql-server mysql-client
это правильная команда для использования.
Спасибо.
РЕДАКТИРОВАТЬ:
/ var / log / syslog вывод при запуске /etc/init.d/mysql start
:
mysqld_safe: Starting mysqld daemon with databases from /var/lib/mysql
mysqld: 130109 10:44:10 [Note] Plugin 'FEDERATED' is disabled.
mysqld: #007/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
mysqld: 130109 10:44:10 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
mysqld: 130109 10:44:10 InnoDB: The InnoDB memory heap is disabled
mysqld: 130109 10:44:10 InnoDB: Mutexes and rw_locks use GCC atomic builtins
mysqld: 130109 10:44:10 InnoDB: Compressed tables use zlib 1.2.3.4
mysqld: 130109 10:44:10 InnoDB: Using Linux native AIO
mysqld: 130109 10:44:10 InnoDB: Initializing buffer pool, size = 128.0M
mysqld: 130109 10:44:10 InnoDB: Completed initialization of buffer pool
mysqld: 130109 10:44:10 InnoDB: Operating system error number 13 in a file operation.
mysqld: InnoDB: The error means mysqld does not have the access rights to
mysqld: InnoDB: the directory.
mysqld: InnoDB: File name ./ibdata1
mysqld: InnoDB: File operation call: 'create'.
mysqld: InnoDB: Cannot continue operation.
mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
/etc/init.d/mysql[4531]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
/etc/init.d/mysql[4531]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
/etc/init.d/mysql[4531]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
/etc/init.d/mysql[4531]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
/etc/init.d/mysql[4531]:
Простая переустановка, как вы предлагаете, гарантированно не поможет в этом случае, поскольку ни один из сценариев, влияющих на эти разрешения, не будет изменен простой переустановкой. Несколько замечаний: / var / run теперь является tmpfs, смонтированным во время выполнения. Разрешения устанавливаются при его монтировании. из /etc/init.d/mountkernfs.sh
:
domount tmpfs "" /var/run varrun -omode=0755,nosuid$RUN_OPT
Итак, вы должны иметь /var/run
как root: root и chmod 0775.
Также следует отметить, что / var / run пуст при каждой загрузке. Любые изменения, внесенные в / var / run, исчезнут во время перезагрузки.
Когда запускается mysql init, он проверяет, существует ли / var / run / mysqld. Если этого не произойдет, он будет воссоздан с правильными разрешениями. из /etc/init.d/mysql
:
test -e /var/run/mysqld || install -m 755 -o mysql -g root -d /var/run/mysqld
Итак, если вы еще не перезагрузились, вы можете попробовать /etc/init.d/mysql stop && rm -r /var/run/mysqld && /etc/init.d/mysql start
.
Если вы перезагружались, значит еще что-то не так. Возможно, у вас есть старая версия сценария инициализации mysql (это может произойти, если вы изменили его, а затем обновили, обновление не будет (по умолчанию) перезаписать ваши изменения сценария инициализации. Вы можете проверить, есть ли у вас старая версия mysql init script, задав dpkg вопрос о текущем упакованном md5 сценария:
# dpkg -s mysql-server-5.1 | grep init.d
/etc/init.d/mysql ea6d050ac82ed69d01970f9b95ab9b9d
затем сравните это с md5sum в вашей файловой системе:
# md5sum /etc/init.d/mysql
ea6d050ac82ed69d01970f9b95ab9b9d /etc/init.d/mysql
было бы хорошо узнать, что же произошло на самом деле; вы можете взглянуть на любой другой компьютер с той же ОС и установленным mysql и использовать chmod и chown для восстановления ожидаемых прав и владения.
беглый взгляд на случайный сервер debian говорит мне:
root@serv:/var/run# ls -la /var/run/mysqld/*
total 12
drwxr-xr-x 2 mysql root 4096 Oct 24 13:29 .
drwxr-xr-x 14 root root 4096 Jan 9 01:28 ..
-rw-rw---- 1 mysql mysql 5 Oct 24 13:29 mysqld.pid
srwxrwxrwx 1 mysql mysql 0 Oct 24 13:29 mysqld.sock
так что попробуйте сначала:
chown mysql:mysql /var/run/mysqld/*
chown mysql:root /var/run/mysqld
и соответствующие chmods при необходимости
если решите переустановить - будьте осторожны:
только потом попробуйте удалить + переустановить
Я бы не стал менять какие-либо разрешения для каталога / var / run на данный момент, а только изменил бы путь / var / run / mysqld.
Вы должны убедиться, что пользователь mysql имеет доступ и запись в каталог mysqld. Первая команда назначает правильную группу, а вторая команда позволяет этой группе писать по этому пути.
sudo chgrp mysql / var / запустить / mysqld /
sudo chmod g + с / var / run / mysqld /