Linux中修改MySQL密码

Linux中MySQL的密码操作

1、给用户设置/更新密码

mysqladmin -u用户名 -p原密码 password "新密码"

该命令在终端直接执行,不需要进入mysql视图

该命令适用于以下情况:

  • 用户的密码为空,为用户设置密码
  • 用户密码需要更新,更换密码

注意事项: 使用该命令需要知道原密码

示例

[root@yun01 ~]# mysqladmin -uroot -p password "123"
Enter password: 
[root@yun01 ~]# 

2、忘记密码操作一(命令行操作)

1、先查看当前有没有MySQL服务在运行

ps -ef | grep -i mysql

示例:

[root@yun01 ~]# ps -ef | grep -i mysql
mysql      3553      1  0 16:22 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql      3720   3553  0 16:22 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root       3792   2175  0 16:47 pts/1    00:00:00 grep --color=auto -i mysql

2、关闭当前的MySQL服务

systemctl stop mariadb
  • 示例:
[root@yun01 ~]# systemctl stop mariadb
[root@yun01 ~]# ps -ef | grep -i mysql
root       3809   2175  0 16:48 pts/1    00:00:00 grep --color=auto -i mysql
[root@yun01 ~]# 

3、启动 MySQL,允许在不检查或使用权限系统的情况下访问 MySQL 数据库

  • 命令:
mysqld_safe --skip-grant-tables
  • 解释:
  • mysqld_safe --skip-grant-tables 是用来启动 MySQL 的一种特殊模式,允许在不检查或使用权限系统的情况下访问 MySQL 数据库。

  • mysqld_safe:这是一个用于启动 MySQL 服务器的脚本,它比直接使用 mysqld 启动 MySQL 更安全。它提供了日志记录、错误检测和自动重启 MySQL 的功能。

  • --skip-grant-tables:这个选项告诉 MySQL 启动时不加载权限表,即不启用 MySQL 的用户权限系统。这意味着在这个模式下,任何用户都可以访问数据库,而不需要验证用户名和密码。这种模式常用于重置 MySQL 密码或解决由于权限问题导致的无法访问 MySQL 的情况。

  • 示例:
[root@yun01 ~]# mysqld_safe --skip-grant-tables
240926 20:20:55 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
240926 20:20:55 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
  • 此时,MySQL服务以前台运行的方式启动,我们需要新开一个终端进行后续操作

4、进入MySQL客户端,修改用户表中的密码

# 1、直接输入mysql进入客户端
msyql  
# 在mariadb中,默认登入的是root账户,若在MySQL中要指定其用户登录可使用以下命令
mysql -uroot
  • 修改user表中的密码
update mysql.user set password=password("") where user="root"; 
# ""表示将root的密码设置为空
# password()表示使用该函数将密码加密后存储
  • 重新加载用户权限表,确保对权限的更改立即生效。
flush privileges;

5、关闭mysqld_safe模式下启动的MySQL服务,并使用系统命令启动MySQL服务

pkill -9 mysql
# 等待几秒
systemctl start mariadb

6、重新设置root账号的密码

  • 也可以在第四步直接将root的密码设置好

  • 此步骤参考第一小节

7、注意事项

UPDATE mysql.user SET password = PASSWORD('new_password') WHERE user = 'root';

这条命令在使用时得注意MySQL的版本

  • MySQL5.7以上版本中,用户的密码不存在password字段中,而是存在于authentication_string,应该使用以下命令。

  • UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE user = 'root';
    

3、忘记密码操作二(修改配置文件)

1、修改 my.cnf 文件,跳过权限表

my.cnf 文件是 MySQL 的主要配置文件,用于设置 MySQL 数据库服务器的各种参数和行为。在该文件中,可以定义服务器的运行模式、存储路径、缓存大小、网络配置等。my.cnf 文件是 MySQL 在启动时读取的第一个配置文件。

  • 文件位置 /etc/my.cnf

  • 编辑 my.cnf 文件,在 [mysqld] 部分中添加以下行,以跳过 MySQL 的权限表:

[mysqld]
skip-grant-tables
# 此设置允许 MySQL 在启动时不加载权限系统,从而可以直接登录 MySQL 而不需要输入密码。

2、重启 MySQL 服务

systemctl restart mariadb

3、修改user表中的用户密码

update mysql.user set password=password("你的新密码") where user="root"; 

4、将my.cnf中加入的配置删掉,并重启服务

[mysqld]
skip-grant-tables  # 删掉此项systemctl restart mariadb # 重启服务

