朱培民 發表於 2023-10-13 00:00:00

CentOS7中MariaDB修改datadir后无法启动的解决方法

<p>
        <span><strong>发现问题</strong></span></p>
<p>
        最近想把服务器的CentOS 6.8升级上CentOS7。但是失败了,重装了系统,重装以后挂载好数据盘后发现MariaDB起不来了,查journal log,只有一行warning</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxhtml" id="highlighter_746555">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xhtml plain">can't create test file /var/lib/mysql/core.lower-test</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span><strong>解决方法</strong></span></p>
<p>
        在网上查了一下,有两种方案</p>
<p>
             第一是说selinux导致的,但是ucloud的镜像默认就是关闭selinux的,所以不是这个问题</p>
<p>
             第二说是apparmor限制了进程的目录读写,但是那是Ubuntu下默认安装的,CentOS下没有这个东西,所以也不是这个问题。</p>
<p>
        其他文件权限之类的都检查过了,而且是直接继承的旧磁盘数据,也不会出现问题。</p>
<p>
        这时我发现,如果直接用<code>mysqld_safe</code>和<code>mysqld</code>命令,跳过<code>systemctl</code>启动进程,能够让MariaDB正常起来,于是就去检查mariadb.service</p>
<p>
        发现其中有一行</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxhtml" id="highlighter_578376">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xhtml plain">ProtectHome=true</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        注释是</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxhtml" id="highlighter_825124">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xhtml plain"># Prevent accessing /home, /root and /run/user</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        而我的<code>datadir=/home/mysql</code></p>
<p>
        于是把它改成false,就能够正常启动服务了</p>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是为大家总结的CentOS7系统中MariaDB修改datadir后无法启动的解决办法,希望本文的内容对同样遇到这个问题的朋友们能有所帮助,如果有疑问大家可以留言交流。</p>
頁: [1]
查看完整版本: CentOS7中MariaDB修改datadir后无法启动的解决方法