忘记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”。
应能使用新密码进行连接。