修改口令必须要连接服务器才能修改口令,如果不知道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用户的身份登录了。