1、关闭正在运行的MySQL服务。
2、修改mysql配置文件
(1)windows系统为my.ini文件,通常在mysql安装目录下,例如: C:\ProgramData\MySQL\MySQL Server 5.7\my.ini,如果没有my.ini文件,则新建该文件。
注意:如果是windows系统,也可以不修改mysql配置文件,只需在启动mysql时加入启动参数即可

mysqld --skip-grant-tables

(2)Linux系统为my.cnf文件,通常在/etc目录下,例如:/etc/my.cnf
编辑配置文件,在[mysqld]节点下结尾添加以下内容,保存退出。

skip-grant-tables

mysql数据库连接密码对称加密 mysql连接密码忘记了怎么办_解决方法


3、启动mysql

执行命令 service mysqld start

4、连接mysql

执行命令 mysql ,发现可以直接连上mysql了

mysql数据库连接密码对称加密 mysql连接密码忘记了怎么办_解决方法_02


5、切换数据库

执行命令 use mysql

6、修改mysql连接密码
(1)mysql5.6及之前的版本执行以下命令:

update user set password=password('123') where user='root' and host='localhost';

(2)mysql5.7及之后的版本用户表结构有变化,需执行以下命令:

update user set authentication_string = password("123") where user = "root";

mysql数据库连接密码对称加密 mysql连接密码忘记了怎么办_mysql_03


7、刷新权限(必须步骤)

执行命令: flush privileges;

8、将第2步中的修改内容还原

9、退出登陆,使用用户名和密码登陆

执行命令 mysql -u root -p 输入密码,回车,发现登陆成功。

mysql数据库连接密码对称加密 mysql连接密码忘记了怎么办_mysql_04

############################可能出现的问题:##############################

问题1:执行第6步,提示Table ‘mysql.servers’ doesn’t exist
解决方法一:查看mysql配置文件中,datadir的路径是否配置正确,默认路径为/var/lib/mysql,我改了这个路径,默认路径下是有servers表的,将datadir配置改为默认路径后,就没这个问题了。

解决方法二:由于升级完数据库造成丢失原有的系统表,这时可以通过下面的命令创servers表:

CREATE TABLE `servers` (
            `Server_name` char(64) NOT NULL,
            `Host` char(64) NOT NULL,`Db` char(64) NOT NULL,
            `Username` char(64) NOT NULL,
            `Password` char(64) NOT NULL,
            `Port` int(4) DEFAULT NULL,
            `Socket` char(64) DEFAULT NULL,
            `Wrapper` char(64) NOT NULL,
            `Owner` char(64) NOT NULL,
            PRIMARY KEY (`Server_name`)
            ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';

问题2、改完密码,退出登陆,再次登陆,执行第5步时,提示以下错误信息

mysql> use mysql
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

原因分析:出现这个错误一般是因为密码为空或密码强度不符合要求。这个与validate_password_policy的值有关。

mysql数据库连接密码对称加密 mysql连接密码忘记了怎么办_MySQL_05


默认是1,即MEDIUM,表示设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

解决方法一:使用符合规范要求的密码。

解决方法二:如果仍想使用简单密码,可以按顺序执行以下命令:

set global validate_password_policy=0;       //修改密码验证规则
set global validate_password_length=1;        //修改密码要求的最小长度,默认为8
alter user 'root'@'localhost' identified by '123456';     //修改密码

问题3 :按照上面的步骤修改完,使用新的用户名和密码连接数据库提示

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:YES)

解决方法:问题出现的原因很可能是没有root账户,使用步骤1到步骤5进入mysql数据库,依次执行以下sql

  • (1)、查看是否有root账户
select user from user;
  • (2)、创建root账号
create user 'root'@'localhost' identified by '123456';
  • (3)、如果(2)报错,执行该步骤,否则可以直接跳到步骤(5)
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
flush privileges;
create user 'root'@'localhost' identified by '123456';
  • (4)、如果执行第(3)仍报错,执行该步骤,否则可以直接跳到步骤(5)
drop user 'root'@'localhost';
create user 'root'@'localhost' identified by '123456';
  • (5)、赋予root用户所有库所有表的操作权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; 
flush privileges;
exit;
  • (6)、删除my.cnf 配置文件中的 skip-grant-tables
  • (7)、重启mysql服务