15.04로 업그레이드 한 후 systemd를 알게되는 것이 즐거웠습니다. mysql.service를 중지 할 수 없다는 점을 제외하고는 모든 것이 작동한다고 생각합니다. systemctl 명령이 중단되고 mysql은 계속 실행됩니다. 다른 사람이 이것을 경험했거나 무슨 일이 일어나고 있는지 알고 있습니까?
mysql.service
스크립트 를 사용 했습니까? 아니면 직접 작성 했습니까 ?
15.04로 업그레이드 한 후 systemd를 알게되는 것이 즐거웠습니다. mysql.service를 중지 할 수 없다는 점을 제외하고는 모든 것이 작동한다고 생각합니다. systemctl 명령이 중단되고 mysql은 계속 실행됩니다. 다른 사람이 이것을 경험했거나 무슨 일이 일어나고 있는지 알고 있습니까?
mysql.service
스크립트 를 사용 했습니까? 아니면 직접 작성 했습니까 ?
답변:
나는 같은 문제가 있었다 (공식 파일과 구성을 사용하여 15.04로 업그레이드).
시스템 재부팅 / 종료시 자동으로 mysql
데몬을 수동으로 중지 할 수 있도록 다음과 같이 변경 해야했습니다 sytemctl
.
확인 /etc/mysql/debian.cnf
에 대한 읽을 수있는 mysql
사용자와의
sudo chgrp mysql /etc/mysql/debian.cnf; sudo chmod 640 /etc/mysql/debian.cnf
약간 수정 된 mysql.service
파일을 제공 하십시오.
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo chmod 755 /etc/systemd/system/mysql.service
편집기에서 복사 된 파일을 열어 명시 적 중지 명령을 제공하십시오.
sudo nano /etc/systemd/system/mysql.service
[Service]
섹션 아래에 다음 줄을 추가 하십시오.
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Nano에서는 Ctrl + O를 사용하여 저장 (Linux 방식!), Ctrl + X를 사용하여 종료하십시오.
새 서비스 파일을 시스템에 알리십시오.
sudo systemctl daemon-reload
Ubuntu 15.10 Desktop과 동일한 문제가 있으며이를 해결하는 방법을 찾았습니다.
/etc/mysql/mysql.conf.d/mysqld.cnf의 log_error 매개 변수가 주석 처리되었습니다. 매개 변수를 주석 해제 한 후 systemd는 문제없이 mysqld를 종료합니다.
--log-syslog
옵션을 통해 저널에 씁니다 . 아마도 이유 : 루트 파일 시스템은 btrfs였습니다.
종료시 또는 수동으로 호출 하여 systemd 에서 지시 할 때 mysql / mariadb 와 비슷한 문제가 발생 했습니다 .sudo service mysql stop
필자의 경우 UEFI 모드에서 Ubuntu / Windows를 이중 부팅하고 있으며이 OS는 서로 다른 하드웨어 시간을 해석하므로 두 OS가 시작할 때 인터넷 시간 서버와 동기화됩니다.
실행 중 하드웨어 시간이 변경되면 MySQL (및 Mariadb)을 중지하지 못했습니다.
timesync가 끝날 때까지 MySQL 시작을 연기해야합니다. 이상적으로 이것은 mysql에 시간 의존성을 삽입하여 수행 After: time-sync
되지만 나에게는 효과가 없었습니다.
나를 위해 일한 해결책 (같은 효과를 위해 mysql을 mariadb로 대체 할 수 있음) :
로 mysql 비활성화
sudo systemctl disabled mysql.service
/usr/bin/delay_mysql
내용이 약간 지연 된 후 mysql을 시작하는 스크립트를 작성하십시오 (실행 파일인지 확인하십시오)
.
#!/bin/sh
sleep 30s
/etc/init.d/mysql start
/etc/systemd/system/delay_mysql.service
내용이 포함 된 새 스크립트를 실행하는 시스템 서비스를 작성하십시오
.
[Unit]
Description=Delay start of MySQL / MariaDB
[Service]
Type=oneshot
ExecStart=/usr/bin/delay_mysql
[Install]
WantedBy=multi-user.target
에 새로운 서비스를 등록하십시오 sudo systemctl enable delay_mysql.service
이로 인해 스크립트가 다중 사용자 수준에서 실행되며 우분투에서는 3,4,5입니다.
내 경우에 유지 보수 사용자에 대한 암호가 일치했다 debian-sys-maint
하나 사이 /etc/mysql/debian.cnf
와 MySQL 데이터베이스의 하나.
이 사용자는 MySQL 종료 및 기타 기능에 사용됩니다. MySQL 업데이트 후 파일과 데이터베이스간에 패스 불일치가 발생했을 수 있습니다. 데이터베이스를 한 MySQL에서 다른 MySQL로 옮기는 경우에도 발생할 수 있습니다. 다른 머신의 다른 MySQL에서 모든 데이터베이스와 사용자를 가져 오려면 유지 보수 사용자 ( debian-sys-maint
) 비밀번호 를 다시 동기화해야 합니다.
우분투 / 데비안 파일에서 현재 비밀번호를 확인하십시오.
sudo cat /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
시스템에서 사용할 비밀번호를 확인할 수 있습니다. password = n4aSHUP04s1J32X5
다음 단계는 MySQL을 동일한 비밀번호로 업데이트하는 것입니다. MySQL에 로그인하십시오.
~$ mysql -u root -p
MySQL에 액세스하려면 비밀번호를 입력하십시오
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';**
그 후 종료와 더 이상 문제가없고, 10 분 동안 기다릴 필요가 없으며, phpmyadmin과 같은이 유지 관리 계정을 사용하는 앱 설치에 문제가 없습니다.
업데이트 : 불행히도 이것은 문제를 해결하지 못했습니다. 그것은 임의의 종류로 만들었습니다. 때로는 서비스 중지시 다른 시간에 문제없이 서비스를 중지 할 수 있습니다.