4、 忘记密码操作三(使用脚本)

  • --init-file 是 MySQL 启动时的一个选项,允许指定一个包含 SQL 语句的文件,当 MySQL 启动时,文件中的 SQL 语句会被自动执行。这种方式可以用于在 MySQL 启动时初始化数据库、重置密码或者执行其他重要的数据库操作。这个文件中的 SQL 语句在 MySQL 完全启动之前执行

1、编写一个sql脚本,用于修改用户密码

cd /opt
vim reset_password.sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123';  # mysql 5.6 以上版本使用该命令SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123'); # mysql 5.6 以下版本使用该命令

2、保存后停止当前的MySQL服务,使用mysql_safe命令启动MySQL服务

mysqld_safe --init-file=/opt/reset_password.sql &  # &符号表示以后台模式运行

3、测试使用新密码来登录客户端,若登录成功则删除sql脚本,并关闭当前的sql服务,并使用系统命令重启服务

4、注意事项

文件权限:确保 SQL 文件有足够的权限被 MySQL 服务读取,通常 MySQL 服务以 mysql 用户身份运行,因此 SQL 文件的权限需要至少对 mysql 用户可读。

一次性操作--init-file 是一个一次性操作,SQL 语句在启动时执行完成后文件不再起作用。记得在操作完成后删除 SQL 文件,防止安全问题。

文件内容要求:SQL 文件中的每条 SQL 语句必须完整且符合 MySQL 的语法要求。

5、mysql_secure_installation的使用

  • mysql_secure_installation 是一个 MySQL 提供的安全配置脚本,用于帮助用户强化 MySQL 数据库的安全性。这个脚本可以执行一系列任务,包括设置 root 用户密码、删除匿名用户、禁止远程 root 登录、删除测试数据库等。

使用方法

  1. 运行脚本

    mysql_secure_installation
    
  2. 输入 MySQL root 密码: 脚本启动后,首先会要求你输入 MySQL root 用户的密码。如果这是全新安装,可能没有设置密码,你可以直接按 Enter 键跳过。

    Enter current password for root (enter for none): 
    
  3. 设置 root 密码: 如果 root 用户尚未设置密码,脚本会询问你是否要设置一个密码。输入两次相同的新密码。

    Set root password? [Y/n] Y
    New password: 
    Re-enter new password: 
    
  4. 删除匿名用户: 脚本会提示你是否要删除 MySQL 中的匿名用户。选择 Y 以删除匿名用户。

    Remove anonymous users? [Y/n] Y
    
  5. 禁止远程 root 登录: 脚本会询问你是否要禁止 root 用户的远程登录。选择 Y,确保只有本地登录的 root 用户可以访问数据库。

    Disallow root login remotely? [Y/n] Y
    
  6. 删除测试数据库: 脚本会询问你是否要删除默认的测试数据库。选择 Y 以删除它。

    Remove test database and access to it? [Y/n] Y
    
  7. 刷新权限表: 脚本会自动刷新 MySQL 的权限表,确保所有更改立即生效。

    Reload privilege tables now? [Y/n] Y
    

输出示例

在运行完所有步骤之后,脚本会输出类似以下的结果:

All done! If you've completed all of the above steps, your MySQL installation should now be secure.Thanks for using MySQL!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库 - MySQL的事务

