MySQL переустановить вопросы

По какой-то причине у моего /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]: 

3 ответа

Решение

Было бы хорошо узнать, что на самом деле произошло; Вы можете взглянуть на любой другой компьютер с той же ОС и установленным 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, если это необходимо

если вы решили переустановить - будьте в безопасности:

  • попытайтесь завершить работу чисто mysql - при необходимости, используя обычное kill и ожидание
  • скопировать все файлы данных [не только несколько - например, не только каталог одной базы данных; это может быть недостаточно для innodb]
  • скопировать все файлы конфигурации

только потом попробуй удалить + переустановить

Простая переустановка, как вы предлагаете, гарантированно не поможет в этом случае, так как ни один из сценариев, влияющих на эти разрешения, не будет изменен при прямой переустановке. Некоторые вещи, на которые следует обратить внимание: /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, спрашивая 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

Я бы не стал изменять какие-либо разрешения для каталога / var / run на данный момент, а только изменил бы путь / var / run / mysqld.

Вы должны убедиться, что пользователь mysql может получить доступ и писать в каталог mysqld. Первая команда назначает правильную группу, а вторая позволяет этой группе записывать в этот путь.

sudo chgrp mysql / var / run / mysqld /

sudo chmod g + w / var / run / mysqld /

Другие вопросы по тегам