web-dev-qa-db-ja.com

my.cnfを編集した後、MySQLが起動しない

My.cnfを使用して、MySQLのメモリ使用量を最適化しようとしています(デフォルトで500MB以上を消費しています)が、問題があります。カスタムmy.cnfを配置した後、サービスが開始されません。デフォルトのmy.cnfにフォールバックすると、動作状態に戻ります。

MySQLバージョン:

mysql Ver 14.14 Distrib 5.7.19、EditLineラッパーを使用するLinux(x86_64)用

OSバージョン:

DISTRIB_ID = Ubuntu DISTRIB_RELEASE = 17.04 DISTRIB_CODENAME = zesty DISTRIB_DESCRIPTION = "Ubuntu 17.04"

Linux 4.10.0-32-generic#36-Ubuntu SMP Tue Aug 8 12:10:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

これが私の/etc/mysql/my.cnfです(メモリサイズパラメータ0.25で myconfgen を使用して生成):

[mysql]
# CLIENT #
port                           = 3306
socket                         = /var/lib/mysql/mysql.sock

[mysqld]
# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /var/lib/mysql/mysql.sock
pid-file                       = /var/run/mysqld/mysqld.pid

# MyISAM #
# key-buffer-size                = 32M
# myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000
skip-name-resolve
sql-mode                       = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
sysdate-is-now                 = 1
innodb-strict-mode             = 1

# DATA STORAGE #
datadir                        = /var/lib/mysql

# SERVER ID #
server-id                      = 968898

# BINARY LOGGING #
log-bin

# CACHES AND LIMITS #
max-connections                = 500
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 1024
table-open-cache               = 2048

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 768M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 192M

# LOGGING #
log-error                      = /var/log/mysqld.log
slow-query-log                 = 1
slow-query-log-file            = /var/log/mysqld-slow.log
log-queries-not-using-indexes  = OFF
long_query_time                = 30

[mysqldump]
max-allowed-packet             = 16M

MySQLを起動しようとすると、次のようになります。

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (start-post) (Result: exit-code) since Mon 2017-08-21 12:09:51 UTC; 1s ago
  Process: 14659 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 14643 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 14659 (code=exited, status=1/FAILURE); Control PID: 14660 (mysql-systemd-s)
    Tasks: 2 (limit: 4915)
   Memory: 760.0K
      CPU: 223ms
   CGroup: /system.slice/mysql.service
           └─control
             ├─14660 /bin/bash /usr/share/mysql/mysql-systemd-start post
             └─14669 sleep 1

/var/log/mysql.logには何もありません。他にエラーログを探す場所がわかりません。手伝ってくれませんか?

編集:私はjournalclを実行し、より多くのエラーログを見つけました:

    -- Unit mysql.service has begun starting up.
Aug 21 13:04:46 www.####.com kernel: audit: type=1400 audit(1503320686.962:1051): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/18169/status" pid=18169 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Aug 21 13:04:46 www.####.com audit[18169]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/18169/status" pid=18169 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Aug 21 13:04:46 www.####.com audit[18169]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=18169 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0
Aug 21 13:04:46 www.####.com kernel: audit: type=1400 audit(1503320686.974:1052): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=18169 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0
Aug 21 13:04:46 www.####.com audit[18169]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/18169/status" pid=18169 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Aug 21 13:04:46 www.####.com kernel: audit: type=1400 audit(1503320686.978:1053): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/18169/status" pid=18169 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com audit[18169]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com audit[18169]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com audit[18169]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com audit[18169]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com audit[18169]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com audit[18169]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com kernel: audit: type=1400 audit(1503320687.182:1054): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com kernel: audit: type=1400 audit(1503320687.182:1055): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com kernel: audit: type=1400 audit(1503320687.182:1056): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com kernel: audit: type=1400 audit(1503320687.182:1057): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com kernel: audit: type=1400 audit(1503320687.182:1058): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com kernel: audit: type=1400 audit(1503320687.182:1059): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/log/mysqld.log" pid=18169 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Aug 21 13:04:47 www.####.com systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILUREl.service: Main process exited, code=exited, status=1/FAILURE
1
Spero

コメントには大きすぎます。

比較のために、カスタムの「my.cnfファイル」の内容を貼り付けます。これを生成するコマンドはgrep -v "#" mysqld.cnfで実行されました/etc/mysql/mysql.conf.d

私のファイル権限は-rw-r--r-- 1 root root 3432 Sep 21 2016 mysqld.cnfです

あなたの投稿が示すことに注意してください

log-error = /var/log/mysqld.log

ダッシュ付き-

私のものは

 log_error = /var/log/mysql/error.log

アンダースコア付き。これが重要かどうかわからない。ファイルも空です。

私はあなたのApparmor設定がmysqlが/ var/logにファイルを作成するのを妨げていると思う/ var/logのサブディレクトリを試してください。/var/log/mysql。 /etc/apparmor.d/usr.sbin.mysqldを確認してください

簡単な解決策:systemctl stop apparmorでApparmorを一時的にオフにします。次に、mysqlを起動します。 mysqlを停止します。 apparmor設定を修正しました。私の場合は以下を参照してください。

(また、私の実際の値bind-addressは実際には表示されている値とは異なります)

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
Nice        = 0

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /data2/mysql/data

tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address        = 127.0.0.1  ### FAKE
key_buffer_size     = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
myisam-recover-options  = BACKUP
query_cache_type = ON
query_cache_limit   = 1M
query_cache_size        = 16M
log_error = /var/log/mysql/error.log
expire_logs_days    = 10
max_binlog_size   = 100M

 # typo3 CMS  works better this way
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

MySQL Devserverの私のapparmor設定ファイル

/etc/apparmor.d/usr.sbin.mysqld

# vim:syntax=apparmor
# Last Modified: Tue Feb 09 15:28:30 2016
#include <tunables/global>

/usr/sbin/mysqld {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/mysql>
  #include <abstractions/winbind>

# Allow system resource access
  /sys/devices/system/cpu/ r,
  capability sys_resource,
  capability dac_override,
  capability setuid,
  capability setgid,

# Allow network access
  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

# Allow config access
  /etc/mysql/** r,

# Allow pid, socket, socket lock file access
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock rw,
  /var/run/mysqld/mysqld.sock.lock rw,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock rw,
  /run/mysqld/mysqld.sock.lock rw,

# Allow execution of server binary
  /usr/sbin/mysqld mr,
  /usr/sbin/mysqld-debug mr,

# Allow plugin access
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,

# Allow error msg and charset access
  /usr/share/mysql/ r,
  /usr/share/mysql/** r,

# Allow data dir access
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,

# Allow data files dir access
  /var/lib/mysql-files/ r,
  /var/lib/mysql-files/** rwk,

# Allow keyring dir access
  /var/lib/mysql-keyring/ r,
  /var/lib/mysql-keyring/** rwk,

# Allow log file access
  /var/log/mysql.err rw,
  /var/log/mysql.log rw,
  /var/log/mysql/ r,
  /var/log/mysql/** rw,

  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.sbin.mysqld>
}
1
knb