Mysql忘记root用户

修改口令必须要连接服务器才能修改口令,如果不知道root口令,就只能先强行关停服务器,然后在不适用权限表验证的请款下重新启动服务器。

一、关停服务器

如果是在Linux系统下:

①、以系统的root用户登陆,进入终端;

②、杀掉mysql进程

方法1、killall mysqld

方法2、ps -aux  

查看所有的进程,找到mysql的进程pid,  然后执行命令:

kill pid

 (pid是mysql的进程号)

 

如果服务器受到干扰和对正常终止信号无响应,则可使用kill -9强制终止服务器,命令如下:

kill -9 pid
注意,kill -9是最后不得已的手段,因为内存中可能有未更新的修改,而且有数据表不一致的危险。

  如果使用mysql_safe启动服务器,将会监视该服务器是否异常终止。如果利用kill -9 终止服务器,mysql_safe将会使它立即重启。为了避免这点,要先确定mysqld_safe进程的PID,并在结束mysqld后首先结束该进程。

 

如果在windows下,即使不知道扣扣了也可以正常关停服务器,可以使用服务管理程序或者使用以下命令:

net stop MySQL

如果正常情况无法关闭,可以使用任务管理器强制终止服务器,这是最后不得已的手段。

 

二、用---skip_grant_tables选项重新启动服务器,

如果在linux下(windows下基本类似):

/usr/local/mysql/bin/mysqld_safe --skip-grant-tables,

然后执行以下命令进入mysql,

/usr/local/mysql/bin/mysql

接着切换到mysql 数据库,

mysql> USE MYSQL

禁止使用验证链接用的权限表格,因此可以不用口令,二用所有权限进行连接,但是这会让服务器完全开放,其他人也可以以同样的方法链接。因此连接上 后,立即发出FLUSE PRIVILEGES 语句:

mysql> FLUSE PRIVILEGES;

FLUSH告知服务器要重新读取权限表,使用表格进行访问控制。虽然你仍然保持连接,但服务器需要用权限表验证其他客户进行任何连接。FLUSH语句还重新启动SET PASSWORD语句,因为该语句在服务器不用权限表时被禁用。在重新载入该表后,就可以用SET PASSWORD或UPDATE改变root口令,如

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456);

 

三、在修改root口令之后,关闭服务器并按照正常过程重新启动它,然后就可以使用新的口令以root用户的身份登录了。

猜你喜欢

转载自daiyuok.iteye.com/blog/1676655