MySQL之——忘记root密码解决方案

【windows】

1、以管理员的身份打开dos窗口,并关闭mysql服务器

# net stop mysql

2、进入mysql安装目录bin下,跳过权限检查启动

# mysqld --skip-grant-tables

3、另开dos窗口

4、进入mysql安装目录bin下,输入mysql

5、进入 mysql>  后,连接数据库

 mysql> use mysql;

6、输入修改sql

mysql> update mysql.user set authentication_string=password('新密码') where user='用户名';

7、刷新权限

mysql> flush privileges;

8、退出mysql

mysql> q

9、启动mysql服务器

# net start mysql

10、输入mysql -u root -p,在Enter password:输入修改的密码,成功进入mysql

【linux】

1、查找my.cnf的路径,一般默认路径为/etc/my.cnf

# locate my.cnf

2、进入etc下

# cd /etc

编辑my.cnf配置文件

# vim my.cnf

2.在[mysqld]下添加skip-grant-tables,然后保存并退出(注:按I进入输入模式;按ESC,输入:wq,保存并退出)

3、重启mysql服务

# service mysql restart

4、执行mysql命令进入mysql命令行

# mysql -u root -p

5、修改root用户密码

MySQL> update mysql.user set authentication_string=password('新密码') where user='用户名';

6、刷新权限
MySQL> flush privileges;

7、退出mysql
MySQL> exit

 8、把/etc/my.cnf中的skip-grant-tables注释掉

9、重启mysql

# service mysql restart

10、输入mysql -u root -p,在Enter password:输入修改的密码,成功进入mysql

注意:

要想远程可以连接数据库,需要对连接ip授权

1)登录mysql mysql -uroot -p; 并输入密码

2)创建远程登陆用户并授权 :grant all PRIVILEGES on *.* to 用户@'授权ip' identified by '密码';

如果执行以上指令,报(You must reset your password using ALTER USER statement before executing this statement.)错误,是因为一开始是没有密码的,在初始化的时候有个密码,只是相当于临时密码:

需要先执行以下命令

alter user user() identified by "root";

执行立即生效:flush privileges;

简单并详细的说下授权指令

1:*.* 表示上面的权限是针对于哪个数据库的哪个表的,第一个*可以指定数据库,第二 * 可以指定数据表:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。 

2:root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。47.96.138.137 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

原文地址:https://www.cnblogs.com/wendy-0901/p/12935067.html