MySQL中root用户密码管理
<h2 id="前言">前言</h2><p>记录一下mysql中root用户密码的管理方式,mysql中root用户密码管理方式主要分为三个场景:</p>
<ul>
<li>场景一:首次部署mysql,需要设置root用户密码</li>
<li>场景二:已知mysql的root用户密码,但是需要修改对应的密码(例如定期更新密码)</li>
<li>场景三:忘记root密码,需重置root用户密码</li>
</ul>
<h2 id="首次部署mysql设置root用户密码">首次部署mysql,设置root用户密码</h2>
<h3 id="方式一在初始化数据库时设置">方式一:在初始化数据库时设置</h3>
<pre><code>#此方式是给root用户设置临时密码,但应用临时密码登录数据库服务后,需要将临时密码修改,否则不能进行任何操作
mysqld --initialize--user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
# 参数解析
# --user:指定Linux系统用户
# --datadir:指定数据目录
# --basedir:指定按照目录
</code></pre>
<h3 id="方式二手动设置">方式二:手动设置</h3>
<h4 id="mysql80版本">mysql8.0版本</h4>
<pre><code>mysqladmin -uroot password '新密码';
#或者 此方法需要登录到MySQL系统中
alter user root@'localhost' identified by '新密码';
</code></pre>
<h4 id="mysql57版本">mysql5.7版本</h4>
<pre><code>mysqladmin -uroot password '新密码';
#或者 此方法需要登录到MySQL系统中
alter user root@'localhost' identified by '新密码';
</code></pre>
<h4 id="mysql56版本">mysql5.6版本</h4>
<pre><code>set password for 'oldboy'@'localhost'=PASSWORD('新密码');
flush privileges;
</code></pre>
<p>补充:<code>flush privileges</code>的作用:</p>
<ul>
<li>作用一:将内存中操作的数据落到磁盘上</li>
<li>作用二:将磁盘中的数据加载到内存中</li>
</ul>
<p>此命令只针对授权表中的数据</p>
<h2 id="已知root用户密码修改root用户密码">已知root用户密码,修改root用户密码</h2>
<h3 id="mysql80版本-1">mysql8.0版本</h3>
<pre><code>mysqladmin -uroot -p老密码 password '新密码'
#或者登录进数据库中执行
alter mysql.user root@'localhost' identified by '新密码';
</code></pre>
<h3 id="mysql57版本-1">mysql5.7版本</h3>
<pre><code># 需登录进数据库中
update mysql.user set authentication_string=PASSWORD('新密码') where user='root' and host='localhost';
flush privileges;
</code></pre>
<h3 id="mysql56版本-1">mysql5.6版本</h3>
<pre><code># 需登录进数据库中
set password for 'root'@'localhost'=PASSWORD('新密码');
flush privileges;
</code></pre>
<h2 id="忘记root密码需重置root用户密码">忘记root密码,需重置root用户密码</h2>
<h3 id="步骤一关闭数据库服务">步骤一:关闭数据库服务</h3>
<pre><code># /etc/init.d/mysqld stop
# 检查是否已关闭
# ps -ef | grep mysqld
root 4070896 40688300 15:24 pts/0 00:00:00 grep mysqld
</code></pre>
<h3 id="步骤二采用安全模式启动数据库可以免密连接数据库">步骤二:采用安全模式启动数据库(可以免密连接数据库)</h3>
<pre><code># 输入mysqld_safe --skip-grant-tables --skip-networking & 即可
# mysqld_safe --skip-grant-tables --skip-networking &
4071155
# 2025-10-28T07:25:16.184768Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2025-10-28T07:25:16.211299Z mysqld_safe Starting mysqld daemon with databases from /data00/data/mysql
</code></pre>
<h3 id="步骤三进入数据库修改密码">步骤三:进入数据库修改密码</h3>
<pre><code># 2025-10-28T07:25:16.184768Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2025-10-28T07:25:16.211299Z mysqld_safe Starting mysqld daemon with databases from /data00/data/mysql
# 输入mysql -uroot 即可
mysql -uroot
# 修改密码
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> alter user root@'localhost' identified by 'huangsir';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
# 退出数据库
mysql> exit;
</code></pre>
<h3 id="步骤四恢复数据库服务正常启动">步骤四:恢复数据库服务正常启动</h3>
<pre><code># 先杀掉进程
# pkill mysql
# 检查进程是否杀掉
# ps -ef | grep mysql
root 4072026 40688300 15:29 pts/0 00:00:00 grep mysql
# 启动mysql
# /etc/init.d/mysqld start
Starting mysqld (via systemctl): mysqld.service.
</code></pre>
<h3 id="测试连接">测试连接</h3>
<pre><code># mysql -uroot -phuangsir
mysql: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26 MySQL Community Server - GPL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
</code></pre>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:huangSir-devops,转载请注明原文链接:https://www.cnblogs.com/huangSir-devops/p/19171958,微信Vac6666666,欢迎交流</p><br><br>
来源:https://www.cnblogs.com/huangSir-devops/p/19171958
頁:
[1]