[Linux服务器] Linux中修改MySQL密码

1605 0
Honkers 2025-3-21 18:42:00 来自手机 | 显示全部楼层 |阅读模式

Linux中MySQL的密码操作

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

  1. mysqladmin -u用户名 -p原密码 password "新密码"
复制代码

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

该命令适用于以下情况:

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

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

示例

  1. [root@yun01 ~]# mysqladmin -uroot -p password "123"
  2. Enter password:
  3. [root@yun01 ~]#
复制代码

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

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

  1. ps -ef | grep -i mysql
复制代码

示例:

  1. [root@yun01 ~]# ps -ef | grep -i mysql
  2. mysql 3553 1 0 16:22 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
  3. 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
  4. root 3792 2175 0 16:47 pts/1 00:00:00 grep --color=auto -i mysql
复制代码

2、关闭当前的MySQL服务

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

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

  • 命令:
  1. 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 的情况。

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

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

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

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

  1. pkill -9 mysql
  2. # 等待几秒
  3. systemctl start mariadb
复制代码

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

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

  • 此步骤参考第一小节

7、注意事项

  1. UPDATE mysql.user SET password = PASSWORD('new_password') WHERE user = 'root';
复制代码

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

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

    1. 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 的权限表:

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

2、重启 MySQL 服务

  1. systemctl restart mariadb
复制代码

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

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

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

  1. [mysqld]
  2. skip-grant-tables # 删掉此项
  3. systemctl restart mariadb # 重启服务
复制代码

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

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

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

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

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

  1. 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. 运行脚本

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

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

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

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

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

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

    1. Reload privilege tables now? [Y/n] Y
    复制代码

输出示例

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

  1. All done! If you've completed all of the above steps, your MySQL installation should now be secure.
  2. Thanks for using MySQL!
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行