看开 發表於 2023-11-27 00:00:00

详解如何在Linux中重置MySQL或者MariaDB的root密码

<p>
        如果你是第一次设置 MySQL 或 MariaDB 数据库,你可以直接运行 mysql_secure_installation 来实现基本的安全设置。</p>
<p>
        其中一项是设置数据库 root 帐户的密码 - 你必须保持私密,并仅在绝对需要时使用。如果你忘记了密码或需要重置密码(例如,当数据库管理员换人或被裁员!),这篇文章会派上用场。我们将解释如何在 Linux 中重置或恢复 MySQL 或 MariaDB 的 root 密码。</p>
<p>
        虽然我们将在本文中使用 MariaDB,但这些说明同样也适用于 MySQL。</p>
<p>
        <strong>恢复 MySQL 或者 MariaDB 的 root 密码</strong></p>
<p>
        开始之前,先停止数据库服务并检查服务状态,我们应该可以看到先前设置的环境变量:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_592222">
                        <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>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">------------- SystemD ------------- </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash comments"># systemctl stop mariadb</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">------------- SysVinit -------------</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash comments"># /etc/init.d/mysqld stop</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        接下来,用 --skip-grant-tables 选项启动服务:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_684599">
                        <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>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">------------- SystemD ------------- </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash comments"># systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash comments"># systemctl start mariadb</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash comments"># systemctl status mariadb</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">------------- SysVinit -------------</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash comments"># mysqld_safe --skip-grant-tables &amp;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <img title="详解如何在Linux中重置MySQL或者MariaDB的root密码" alt="详解如何在Linux中重置MySQL或者MariaDB的root密码" src="https://zhuji.jb51.net/uploads/img/202305/92f58007d60e6e7bd55c2f2580e3f8ad.jpg"></p>
<p>
        这可以让你不用 root 密码就能连接到数据库(你也许需要切换到另外一个终端上):</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_414036">
                        <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="bash comments"># mysql -u root</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="syntaxhighlightersql" id="highlighter_877966">
                        <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>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">MariaDB [(none)]&gt; USE mysql;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">MariaDB [(none)]&gt; </code><code class="sql keyword">UPDATE</code> <code class="sql color2">user</code> <code class="sql keyword">SET</code> <code class="sql keyword">password</code><code class="sql plain">=</code><code class="sql keyword">PASSWORD</code><code class="sql plain">(</code><code class="sql string">'YourNewPasswordHere'</code><code class="sql plain">) </code><code class="sql keyword">WHERE</code> <code class="sql color2">User</code><code class="sql plain">=</code><code class="sql string">'root'</code> <code class="sql color1">AND</code> <code class="sql plain">Host = </code><code class="sql string">'localhost'</code><code class="sql plain">;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql plain">MariaDB [(none)]&gt; FLUSH </code><code class="sql keyword">PRIVILEGES</code><code class="sql plain">;</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="syntaxhighlighterbash" id="highlighter_460409">
                        <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>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">------------- SystemD ------------- </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash comments"># systemctl stop mariadb</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash comments"># systemctl unset-environment MYSQLD_OPTS</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash comments"># systemctl start mariadb</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">------------- SysVinit -------------</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash comments"># /etc/init.d/mysql stop</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash comments"># /etc/init.d/mysql start</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>
<p>
        <strong>总结</strong></p>
<p>
        本文我们讨论了如何重置 MariaDB/MySQL 的 root 密码。一如往常,如果你有任何问题或反馈请在评论栏中给我们留言。我们期待听到你的声音。</p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
        原文链接:https://linux.cn/article-8301-1.html</p>
頁: [1]
查看完整版本: 详解如何在Linux中重置MySQL或者MariaDB的root密码