摘要:下创建新用户新数据库设定访问权限控制都需要用到密码。万一把密码忘了,该怎么办幸运地是,重设密码很容易。基本的思路是,以安全模式启动,这样不需要密码可以直接以身份登录,然后重设密码。以安全模式启动注意我们加了,避免远程无密码登录。
MySQL下创建新用户、新数据库、设定访问权限控制都需要用到root密码。万一把root密码忘了,该怎么办?
幸运地是,重设密码很容易。
注意:MySQL的root用户和服务器操作系统的root用户是两个不同的用户,不要搞混了。
基本的思路是,以安全模式启动mysql,这样不需要密码可以直接以root身份登录,然后重设密码。
首先,我们停掉MySQL服务:
sudo service mysql stop
以上命令适用于Ubuntu和Debian。CentOS、Fedora和RHEL下使用mysqld替换mysql。
以安全模式启动mysql:
sudo mysqld_safe --skip-grant-tables --skip-networking &
注意我们加了--skip-networking,避免远程无密码登录MySQL。(感谢 RobberPhex指出。)
这样我们就可以直接用root登录,无需密码:
mysql -u root
接着重设密码:
mysql> use mysql; mysql> update user set password=PASSWORD("mynewpassword") where User="root"; mysql> flush privileges;
注意,命令后需要加分号。
重设完毕后,我们退出,然后启动mysql服务:
mysql > quit
quit不需要分号。
重启服务:
sudo service mysql restart
同样,以上命令适用于Ubuntu和Debian,Centos、Fedora和RHEL需要用mysqld替换mysql。
现在可以尝试用新密码登录了:
mysql -u root -pmynewpassword
注意,-p和密码间不能有空格。
其他方案以上是通用方案,在Ubuntu和Debian系统上,有一个debian-sys-maint用户,Debian类系统下一些系统脚本对mysql的操作是通过这个用户完成的。所以我们可以通过这个用户来修改root密码。该用户的密码可以在/etc/mysql/debian.cnf下找到:
# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = PASSWORD socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = PASSWORD socket = /var/run/mysqld/mysqld.sock basedir = /usr
用该用户登录mysql后,也可以修改密码(具体修改过程见上):
sudo mysql -u debian-sys-maint -p
撰文 SegmentFault
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/7904.html
阅读 3509·2021-11-25 09:43
阅读 1265·2021-09-08 09:45
阅读 2642·2021-09-07 09:59
阅读 1501·2021-08-09 13:45
阅读 3338·2019-08-30 15:54
阅读 696·2019-08-29 18:35
阅读 512·2019-08-29 17:18
阅读 991·2019-08-29 14:10