Created
January 16, 2013 03:39
-
-
Save JagoWang/4544489 to your computer and use it in GitHub Desktop.
mysql重置root密码及相关问题
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1、编辑MySQL配置文件:my.ini | |
一般在MySQL安装目录下有my.ini即MySQL的配置文件。 | |
此配置文件最后添加一行: | |
skip-grant-tables | |
保存退出编辑。 | |
2、然后重启MySQL服务 | |
在命令行下执行: | |
net stop MySQL | |
net start MySQL | |
3、设置新的ROOT密码 | |
然后再在命令行下执行: | |
MySQL -u root -p MySQL或mysql -u root -p | |
直接回车无需密码即可进入数据库了。 | |
此时,在命令行下执行 use mysql; | |
现在我们执行如下语句把root密码更新为: | |
update user set password=PASSWORD("root") where user='root'; | |
(注意:此时不用使用mysqladmin -u root -p password '你的新密码'这条命令修改密码,因为'skip-grant-tables'配置, | |
不信的话,你可以试用一下,它肯定会报如下所示的错误: | |
F:\Documents and Settings\long>mysqladmin -u root -p password 'root' | |
Enter password: | |
Warning: single quotes were not trimmed from the password by your command | |
line client, as you might have expected. | |
mysqladmin: | |
You cannot use 'password' command as mysqld runs | |
with grant tables disabled (was started with --skip-grant-tables). | |
Use: "mysqladmin flush-privileges password '*'" instead) | |
exit 退出MySQL。 | |
4、还原配置文件并重启服务 | |
然后修改MySQL配置文件把刚才添加的那一行'skip-grant-tables'删除。 | |
再次重起MySQL服务,密码修改完毕。 | |
用新密码root试一下吧,又能登入重新进入mysql了? | |
附mysql修改密码的一些方法: | |
1. 用MYSQL的grant语句,例如 | |
mysql -h hostname –u root 命令登录到mysqld server 用grant 命令改变口令: | |
mysql -h 192.168.1.101 -u root | |
上边的192.168.1.101 是偶的mysqld 运行机器,你换成自己的,这样登录上去,就可以修改密码了, | |
其实没必要这么麻烦,直接mysql -u root就可以了。 | |
GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION | |
2. mysqladmin -u 用户名 -p 旧密码 password 新密码 | |
例1:给root 加个密码root。首先进入cmd中,然后键入 | |
以下命令,至于在CMD下能否使用mysqladmin, | |
就要看你的Windows环境变量PATH中是否添加“E:\Program Files\MySQL\MySQL Server 5.1\bin;”(请改为你自己的安装路径)了。) | |
mysqladmin -u root password root | |
注:因为开始时root 没有密码,所以-p 旧密码一项就可以省略了。 | |
例2:再将root 的密码改为admin。 | |
mysqladmin –u root -proot password admin(注意-p 不要和后面的密码分 | |
开写,要写在一起,不然会出错,错误如下所示: | |
F:\Documents and Settings\long>mysqladmin -u root -p root password admin | |
Enter password: **** | |
mysqladmin: Unknown command: 'root') | |
当然你也可以这样写:mysqladmin –u root -p password admin回车, | |
然后再输入你的旧密码,这样也是完全也可以的,看你的爱好了. | |
例3:再将root用户的密码去掉. | |
F:\Documents and Settings\long>mysqladmin -u root -p password ; | |
Enter password: root | |
此时,root用户又没有密码了.可以通过下面的方法设置: | |
F:\Documents and Settings\long>mysql -u root | |
mysql>set password for 'root'@'localhost'=password('root');(语法:SET PASSWORD FOR '用户名'@'主机' = PASSWORD('密码')) | |
mysql>set password for 'root'@'%'=password('root'); | |
//本条可选,这是在配置mysql数据库,如果你选择了允许root通过远程登录进来时,你在mysql数据库下的user表中, | |
use mysql; | |
select * from user;可以看到有两条记录,如果你没有配置这一项的话,只会第一条记录! | |
Host User Password | |
'localhost', 'root', '*9C9F4927129ECC3209D8550DC8B67156FDBF9418', ... | |
'%', 'root', '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B', ... | |
通过以上设置,root的密码将变为root这样就完成了根用户root密码的设置工作。 | |
3. use mysql; | |
update user set password =password('yourpass') where user='root' | |
(注:下面的这些方法我本人没有试过,不知对不对,我只是转载了一下:) | |
下面的方法都在mysql提示符下使用,且必须有mysql的root权限: | |
方法4 | |
mysql> INSERT INTO mysql.user (Host,User,Password) | |
VALUES('%','jeffrey',PASSWORD('biscuit')); | |
mysql> FLUSH PRIVILEGES | |
确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。 | |
在《mysql中文参考手册》里有这个例子,所以我也就写出来了。 | |
注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。 | |
方法5 | |
和方法三一样,只是使用了REPLACE语句 | |
mysql> REPLACE INTO mysql.user (Host,User,Password) | |
VALUES('%','jeffrey',PASSWORD('biscuit')); | |
mysql> FLUSH PRIVILEGES | |
方法6 | |
使用SET PASSWORD语句, | |
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit'); | |
你也必须使用PASSWORD()函数, | |
但是不需要使用FLUSH PRIVILEGES。 | |
方法7 | |
使用GRANT ... IDENTIFIED BY语句 | |
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit'; | |
这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。 | |
注:mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表, | |
否则会出现拒绝访问,还可以重新启动mysql服务器,使新设置生效。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
1.如果是linux,配置文件应为my.cnf,可以通过"find / -name my.cnf"来确定文件位置
2.skip-grant-tables添加在最后一行,这不准确。应添加在[mysqld]配置下