这个是网上流传较广的方法,mysql中文参考手册上的
linux系统下的:
1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。
1. /etc/init.d/mysqld stop
# 停止现有的mysql 服务
2. cd /usr/local/mysql
3. ./mysqld_safe --skip-grant-tables&
#安全模式启动mysql
4. /bin/mysql
# 进入mysql cli
5. 在mysql>提示符
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set select_priv='Y' , Insert_priv='Y', Update_priv='Y', delete_priv='Y', Create_priv='Y',Drop_priv='Y',Reload_priv='Y', shutdown_priv='Y', Process_priv='Y', File_priv='Y', Grant_priv='Y',references_priv='Y',Index_priv='Y', Alter_priv='Y', Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y' where user='root';
# 上面的命令在一行
Query OK, 0 rows affected (0.00 sec)
Rows matched: 3 Changed: 0 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
6、kill %1
ps –ef |grep msyqld 把mysqld_safe那个进程杀掉
或者/etc/init.d/mysqld stop
7、/etc/init.d/mysqld start 重新启动mysql服务
如何清空mysql权限?
清空mysql 所有用户: 存在一定风险,谨慎操作。
/etc/init.d/mysqld stop
#停止服务
cd /var/lib/mysql
mv mysql mysql-bak-20080327
#备份一个
cd /usr/local/squid/wt/bin
./mysql_install_db
#重新安装mysql用户库 (不知道为何带-u mysql就出错,只要不带-u了)
chown mysql.mysql /var/lib/mysql/mysql –R
#因为上面没带-u ,所以需要把owner改一下
/etc/init.d/mysqld start
#启动mysqld
这时候mysql 的root密码为空,所有用户被清空需要重新grant权限。
windows系统下的:
修正一下:我在Windows下的实际操作如下
1.关闭正在运行的MySQL。
2.打开DOS窗口,转到mysql\bin目录。
3.输入
mysqld-nt --skip-grant-tables 回车。如果没有出现提示信息,那就对了。
4.再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
5.输入mysql回车,如果成功,将出现MySQL提示符 >
6. 连接权限数据库
>use mysql;
(>是本来就有的提示符,别忘了最后的分号)
6.改密码:
> update user set password=password("123456") where user="root"; (别忘了最后的分号)
7.刷新权限(必须的步骤)
>flush privileges; 8.退出 > \q9.注销系统,再进入,开MySQL,使用用户名root和刚才设置的新密码123456登陆。