{"id":1836,"date":"2018-02-18T18:52:17","date_gmt":"2018-02-18T09:52:17","guid":{"rendered":"http:\/\/matoken.org\/blog\/?p=1836"},"modified":"2018-02-18T18:52:17","modified_gmt":"2018-02-18T09:52:17","slug":"i-changed-mysqls-datadir-and-it-got-scolded-by-apparmor-and-it-not-start","status":"publish","type":"post","link":"https:\/\/matoken.org\/blog\/2018\/02\/18\/i-changed-mysqls-datadir-and-it-got-scolded-by-apparmor-and-it-not-start\/","title":{"rendered":"mysql\u306edatadir\u3092\u5909\u66f4\u3057\u305f\u3089apparmor\u306b\u6012\u3089\u308c\u3066\u8d77\u52d5\u3057\u306a\u304f\u306a\u3063\u305f"},"content":{"rendered":"<p>\u30c7\u30a3\u30b9\u30af\u306e\u90fd\u5408\u3067mysql\u306e\u30c7\u30fc\u30bf\u306e\u7f6e\u304d\u5834\u6240\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\uff0e<br \/>\nmysqld\u3092\u505c\u6b62\u3057\u3066\uff0c\u30c7\u30fc\u30bf\u3092\u79fb\u52d5\u3057\u3066\uff0c\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3082\u4e00\u5fdc\u8cbc\u3063\u3066\u304a\u304f\uff0e<br \/>\n<code>\/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/code>\u3067datadir\u3092\u5909\u66f4\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span><span class=\"k\">[mysqld]<\/span>\r\n<span class=\"na\">datadir<\/span>         <span class=\"o\">=<\/span> <span class=\"s\">\/export\/data\/var\/lib\/mysql<\/span>\r\n<\/pre>\n<\/div>\n<p>\u3053\u306e\u72b6\u614b\u3067mysql\u3092\u8d77\u52d5\u3059\u308b\u3068\u3053\u3093\u306a\u611f\u3058\u306e\u30a8\u30e9\u30fc\u3067\u8d77\u52d5\u3057\u306a\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span>2018-02-17T16:12:54.184655Z 0 [ERROR] InnoDB: The innodb_system data file &#39;ibdata1&#39; must be writable\r\n2018-02-17T16:12:54.184718Z 0 [ERROR] InnoDB: The innodb_system data file &#39;ibdata1&#39; must be writable\r\n2018-02-17T16:12:54.184734Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error\r\n2018-02-17T16:12:54.785643Z 0 [ERROR] Plugin &#39;InnoDB&#39; init function returned error.\r\n2018-02-17T16:12:54.786151Z 0 [ERROR] Plugin &#39;InnoDB&#39; registration as a STORAGE ENGINE failed.\r\n2018-02-17T16:12:54.786272Z 0 [ERROR] Failed to initialize builtin plugins.\r\n2018-02-17T16:12:54.786415Z 0 [ERROR] Aborting\r\n<\/pre>\n<\/div>\n<p>\u8a72\u5f53\u30d5\u30a1\u30a4\u30eb\u306f\u4e00\u898b\u554f\u984c\u7121\u3055\u305d\u3046\u306b\u898b\u3048\u307e\u3059\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span>$ sudo ls -la \/export\/data\/var\/lib\/mysql\/ibdata1\r\n-rw-rw---- <span class=\"m\">1<\/span> mysql mysql <span class=\"m\">102760448<\/span>  2\u6708 <span class=\"m\">18<\/span> <span class=\"m\">05<\/span>:15 \/export\/data\/var\/lib\/mysql\/ibdata1\r\n$ sudo -u mysql dd <span class=\"k\">if<\/span><span class=\"o\">=<\/span>\/export\/data\/var\/lib\/mysql\/ibdata1 <span class=\"nv\">bs<\/span><span class=\"o\">=<\/span><span class=\"m\">10<\/span> <span class=\"nv\">count<\/span><span class=\"o\">=<\/span><span class=\"m\">1<\/span><span class=\"p\">|<\/span>od -xc\r\n<span class=\"m\">1<\/span>+0 \u30ec\u30b3\u30fc\u30c9\u5165\u529b\r\n<span class=\"m\">1<\/span>+0 \u30ec\u30b3\u30fc\u30c9\u51fa\u529b\r\n<span class=\"m\">10<\/span> bytes copied, <span class=\"m\">9<\/span>.8366e-05 s, <span class=\"m\">102<\/span> kB\/s\r\n<span class=\"m\">0000000<\/span>    <span class=\"m\">2214<\/span>    405b    <span class=\"m\">0000<\/span>    <span class=\"m\">0000<\/span>    <span class=\"m\">0000<\/span>\r\n        <span class=\"m\">024<\/span>   <span class=\"s2\">&quot;   [   @  \\0  \\0  \\0  \\0  \\0  \\0<\/span>\r\n<span class=\"s2\">0000012<\/span>\r\n<\/pre>\n<\/div>\n<p>\u4f55\u3067\u3060?\u3068\u601d\u3063\u305f\u3089kernel log\u306b\u3053\u3093\u306a\u30ed\u30b0\u304c\uff0eapparmor\u3067\u5f15\u3063\u304b\u304b\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span>Feb 18 00:35:26 micro kernel: [ 3569.631324] audit: type=1400 audit(1518881726.300:24): apparmor=&quot;DENIED&quot; operation=&quot;open&quot; prof\r\nile=&quot;\/usr\/sbin\/mysqld&quot; name=&quot;\/proc\/18795\/status&quot; pid=18795 comm=&quot;mysqld&quot; requested_mask=&quot;r&quot; denied_mask=&quot;r&quot; fsuid=114 ouid=114\r\n<\/pre>\n<\/div>\n<p><code>\/etc\/apparmor.d\/usr.sbin.mysqld<\/code>\u3067\u30d1\u30b9\u3092\u5909\u66f4\u3057\u307e\u3059\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span><span class=\"gh\">diff --git a\/apparmor.d\/usr.sbin.mysqld b\/apparmor.d\/usr.sbin.mysqld<\/span>\r\n<span class=\"gh\">index 2619e7d..adb8259 100644<\/span>\r\n<span class=\"gd\">--- a\/apparmor.d\/usr.sbin.mysqld   <\/span>\r\n<span class=\"gi\">+++ b\/apparmor.d\/usr.sbin.mysqld<\/span>\r\n<span class=\"gu\">@@ -46,16 +46,16 @@<\/span>\r\n   \/usr\/share\/mysql\/** r,  \r\n\r\n # Allow data dir access   \r\n<span class=\"gd\">-  \/var\/lib\/mysql\/ r,<\/span>\r\n<span class=\"gd\">-  \/var\/lib\/mysql\/** rwk,  <\/span>\r\n<span class=\"gi\">+  \/export\/data\/var\/lib\/mysql\/ r,  <\/span>\r\n<span class=\"gi\">+  \/export\/data\/var\/lib\/mysql\/** rwk,<\/span>\r\n\r\n # Allow data files dir access\r\n<span class=\"gd\">-  \/var\/lib\/mysql-files\/ r,<\/span>\r\n<span class=\"gd\">-  \/var\/lib\/mysql-files\/** rwk,<\/span>\r\n<span class=\"gi\">+  \/export\/data\/var\/lib\/mysql-files\/ r,<\/span>\r\n<span class=\"gi\">+  \/export\/data\/var\/lib\/mysql-files\/** rwk,<\/span>\r\n\r\n # Allow keyring dir access\r\n<span class=\"gd\">-  \/var\/lib\/mysql-keyring\/ r,<\/span>\r\n<span class=\"gd\">-  \/var\/lib\/mysql-keyring\/** rwk, <\/span>\r\n<span class=\"gi\">+  \/export\/data\/var\/lib\/mysql-keyring\/ r,<\/span>\r\n<span class=\"gi\">+  \/export\/data\/var\/lib\/mysql-keyring\/** rwk,<\/span>\r\n\r\n # Allow log file access \r\n   \/var\/log\/mysql.err rw,\r\n<\/pre>\n<\/div>\n<p>\u3053\u306e\u72b6\u614b\u3067apparmor\u3092\u518d\u8d77\u52d5\u3057\u3066\u8a2d\u5b9a\u3092\u53cd\u6620\u3057\u3066\u304b\u3089mysql\u3092\u8d77\u52d5\u3067OK\u3067\u3057\u305f\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span>$ sudo service apparmor restart\r\n$ sudo service mysql start\r\n<\/pre>\n<\/div>\n<p>\u3053\u306e\u5f8c<code>iostat -x<\/code>\u3092\u773a\u3081\u3066\u5927\u4e08\u592b\u305d\u3046\u304b\u306a\u30fc\u3063\u3066\u601d\u3063\u305f\u306e\u3067\u3059\u304c\u30c7\u30a3\u30b9\u30af\u30a2\u30af\u30bb\u30b9\u97f3\u304c\u5927\u304d\u304f\u306a\u3063\u305f\u306e\u3067\u307e\u305f\u5225\u306e\u5834\u6240\u306b\u79fb\u52d5\u3059\u308b\u304b\u3082\u2026\u2026\uff0e<\/p>\n<h2 id=\"_1\">\u74b0\u5883<\/h2>\n<div class=\"codehilite\">\n<pre><span><\/span>$ dpkg-query -W mysql-server\r\nmysql-server    <span class=\"m\">5<\/span>.7.21-0ubuntu0.16.04.1\r\n$ lsb_release -a\r\nDistributor ID: Ubuntu\r\nDescription:    Ubuntu <span class=\"m\">16<\/span>.04.3 LTS\r\nRelease:        <span class=\"m\">16<\/span>.04\r\nCodename:       xenial\r\n$ uname -m\r\nx86_64\r\n<\/pre>\n<\/div>\n<p><iframe style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"\/\/rcm-fe.amazon-adsystem.com\/e\/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=matokensmeme-22&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=B01N2IOECK&#038;linkId=5023aca8392937aac60ea15e5c81491b\"><\/iframe><iframe style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"\/\/rcm-fe.amazon-adsystem.com\/e\/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=matokensmeme-22&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=B00TMYLDMY&#038;linkId=b57fc3a74af338bc4f7468e952ffddf7\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30c7\u30a3\u30b9\u30af\u306e\u90fd\u5408\u3067mysql\u306e\u30c7\u30fc\u30bf\u306e\u7f6e\u304d\u5834\u6240\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\uff0e mysqld\u3092\u505c\u6b62\u3057\u3066\uff0c\u30c7\u30fc\u30bf\u3092\u79fb\u52d5\u3057\u3066\uff0c\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3082\u4e00\u5fdc\u8cbc\u3063\u3066\u304a\u304f\uff0e \/etc\/mysql\/mysql.conf.d\/mysqld.cnf\u3067data [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[6,63,152],"tags":[321,57],"class_list":["post-1836","post","type-post","status-publish","format-standard","hentry","category-linux","category-ubuntu","category-xenial16-04","tag-apparmor","tag-mysql"],"_links":{"self":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/1836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/comments?post=1836"}],"version-history":[{"count":0,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/1836\/revisions"}],"wp:attachment":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/media?parent=1836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/categories?post=1836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/tags?post=1836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}