当前位置: 首页 > article >正文

MySQL—密码设置相关

一、忘记密码

方法一:以安全模式启动mysql

步骤一:停止mysql服务

停止 MySQL 服务:打开终端,输入以下命令停止 MySQL 服务(根据你的系统和 MySQL 版本,命令可能有所不同):

systemctl stop mysqld

步骤二:以安全模式启动 MySQL

输入以下命令以安全模式启动 MySQL,跳过权限验证:

sudo mysqld_safe --skip-grant-tables &

& 符号表示在后台运行该进程。

步骤三:登录 MySQL

打开另一个终端窗口,输入 mysql 并回车,无需密码即可登录到 MySQL 服务器。


步骤四:修改密码

在 MySQL 命令行中,执行以下语句来修改密码(以 MySQL 8.0 为例):

USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;

将新密码替换为实际密码。


步骤五:重启 MySQL

sudo systemctl start mysqld

步骤六:查看新密码设置是否正常

#登录
mysql -h 127.0.0.1 -uroot -p

方法二:通过在配置文件中添加skip-grant-tables参数进行修改

步骤一:停止MySQL服务


打开终端,使用管理员权限(通常需要 sudo)停止 MySQL 服务。对于使用 systemd 管理服务的系统(如大多数现代 Linux 发行版),可以执行以下命令:

sudo systemctl stop mysqld

步骤二:编辑MySQL配置文件


找到MySQL的配置文件,通常是my.cnf或 my.ini(在 Linux 系统中一般位于/etc/目录下)

vim /etc/my.cnf
[mysqld]
skip-grant-tables
# 其他配置项...

步骤三:启动 MySQL 服务


重新启动 MySQL 服务,使其加载新的配置:

systemctl start mysqld

步骤四:登录MySQL数据库


打开终端,直接输入 mysql 命令,此时不需要密码即可登录到 MySQL 服务器:

mysql

步骤五:修改密码


在 MySQL 命令行中,切换到 mysql 数据库(因为用户密码信息存储在该数据库中),然后使用 ALTER USER 语句修改密码。对于 MySQL 8.0 及以上版本,示例如下:

USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;

将新密码替换为你想要设置的实际密码。FLUSH PRIVILEGES 语句用于刷新权限表,使新密码立即生效。

步骤六: 恢复配置文件并重启 MySQL

#去掉配置文件中的skip-grant-tables
vim /etc/my.cnf
[mysqld]
skip-grant-tables      #删除此行
# 其他配置项...

#重启mysql服务
systemctl restart mysqld

步骤七:验证新密码登录是否正常

#登录
mysql -h 127.0.0.1 -uroot -p

二、修改密码

方法一:使用 ALTER USER 语句(已登录且有权限)

#修改密码

-- 切换到 mysql 数据库,因为用户和权限信息存储在该数据库中
USE mysql;

-- 修改 root 用户在本地登录(localhost)时的密码,新密码为 'newpassword'
-- 你需要将 'newpassword' 替换为你实际想要设置的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

-- 刷新权限,使新密码立即生效
FLUSH PRIVILEGES;

方法二:使用 SET PASSWORD 语句(已登录且有权限)

-- 修改当前登录用户的密码,新密码为 'newpassword'
-- 你需要将 'newpassword' 替换为你实际想要设置的密码
SET PASSWORD = PASSWORD('newpassword');

-- 如果你想修改其他用户的密码(需有相应权限)
-- 例如修改 root 用户在本地登录(localhost)时的密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');

三、设置密码为永不过期

1、password_lifetime值的含义

password_lifetime值为null和0
在数据库管理中, password_lifetime 是一个常见的安全参数,用于指定密码的有效期。如果  password_lifetime 的值为  NULL 或  0,它们可能代表不同的含义:
  • NULL
 表示没有设置密码有效期限制。密码可以使用无限期。
  • 0
 表示密码不会过期。这通常意味着强密码策略不会被应用。
  password_lifetime 的值是一个正整数,表示密码应该被要求更改之前的最大天数。
  password_lifetime 设置为  0,或者根本不设置此参数。
以 SQL Server 为例,设置密码有效期为 90 天:
ALTER LOGIN [your_login] WITH PASSWORD = 'new_password', PASSWORD_LIFETIME = 90;
禁用密码过期:
ALTER LOGIN [your_login] WITH PASSWORD = 'new_password', PASSWORD_LIFETIME = 0;

2、不同版本的MySQL设置密码永不过期的方法不同

2.1、MySQL 8.0及以上版本

以拥有足够权限的用户(如 root)登录 MySQL 数据库:

USE mysql;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;

2.2、MySQL 5.7版本

USE mysql;
SELECT User, Host, password_expired FROM mysql.user WHERE User = 'root' AND Host = 'localhost';
UPDATE mysql.user SET password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

2.3、以5.7版本为例进行修改

步骤一:查看用户是否设置密码过期的sql

 SELECT user, host, password_expired, password_lifetime FROM mysql.user WHERE user = 'root';

步骤二:修改为永不过期

ALTER USER 'root'@'%' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'127.0.0.1' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'stc'@'%' PASSWORD EXPIRE NEVER;


http://www.kler.cn/a/565508.html

相关文章:

  • 《Somewhat Practical Fully Homomorphic Encryption》笔记 (BFV 源于这篇文章)
  • 校园快递助手小程序毕业系统设计
  • JAVA面试常见题_基础部分_springboot面试题
  • 力扣1091. 二进制矩阵中的最短路径
  • Flutter - 布局Widget
  • Linux的文件与目录管理
  • BUU40 [CSCCTF 2019 Qual]FlaskLight1【SSTI】
  • 有哪些信息安全/网络安全/渗透测试/众测/CTF/红蓝攻防/漏洞测试等前沿技术/研究/技巧获取渠道?
  • Java 实现快速排序算法:一条快速通道,分而治之
  • vue3的生命周期
  • 如何将图片档案信息读取出来?并把档案信息相关性进行关联
  • Skype for Business网络延迟怎么办?
  • 关于冯诺依曼体系结构与操作系统的更基础、更详细的解析,结合技术原理与实现细节,帮助系统性学习
  • Kafka 赋能高效消息队列管理:从原理到实战
  • 【JAVA-数据结构】Lambda表达式
  • Docker Hub 使用规则与限制全解析
  • 计算机视觉算法实战——高精度分割(主页有源码)
  • 计算机毕业设计SpringBoot+Vue.js中小企业设备管理系统(源码+文档+PPT+讲解)
  • C++ 红黑树万字详解(含模拟实现(两种版本))
  • 在 Vue 3 的 Composition API 中,如何实现动态组件