mysql忘记密码怎么改

忘记mysql登录密码的修改方法:

      方法原理:mysqld服务器安装的时候一步操纵就是需要初始化数据操纵。初始化后会有mysql数据库,里面有默认的表,其中mysqld在启动时候会将user、db、host、tables_priv、columns_priv、procs_priv这6张表读入内存当中。这6张表是对mysql用户和其操纵进行认证的,其中user表是存放数据库用户信息,db是数据库级别的认证,host默认是空,可以添加用户对mysql数据库的访问控制信息,tables_priv是表级别控制,columns_priv是列级别控制,procs_priv是进程级别的控制。

     客户端在进行连接mysql服务器是要经历两个阶段:

        阶段1:服务器检查是否允许你连接。 

阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。

这里的修改方法就是在启动数据库的时候不去检查user表中用户控制信息,使用指定的选项文件来启动数据库。

一种方法是修改启动脚本文件

   编辑启动脚本,启动mysql_safe是传递两个参数

    --skip-grant-tbales  设定跳过授权表登录

    --skip-networking   设定不允许网络访问,只能本地主机访问

    启动服务器后使用更新授权表的方式修改user表的密码,移除配置文件的两个选项在重新启动服务器,可以使用新密码连接登录


另一种方法:指定启动选项文件

windows下的修改方法:

安装mysql的时候默认是root用户,密码为空。

作为管理员,假如忘记了密码,可以根据以下步骤来修改密码登录。

一、如果mysqld服务器此时处于运行状态,要关闭mysqld服务器。

             开始菜单->控制面板->管理工具->服务

            然后在列表中找出MySQL服务器,并停止它。或者通过任务管理器来停止。

二、创建一个文本文件,在单一第一行中写入

             SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

             用任意名称保存该文件。在本例中,该文件为C:\mysql-init.txt。

        三、打开控制台窗口,进入DOS命令提示:

              开始菜单->运行-> cmd

              假定你已将MySQL安装到C:\mysql。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。在DOS命令提示符下,执行命令:

              C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt

              在服务器启动时,执行由“--init-file”选项命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:\mysql-init.txt。

        四、使用新密码连接mysql服务器


             如果你使用MySQL安装向导安装了MySQL,或许需要指定“--defaults-file”选项:

             C:\> C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld-nt.exe

              --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini"

              --init-file=C:\mysql-init.txt

            使用服务管理器,可找到恰当的“--defaults-file”设置:

            开始菜单->控制面板->管理工具->服务

           在列表中找出MySQL服务,右击,并选择“属性”选项。在可执行字段的Path(路径)中包含“--defaults-file”设置。

             停止MySQL服务器,然后在正常模式下重启它。如果以服务方式运行服务器,应从Windows服务窗口启动它。如果以手动方式启动了服务器,能够像正常情形下一样使用命令。

            应能使用新密码进行连接。


在linux系统下的修改方法:

     一、如果服务器是运行状态,需要停止服务器。找到mysqld的进程ID,将其杀死。

         使用netstat -tunlp | grep mysqld 查看进程或者查看mysqld进程文件,常见位置是/var/lib/mysql/、/var/run/mysqld/和/usr/local/mysql/data/。

         一般情况下,文件名的扩展名为.pid,

     二、创建文本文件,并将下述命令放在文件内的1行上:

          SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

         用任意名称保存文件。对于本例,文件为/var/a.txt。

         用特殊的“--init-file=~/mysql-init”选项重启MySQL服务器:

     三、启动服务器

        [root@localhost bin]# /usr/bin/mysqld_safe --init-file=/var/a.txt &

        [1] 7375

        [root@localhost bin]# 150701 10:31:38 mysqld_safe Logging to '/var/log/mysqld.log'.

        150701 10:31:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

        表示服务器启动成功。

        文件init-file的内容在服务器启动时执行,更改根用户密码。服务器成功启动后,应删除~/mysql-init。

     四、使用新密码连接数据库

         [root@localhost var]# mysql -u root -h localhost -p

          Enter password: 

          Welcome to the MySQL monitor.  Commands end with ; or \g.

          Your MySQL connection id is 2

          Server version: 5.1.66 Source distribution

          Copyright (c) 2000, 2012, 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.

          mysql>


作为可选方式,在任何平台上,可使用mysql客户端设置新密码(但该方法不够安全):

停止mysqld,并用“--skip-grant-tables --user=root”选项重启它(Windows用户可省略--user=root部分)。使用下述命令连接到mysqld服务器:

shell> mysql -u root

在mysql客户端发出下述语句:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd')

    ->                   WHERE User='root';

mysql> FLUSH PRIVILEGES;

用打算使用的实际根用户密码替换“newpwd”。


应能使用新密码进行连接。


你可能感兴趣的:(windows,服务器,忘记密码,管理员,mysql登录密码)