mysql忘记密码真的需要重启服务吗?

先提个问题:如何不重启mysqld,且没有权限修改用户账号和权限的情况下,如何重新设置root密码?不知道没关系,在此之前我也是不知道如何操作的,先看看下面的几种重置root密码的方法。

1、skip-grant-tables

我们常用的方法是使用skip-grant-tables选项,mysqld server启动之后并不使用权限系统(privilege system)。用户不需要任何账号、不受任何限制的访问数据库中所有数据。为了安全起见,通常加上skip-networking,mysqld不侦听任何TCP/IP连接请求。操作过程如下,

1)修改my.cnf配置文件,在mysqld选项中添加skip-grant-tables和skip-networking。

2)再重启mysqld server。

3)通过sql语句修改mysql.user表中存储密码。执行flush privileges,重新启用mysql权限系统。

update mysql.user set password=password(‘newpassword‘) where user=‘root‘;
flush privileges;

4)删除或者注释配置文件中skip-grant-tables和skip-networking的参数选项。如果使用skip-networking,则需要再次重启mysqld。因为skip-networking不是系统变量,只是mysqld的参数选项,而不能通过系统变量动态进行设置。如果没有适用skip-networking,只需要执行flush privileges就可以使权限系统重新生效。

2. --init-file

mysqld_safe可以使–init-file参数选项来执行重新设定密码的sql语句。

1)新建一个初始化文件,如/tmp/initfile,文件内容为上面修改密码的sql语句。

update mysql.user set password=password(‘newpassword‘) where user=‘root‘;

flush privileges;

2)关闭mysqld服务进程。

3)使用mysqld_safe启动mysqld;

mysqld_safe --init-file=/tmp/initfile &

上面的两种方法是在忘记root密码情况下重新设置密码的方法,可以发现都需要重启mysqld服务。很多人都是使用第一种进行重置root密码,但是比较推荐的做法反而是第二种,即安全有快捷简单。

3、不重启mysqld的方法

1)首先得有一个可以拥有修改权限的mysql数据库账号,当前的mysql实例账号(较低权限的账号,比如可以修改test数据库)或者其他相同版本实例的账号。把data/mysql目录下面的user表相关的文件复制到data/test目录下面。

mv mysql/user.* test/
chown mysql:mysql test/user.*

2)使用另一个较低权限的账号链接数据库,设置test数据库中的user存储的密码数据。

[[email protected] test]# mysql -utest -ptest
Warning: 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 5
Server version: 5.6.31-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
(product)[email protected] [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)
(product)[email protected] [(none)]> update test.user set password=password(123456) where user=‘root‘;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    6
Current database: *** NONE ***
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
(product)[email protected] [(none)]> select user,host from test.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | localhost |
| test | localhost |
+------+-----------+
2 rows in set (0.00 sec)
(product)[email protected] [(none)]> quit
Bye

3)把修改后的user.MYD和user.MYI复制到mysql目录下,记得备份之前的文件。

mv test/user.* ../mysql/
chown mysql:mysql test/user.*

4、查找mysql进程号,并且发送SIGHUP信号,重新加载权限表。

[[email protected] mysql]# pgrep -n mysql

19764

[[email protected] mysql]# kill -SIGHUP 19764

5.登陆测试

[[email protected] mysql]# mysql -uroot -p123456
Warning: 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 7
Server version: 5.6.31-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
(product)[email protected] [(none)]> quit
Bye
时间: 2024-10-07 12:43:27

mysql忘记密码真的需要重启服务吗?的相关文章

mysql忘记密码,如何重置密码

方法,教你两招重置root密码! 1.使用mysqladmin修改mysql密码 C:\>mysqladmin -udbuser -p password newpass Enter password: oldpass 当然用此命令的前提是你把mysql加入了环境变量,如果没有加入环境变量的话那只能在命令行下cd到mysqladmin所在的 目录下与此那个次命令了! 2.重置root密码 方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,

mysql忘记密码时 恢复管理员密码

# service mysql stop # service mysqlstart --skip-grant-tables      //跳过授权表启动MySQL服务程序 # mysql -u root                               //不需要密码登录 mysql> update mysql.user set password=password('123456') where host="localhost";  //通过修改mysql库中user表

ubuntu14下mysql忘记密码的处理

ubuntu14下mysql忘记密码的处理 ubuntu14.04忘记了mysql的用户(root)的密码.接下来: 1) 停止mysql服务 $ sudo stop mysql 2) 启动mysqld_safe $ sudo /usr/bin/mysqld_safe --skip-grant-tables& $ mysql --user=root mysql mysql> update user set Password=PASSWORD('新密码') where user='root';

Mysql忘记密码,支持中文,tab补全

忘记Mysql密码: (1)暂停服务: /etc/init.d/mysqld stop (2)跳过grant表授权,进入安全模式,并在后台运行: mysqld_safe --skip-grant-tables & mysqld_safe --skip-grant-tables --defoults-file=/data/3306/my.cnf & #多实例 jobs [1]+ Running mysqld_safe --skip-grant-tables & (3)进入安全模式修改

MySQL忘记密码处理

原文:MySQL忘记密码处理 登录MySQL,密码输入错误 /* 密码错误,报如下错误 */ [[email protected] ~]# mysql -uroot -p -P3306 Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 如果忘记密码,对于MySQL而言处理起来也相对比较简单.但需要修改配置,重启数据库.可以按照如下步骤处理. 1. 

mysql 忘记密码,如何重新设置新密码(mysql5.6已测试过OK)

mysql 忘记密码了怎么办? 1. 关闭mysql service. 2. 新建一个 c:\my-init.txt 的文本文件,重设你的新密码到newpassword处,内容如下: UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root'; FLUSH PRIVILEGES; 3. 开一个新的命令行,并输入如下图所示命令(这是按mysql向导安装的,如此处理就可以): my.ini文件的path按下图去获取

MySQL忘记密码怎么修改密码

MySQL的 root 帐号密码默认为空,经常都有修改密码后忘记密码的事.如果忘记了root 帐号密码,那该怎么修改密码呢?这里有一个可行的方法,就是在MySQL安全模式下(跳过权限检查)修改密码的方式来解决这个问题.本文分别对Windows环境与Linux环境下介绍MySQL忘记密码时修改密码的方法,希望帮助初学者解决丢失密码的烦恼. Windows下MySQL重置密码 通常MySQL都是安装成Windows服务运行的. 1.启动cmd命令窗口: # 关闭MySQL服务   D:\MySQL\

mysql忘记密码后如何重置??

mysql忘记密码后如何重置?? 背景:今天要用mysql数据库做测试,测试机上的mysql忘记密码了,怎么办呢? 下面是解决办法. 如果 MySQL 正在运行,首先杀之: killall -TERM mysqld. 启动 MySQL :/usr/bin/safe_mysqld --skip-grant-tables & 就可以不需要密码就进入 MySQL 了.然后就是>use mysql>update user set password=password("new_pass

windows主机mysql忘记密码如何重置

本文主要是针对mysql重置密码过程中出现“mysqld不是内部命令或外部命令”的问题而写的.网上有很多关于mysql忘记密码了如何找回的文章,但是很多说的都不够详细,特别是还要用到DOS命令,可能这对于很大一部分刚接触这方面的朋友来说还是个难题.本文针对网上教程中有难点和疑惑的步骤进行再次剖析,如果能让你少走一步弯路,那我的目的也就达到了.下面是网上流传最多的方法,原作者无从知晓,这里表示感谢. 关闭正在运行的MySQL. 打开DOS窗口,转到mysqlbin目录. 输入mysqld --sk