linux下mysql的root修改密码忘记解决方法

修改密码:
 
1. 例如你的 root 用户现在没有密码,你希望的密码修改为 123456 ,那么命令是:
mysqladmin -u root password 123456
 
2. 如果你的 root 现在有密码了( 123456 ),那么修改密码为 abcdef 的命令是:
mysqladmin -u root -p password abcdef 
注意,命令回车后会问你旧密码,输入旧密码 123456 之后命令完成,密码修改成功。
 
3. 如果你的 root 现在有密码了( 123456 ),那么修改密码为 abcdef 的命令是:
mysqladmin -u root -p123456 password abcdef ( 注意 -p 不要和后面的密码分
开写,要写在一起 , 不然会出错 , 错误如下所示 )
 
4. 使用 phpmyadmin ,这是最简单的了,修改 MySQL 库的 user 表,
不过别忘了使用 PASSWORD 函数。
 
忘记密码:
下面我们提供了 6 种不同的修改 mysql root 用户的密码,与增加 mysql 用户的方法。
方法一:  
使用 phpmyadmin ,这是最简单的了,修改 mysql 库的 user 表,  
不过别忘了使用 PASSWORD 函数。  
 
方法二:  
使用 mysqladmin ,这是前面声明的一个特例。  
mysqladmin -u root -p password mypasswd 
输入这个命令后,需要输入 root 的原密码,然后 root 的密码将改为 mypasswd  
把命令里的 root 改为你的用户名,你就可以改你自己的密码了。  
当然如果你的 mysqladmin 连接不上 mysql server ,或者你没有办法执行 mysqladmin  
那么这种方法就是无效的。  
而且 mysqladmin 无法把密码清空。  
下面的方法都在 mysql 提示符下使用,且必须有 mysql root 权限:  
 
方法三:  
mysql> INSERT INTO mysql.user (Host,User,Password) 
VALUES('%','jeffrey',PASSWORD('biscuit')); 
mysql> FLUSH PRIVILEGES 
确切地说这是在增加一个用户,用户名为 jeffrey ,密码为 biscuit  
在《 mysql 中文参考手册》里有这个例子,所以我也就写出来了。  
注意要使用 PASSWORD 函数,然后还要使用 FLUSH PRIVILEGES  
 
方法四 :
和方法三一样,只是使用了 REPLACE 语句  
mysql> REPLACE INTO mysql.user (Host,User,Password) 
VALUES('%','jeffrey',PASSWORD('biscuit')); 
mysql> FLUSH PRIVILEGES 
 
方法五:  
使用 SET PASSWORD 语句,  
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit'); 
拟也必须使用 PASSWORD() 函数,  
但是不需要使用 FLUSH PRIVILEGES  
 
方法六:  
使用 GRANT ... IDENTIFIED BY 语句  
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit'; 
这里 PASSWORD() 函数是不必要的,也不需要使用 FLUSH PRIVILEGES  
注意: PASSWORD() [ 不是 ] 以在 Unix 口令加密的同样方法施行口令加密。
MySQL 忘记口令的解决办法
如果 MySQL 正在运行,首先杀之: killall -TERM mysqld  
启动 MySQL bin/safe_mysqld --skip-grant-tables & 
就可以不需要密码就进入 MySQL 了。  
然后就是  
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
重新杀 MySQL ,用正常方法启动 MySQL
 
其它办法:
 
办法一:   linux 下忘记 mysql 的密码,咋整?有一种方法可以很快的重设密码。
首先,关闭 mysql.
这个时候你用 Mysqladmin shutdown 来关闭 mysql 基本是不可能的,为啥,因为你不知到密码了么,用其它用户去连接 mysql 库,会提示你没有权限。
其次,直接用 kill 命令也是不行的。 mysqld_safe 启动以后,如果 mysqld kill 掉,这个进程会自动重启,真是坑爹啊!
那么,只能使出绝招了
killall -TERM mysqld
第二步,到 root 用户下(或者是 mysql 服务的安装用户下)绕开安全权限启动 mysqld
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
第三步,修改 Mysql 库中的 user 表,重新赋予新的权限
>use mysql 
>update user set password=password("new_pass") where user="root"; 
>flush privileges; 
注意,这步会把所有 user=root 的账户密码都设为这个,可以在 where 里加入针对性的限定条件
第四步,重新 kill mysqld ,然后重启,一切 ok
 
办法二:
1 .首先确认服务器出于安全的状态,也就是没有人能够任意地连接 MySQL 数据库。  
因为在重新设置 MySQL root 密码的期间, MySQL 数据库完全出于没有密码保护的   状态下,其他的用户也可以任意地登录和修改 MySQL 的信息。可以采用将 MySQL 对外的端口封闭,并且停止 Apache 以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的 Console 上面操作,并且拔掉网线。  
 
2 .修改 MySQL 的登录设置:  
# vi /etc/my.cnf 
[mysqld] 的段中加上一句: skip-grant-tables 
例如:  
[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
skip-grant-tables 
保存并且退出 vi  
 
3 .重新启动 mysqld 
# /etc/init.d/mysqld restart 
Stopping MySQL: [ OK ] 
Starting MySQL: [ OK ] 
 
4 .登录并修改 MySQL root 密码  
# /usr/bin/mysql 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 3 to server version: 3.23.56 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 
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 Password = password ( 'new-password' ) WHERE User = 'root' ; 
Query OK, 0 rows affected (0.00 sec) 
Rows matched: 2 Changed: 0 Warnings: 0 
mysql> flush privileges ; 
Query OK, 0 rows affected (0.01 sec) 
mysql> quit 
Bye 
 
5 .将 MySQL 的登录设置修改回来  
# vi /etc/my.cnf 
将刚才在 [mysqld] 的段中加上的 skip-grant-tables 删除  
保存并且退出 vi  
 
6 .重新启动 mysqld 
# /etc/init.d/mysqld restart 
Stopping MySQL: [ OK ] 
Starting MySQL: [ OK ]
 
亲测最后一种方式有效  :  引用   来自 <http://blog.csdn.net/white__cat/article/details/36889907>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值