目录 前言 一、事务的特性 (一)原子性 (二)一致性 (三)隔离性 (四)持久性 二、事务的控制语句 三、事务隔离级别 (一)读未提交 (二&…

2024 Fortinet OT工业安全高峰论坛成功举办

9月10日,“2024年Fortinet OT工业安全高峰论坛”于广州圆满闭幕。盛会紧扣“工业安全新行动,智驭AI新时代”主题,汇聚全球OT领域精英、技术先锋及安全领域翘楚,共谋OT现代化浪潮下的安全新篇章。通过多维度视角、深层次对话、鲜活…

C++ | Leetcode C++题解之第429题N叉树的层序遍历

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> levelOrder(Node* root) {if (!root) {return {};}vector<vector<int>> ans;queue<Node*> q;q.push(root);while (!q.empty()) {int cnt q.size();vector<…

深圳锐明技术前端开发笔试题

目录 1. JavaScript 计算浏览器的刷新频率 2. 同源策略是什么&#xff1f;如何解决或避免浏览器同源请求和并发限制&#xff1f; 3. 数组分堆 4. 将一个数组对象改为树状结构 1. JavaScript 计算浏览器的刷新频率 实现计算浏览器刷新频率的思路如下&#xff1a; 使用浏览器…

Python_str(x)_x.str.something区别

str(x)&#xff1a; 这是一个Python内置函数&#xff0c;用于将对象x转换为字符串类型。 可以接受任何数据类型的对象作为输入&#xff08;如整数、浮点数、列表、元组等&#xff09;&#xff0c;并返回一个合理的字符串表示。 例&#xff1a;str(123) 会返回 ‘123’&#xff…

【AI学习】Lilian Weng:Extrinsic Hallucinations in LLMs(LLM 的外在幻觉)

来自OpenAI 的 Lilian Weng的《Extrinsic Hallucinations in LLMs》 Date: July 7, 2024 | Estimated Reading Time: 30 min | Author: Lilian Weng 文章链接&#xff1a;https://lilianweng.github.io/posts/2024-07-07-hallucination/ 大概看了一下&#xff0c;这篇文章的核…

深度学习与应用:行人跟踪

**实验 深度学习与应用&#xff1a;行人跟踪 ** ------ **1、 实验目的** ------ - 了解行人跟踪模型基础处理流程 - 熟悉行人跟踪模型的基本原理 - 掌握 行人跟踪模型的参数微调训练以及推理的能力 - 掌握行人跟踪模型对实际问题的应用能力&#xff0c;了解如何在特定的场景和…

机器学习及其应用领域【金融领域】

机器学习及其应用领域【金融领域】 一、智能投顾与资产配置二、信贷审批与风险评估三、支付与交易安全四、金融欺诈检测五、市场预测与情绪分析六、客户服务与个性化推荐七、面临的挑战与未来趋势八、总结 一、智能投顾与资产配置 智能投顾&#xff1a;通过机器学习技术&#…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜&#xff0c;有什么特别之处&#xff1f; Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年&#xff0c;2017 年美国东部时间 3 月 2 日上午 11 时许&#xff0c;在纽交所正式挂牌交易&#xff0c;股票代码为 “SNAP”。其旗下的核…

vue循环渲染动态展示内容案例(“更多”按钮功能)

当我们在网页浏览时&#xff0c;常常会有以下情况&#xff1a;要展示的内容太多&#xff0c;但展示空间有限&#xff0c;比如我们要在页面的一部分空间中展示较多的内容放不下&#xff0c;通常会有两种解决方式&#xff1a;分页&#xff0c;“更多”按钮。 今天我们的案例用于…

自建数据库VS云数据库:从《中国数据库前世今生》看未来数据管理的抉择

自建数据库VS云数据库&#xff1a;从《中国数据库前世今生》看未来数据管理的抉择 在数字化时代的滚滚洪流中&#xff0c;数据库作为核心数据管理工具&#xff0c;始终扮演着至关重要的角色。最近观看了纪录片《中国数据库前世今生》&#xff0c;让我对数据库技术的发展有了更…

数据库 - MySQL数据查询

目录 前言 一、简单的数据查询 &#xff08;一&#xff09;查询单个字段 &#xff08;二&#xff09;查询多个字段 &#xff08;三&#xff09;查询所有字段 &#xff08;四&#xff09;使用别名查询字段 &#xff08;五&#xff09;带条件的字段查询 &#xff08;六&am…

11. Map和Set

一、二叉搜索树 1. 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根…

sentinel-dashboard数据 redis 持久化

概述 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…

Dockerfile如何使用

Dockerfile 是用于构建 Docker 镜像的文本文件&#xff0c;它包含了一系列的指令和参数&#xff0c;用于定义如何创建 Docker 镜像。以下是使用 Dockerfile 的具体步骤&#xff1a; 编写 Dockerfile&#xff1a;在项目根目录下创建一个名为 Dockerfile&#xff08;无后缀&…

甘蔗茎节检测系统源码分享

甘蔗茎节检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Dependency Check:一款针对应用程序依赖组件的安全检测工具

关于Dependency Check Dependency-Check 是一款软件组合分析 &#xff08;SCA&#xff09; 工具&#xff0c;可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 &#xff08;CPE&#xff09; 标识符来实现此目的。如果找到&#xff0c;它…

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的&#xff08;从哪个页面跳转过来的&#xff09; 浏览器中&#xff0c;直接输入 URL/点击收藏夹打开的网页&#xff0c;此时是没有 referer。当你在 sogou 页面进行搜索时&#xff0c;新进入的网页就会有 referer 有一个非常典型的用…