Linux之不重启MySQL不知道MySQL的root密码前提下修改MySQL的root用户密码

  • A+
所属分类:MySQL&MariaDB  数据库
摘要

由于半夜加班做MySQL的热加从库,主库不能停机不能锁表,而且事前忘记找老大要MySQL的root权限了。所以只能用特殊方法来解决事情了。。。

这篇文章在此给自己一个深刻的教训,以后不再做类似的事情,危险系数太大,隐患也很大,同时不建议其他人在生产数据库上这样做,万事需要在得到授权的前提下再做。
首先我们要知道MySQL的mysql库中的user表是myisam存储引擎。熟悉我的人都知道,我在Linux学习和使用上走的都是猥琐流。
今天再来次猥琐修改MySQL的root密码的做法。修改密码的时候直接不影响线上服务的使用,不用重启MySQL。。。。

首先我们用vi编辑器打开MySQL数据库数据存储目录下的mysql目录下的user.MYD

然后定位root*,在星号后面其实就是MySQL的root密码的密文。没事情,你是密码我换密文就是了。
Linux之不重启MySQL不知道MySQL的root密码前提下修改MySQL的root用户密码

如上图所示153CCFAEAA83407D8DBDBFAA3D17B1A95553E60C这一串是我换上去的,这个密码密文的明文是lookback
使用SQL语句生产加密的密文密码:

MariaDB [(none)]> select password('lookback'),concat('*',sha1(unhex(sha1('lookback'))));
+-------------------------------------------+-------------------------------------------+
| password('lookback')                      | concat('*',sha1(unhex(sha1('lookback')))) |
+-------------------------------------------+-------------------------------------------+
| *153CCFAEAA83407D8DBDBFAA3D17B1A95553E60C | *153ccfaeaa83407d8dbdbfaa3d17b1a95553e60c |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> select password('ODRjODRlNDBmZmVl'),concat('*',sha1(unhex(sha1('ODRjODRlNDBmZmVl'))));
+-------------------------------------------+---------------------------------------------------+
| password('ODRjODRlNDBmZmVl')              | concat('*',sha1(unhex(sha1('ODRjODRlNDBmZmVl')))) |
+-------------------------------------------+---------------------------------------------------+
| *6BB68AC583D98E81AB45471685B2DCCE5E7DD4ED | *6bb68ac583d98e81ab45471685b2dcce5e7dd4ed         |
+-------------------------------------------+---------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>

使用shell 命令生产加密的密文密码:

[root@server-2 ~]# mysql -uroot -p <<< "select password('lookback');"
Enter password: 
password('lookback')
*153CCFAEAA83407D8DBDBFAA3D17B1A95553E60C

Linux之不重启MySQL不知道MySQL的root密码前提下修改MySQL的root用户密码

修改好之后执行下面的命令

kill -SIGHUP `ps aux | pgrep mysqld`

上面命令的作用就是用SIGHUP信号产生的行为类似于flush命令的作用。

这些都做好了?那就可以使用修改后的密码登录root用户了。so easy。。。。

Linux之不重启MySQL不知道MySQL的root密码前提下修改MySQL的root用户密码

lookback

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: