大家有没有出现过忘记 MySQL 登录密码的情况呀?反正我是遇到过,有的时候需要用的账号密码太多,难免会出现记忆错乱的情况,基于此,那么本篇文章就来教大家修改数据库密码的方法。
首先在正式说方法之前,这里需要大家知道的两个参数如下:
--skip-grant-tables
#跳过授权表
--skip-networking
#跳过TCP/IP连接
#限制了远程登陆,只允许使用socket方式登录,避免造成安全问题
这两个参数大家一定要记住,非常重要。数据库密码忘记时会显得尤其重要,那么接下来就为大家介绍几种忘记数据库密码时如何登录并重新设置密码。
方法一:
可以在启动数据库的时候,加上 --skip-grant-tables
$ service mysqld start --skip-grant-tables --skip-networking
加上这个参数,在启动数据库的时候就会跳过授权表,也就是说当你登录时,他不会跟数据库中的 user
表中的数据进行比对,达到直接可以登录的效果。
方法二:
-
关闭数据库
systemctl stop mysqld
-
使用安全模式启动
mysqld_safe --skip-grant-tables --skip-networking &
或者
service mysqld start --skip-grant-tables --skip-networking -
登录数据库并修改密码
$ mysql
//无需密码就可以登录,因为是使用安全模式启动的
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create user root@'%' identified by 'redhat';
ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
MariaDB [(none)]> flush privileges;
//刷新授权表,因为上一句报错是因为目前处于安全模式中,无法读取到授权表,因此也就无法修改密码
Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]> create user root@'%' identified by 'redhat';
Query OK, 0 rows affected (0.000 sec)
//此处可以使用create,也可以使用alter,alter本来就可以用来修改密码 -
重启数据库到正常模式
$ service mysqld rstart
或者
$ systemctl restart mysqld
启动过程:
方法三:
这种方法就是通过修改配置文件来实现,可以将 --skip-grant-tables
--skip-networking
直接添加到 /etc/my.cnf
配置文件中,如下:
[mysqld]skip-grant-tables
skip-networking
然后接下重启一下数据库,重启数据库会重新读取配置文件,所以无需密码可以直接登录。
$ mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
以上三种方法都可以达到修改数据库密码的目的,三种方法都比较简单,主要都是围绕 --skip-grant-tables
--skip-networking
这两个参数使用的。感兴趣的朋友可以在测试机上假装忘记密码尝试登录修改试下,虽说数据库的密码很重要,不轻易忘掉,但是这三种方法还是需要掌握的,常在河边走哪有不湿鞋,肯定会有需要用到的时候。