it-swarm.com.ru

Невозможно запустить службу MySql

Когда я запускаю команду 

mysql -u root -p

Я получил ошибку

ОШИБКА 2002 (HY000): Не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2)

Когда я пытаюсь запустить службу MySQL

service mysql start

это время истекает с сообщением

Задание для mysql.service не выполнено из-за превышения времени ожидания. Смотрите "systemctl status mysql.service" и "journalctl -xe" для подробностей.

Бревна

Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/usr/my.cnf" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:210): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:211): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:212): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:213): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/usr/my.cnf" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 mysqld_safe[30539]: 170108 23:44:48 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30867]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30868]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30867]: pam_unix(cron:session): session closed for user root
9
user3933528

Сначала остановите экземпляр mysql. Вам нужно будет скопировать точный каталог/var/lib/mysql в новый каталог данных, сохранив его разрешение. Так что используйте rsync с опцией -a

Sudo rsync -av /var/lib/mysql /db/data/

Также измените путь к каталогу данных в файле mysql.cnf

Вам нужно будет добавить псевдоним в apparmor, чтобы он позволял mysql записывать в новый каталог

Чтобы добавить псевдоним:

Sudo nano /etc/apparmor.d/tunables/alias

а затем добавить эту строку вниз

alias /var/lib/mysql/ -> /db/data/mysql

Перезапустите apparmor

Sudo systemctl restart apparmor

а теперь запусти mysql. Он должен работать

2
Ashish Prakash

Если ваш mysql работает и вы хотите изменить поток каталогов, выполните следующие действия: Измените datadir из vim /etc/mysql/mysql.conf.d/mysqld.cnf Измените владельца или задайте высокие привилегии для нового каталога chown mysql.mysql /yourdir/mysqlВы должны изменить vim /etc/apparmor.d/tunables/alias 

alias /var/lib/mysql/ -> /yourdb/mysql

наконец добавьте /db/data/mysql r и /db/data/mysql** rwk в конце vim /etc/apparmor.d/usr.sbin.mysqld
/etc/init.d/apparmor reload/etc/init.d/mysql start

Но если ваш mysql больше не работает, удалите его и выполните эти шаги . Если вам нужны ваши данные, скопируйте их в новый каталог . Удалите шаги: apt-get autoremove mysql-server

apt-get remove --purge mysql-\*

apt-get install mysql-server

0
reihaneh

Я добавляю этот ответ тем, кто не нашел удовлетворительного ответа.

Во-первых, следуйте простому учебному пособию , чтобы скопировать и установить псевдонимы и конфигурации в новый требуемый каталог данных (datadir).

Учебник показывает, как:

  1. Остановка службы MySQL,
  2. Резервное копирование и копирование существующей базы данных в новое место
  3. Добавление правил AppArmor.
  4. Перезагрузка сервиса.

Затем у меня возникла именно эта проблема (доступ к AppArmor запрещен) при перемещении моего datdir в /media/data/mysql/, и последний шаг (перезапустить службу mysql) не удался из-за AVC apparmor="DENIED" operation="open" prof......

Во-первых, как упомянул @reihaneh, добавьте правила чтения и записи AppArmor: Добавьте /db/data/mysql r, и /db/data/mysql** rwk, (не удаляйте запятые) в конце vim /etc/apparmor.d/usr.sbin.mysqld

Наконец, единственное, что осталось сделать (не упомянуто в руководствах), это изменить привилегии для нового каталога данных на пользователя MySQL-Server и группу mysql.

Я использовал наутилус для этого:

Запустите nautilus как SU (Sudo nautilus) -> щелкните правой кнопкой мыши НОВЫЙ каталог данных -> Свойства -> Разрешения

Затем выберите владельца: MySQL - MySQL Server
И группа: mysql 

0
mr_mo