栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

忘记mysql数据库登录密码或者首次设置密码,怎么办?

忘记mysql数据库登录密码或者首次设置密码,怎么办?

长时间没有使用mysql数据库,忘记了登录密码怎么办?
第一次设置mysql数据库密码,怎么设置?

第一步:查看debian.cnf配置文件

sudo cat /etc/mysql/debian.cnf

显示情况如下:

haha@ubuntu:~/work$ sudo cat /etc/mysql/debian.cnf 
[sudo] password for haha: 
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = tfFpRFcdqQgUQ6Qb    //注意这个,我们要用它
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = tfFpRFcdqQgUQ6Qb
socket   = /var/run/mysqld/mysqld.sock

第二步:使用debian-sys-maint用户名登录,密码就是上面的:tfFpRFcdqQgUQ6Qb

mysql -u debian-sys-maint -p

显示如下:

haha@ubuntu:~/work$ mysql -u debian-sys-maint -p
Enter password:       //输入上面的密码:tfFpRFcdqQgUQ6Qb
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 13
Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> 			//进入这里登录成功。

第三步:使用mysql本身自带的“mysql数据库”,来修改密码

use mysql;

update mysql.user set authentication_string=password('你要设置的密码') where user='root' and Host ='localhost'; 
//注意:这里可能会执行出错.
//出错执行:ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
这里的“user='root' and Host ='localhost'”表示给哪个用户,哪个主机IP设置密码。

update user set plugin="mysql_native_password"; 

flush privileges;

quit;    //退出mysql,需要重启mysql

在设置这里的第2个指令时,可能会遇到问题。请看最后解决方案。

第四步:重启mysql,重新登录

sudo service mysql restart
mysql -u 用户名 -p    // 启动后,输入修改好的密码,即刻登录成功。

注意:
我们再操作第三步时,可能会出现这样的问题:

mysql> use mysql;
Database changed
mysql>UPDATE mysql.user SET authentication_string=password('123456') WHERe User='root' AND Host ='localhost';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('123456') WHERe User='root' AND Host ='localhost'' at line 1

上面说你有一个sql语法错误。
不要被“sql语法错误”迷惑,他的解决方案其实很简单:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

当然你执行这个指令,它会告诉你另一个错误:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

就是你设置的密码不符合mysql当前规定的策略要求。
啥意思:就是你的密码太简单了,他不让你这样设置。

MySQL有密码设置的规范,具体是validate_password_policy的值有关

针对这个策略问题,解决方案如下:
(1)可查看mysql完整的初始密码规则:
SHOW VARIABLES LIKE ‘validate_password%’;
执行效果如下:

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |	//你看长度要求是8个字符
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |   //策略等级是中等
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.43 sec)

validate_password.length决定密码的长度,修改方法如下:
set global validate_password.length=4; //长度修改为4.

mysql> set global  validate_password.length=4;
Query OK, 0 rows affected (0.00 sec)

validate_password_policy决定密码的验证策略,默认等级为MEDIUM,可修改为LOW:
set global validate_password.policy=0;

mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)

再次查看:

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 4     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

到这里,你在设置密码为 123456,就可以了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号