场景描述:
一台阿里云服务器,上面有装mysql数据库,但是不知道数据库的密码。怎么办! 改密码呗。下面一系列故事就围绕改密码展开来了。
整个过程:
1、一顿操作猛如虎,感觉自己不是新手,得有追求,得看看系统的版本,等一系列的参数,其实然并卵。
2、打开百度 阿里云修改mysql 数据库密码。 出来一堆 。总结出来就是要在 my.cnf 文件里面的 [mysqld] 加 skip-grant-tables
好家伙找到线索那就开干呗。开始找my.cnf
咦搜到了 高兴坏了。然后就按照大多数的教程上面那样打开my.cnf
大多数的博客上面的说的都是[mysqld] 这里面没有怎么办,哦我得试试,但是我始终觉得自己不是新手。对我得备份cp my.cnf my.cnf.bak。
在 [mysqld.2]的下面插入了 skip-grant-tables
然后 systemctl mysqld restart 发现阿里云不支持 systemctl 然后改成service mysqld restart 可以重启。会发现后面都会有个d 尝试了一下 service mysql restart 还真不行。
然后就是mysql -u root -p 回车 不行提示输入密码 回车后就报错。 然后继续搜,说要 reboot 服务器。试了一遍依然没有结果。 怎么办,刚才不是搜了两个文件么,那排列一下应该是 1 改 2不改、 1改 2改、 1不改 2 改、 1 不改 2 不改。那就是试一下另外两种情况吧。然后也是没有结果。
然后搜到了mysqld_safe --skip-grant-tables &()执行报一堆的错。然后就开始骂了都写的什么乱七八糟的博客,解决不了我的问题。 其实也不能完全怪人家 嘻嘻,我的场景和他们写的场景不完全匹配。
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲上面只是记录一下过程解决问题看下面▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
我的 /etc/下面没有 my.cnf 带着这个关键字我重新出发了。
原来 Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动。
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL。
解决方法,只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。
看到一个有用的评论:
我是特意来评论一下,mysql确实是默认没有这个文件的,复制%mysql_HOME/support-files找到my-medium.cnf到/ect目录即可,估计mysql的原理是依次寻找cnf这个文件,顺序可以通过这个命令查看:sudo mysql --help | grep my.cnf,希望能给后续的人有所帮助,mysql设计真TMD蛋疼!
结合上面的我准备再试一把,带着忐忑的心情我又重新出发了!!
在 /user/share/mysql 看看有没有.cnf 依然没有要的.cnf 怎么办全盘
find / -name my-medium.cnf
在这个地方搜到了,事情到了这个地步了那就是死马当活马医了,干!!!
复制到 /etc/ 下面然后就是打开一看有 [mysqld] 不错不错味道好极了!然后就是在
my-medium.cnf 在 [mysqld] 下面插入skip-grant-tables 重命名了成my.cnf. 具体不命名成my.cnf 行不行没有事,不找麻烦。
然后 /etc/init.d/mysqld restart 重启 mysql服务
然后 mysql -u root -p 回车进去了。进入到这个界面了
至此事情完成了一大半了。
进入msyql数据库:
mysql> UPDATE user SET password=password('123456') WHERE User='root';
mysql> flush privileges ;
到此为止 mysql 修改密码就完成了。 记得最后吧 /etc/my.cnf [mysqld] 下面的 skip-grant-tables 去掉 否则无密码登录就行了。