如果忘记了 MySQL 的 root 密码, 可以用以下方法重新设置: 1. KILL掉系统里的MySQL进程; 2. 在命令提示符下(CMD),进入到MYSQL的BIN目录,用以下命令启动MySQL,以不检查权限的方式启动; mysqld-nt --skip-grant-tables 3. 然后重新开打一个命令提示符的窗
1.忘了root密码
远程服务器起了一个mysql服务,里面有个hive账户,在远程服务器能通过命令行用mysql -hlocalhost -uxxx -pxxx的方式登录,但是用navicat客户端,怎么也登录不上,而且navicat显示的还是我自己机器的ip地址。初步怀疑,是mysql里的A账户密码没有设置正确。于是需要用root账号对hive账户重新进行设置。坑爹的是,mysql也不是我布的。而且测试环境,也不知道该找谁要密码。那就使出终极武器吧:修改root密码。
2.重置mysql root密码。
首先注意的一点:mysql的root账户与服务器的root账户不是同一个概念,不要混为一谈。
首先,停掉mysql服务:
sudo service mysql stop
如果有服务器的root账户,自然就不用sudo了,下面所有的操作也是一样。上面的命令适用于Ubuntu和Debian。CentOS、Fedora和RHEL下使用mysqld替换mysql。下面所有的操作也是一样。
然后,再以安全模式启动mysql:
sudo mysqld_safe --skip-grant-tables --skip-networking &
这样我们就可以直接用root登录,无需密码:
mysql -u root
这样,我们就用root账户登录了mysql。
然后,就可以重置root密码了:Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码 我们可以在终端输入命令 sudo passwd,然后输入当前用户的密码enter, 终端会提示我们输入新的密码并确认,此时的密码就是root新密码。修改成功后 输入命令 su root,再输入新的密码就ok了。
mysql> use mysql;
mysql> update user set password=PASSWORD("mynewpassword") where User='root';
mysql> flush privileges;
重置完毕以后,退出mysql。然后再将mysql服务启动:
sudo service mysql restart
接下来,就是用root账户登录了:
mysql -u root -pmynewpassword
3.修改A账户相关权限
用root账号登录mysql以后,接下来看看A账号的相关信息:
mysql> use mysql;
Database changed
mysql> select User, Host from user where User='hive'; +------+--------------+
| User | Host | +------+--------------+
| hive | 127.0.0.1 | +------+--------------+
这一下就明白了。尼玛难怪navicat客户端登不了。hive账户的host只有127.0.0.1,自然只能在本机登录了。
mysql> update user set Host='%' where User='hive';
将hive账户设置为所有机器均可登录,然后再刷新一下权限:
mysql> flush privileges;
再查看一把:
mysql> select User, Host from user where User='hive'; +------+------+
| User | Host | +------+------+
| hive | % | +------+------+
至此为止,大功告成!