Home  >  Article  >  Operation and Maintenance  >  How to solve the problem of forgetting mysql password in Linux

How to solve the problem of forgetting mysql password in Linux

WBOY
WBOYOriginal
2022-01-18 15:40:3721852browse

Solution: 1. Use the "service mysql stop" command to shut down the mysql service; 2. Modify the mysql configuration file "my.conf"; 3. Use the "service mysqld start" command to restart the database; 4. Use The "use mysql" statement changes the password.

How to solve the problem of forgetting mysql password in Linux

The operating environment of this tutorial: linux7.3 system, mysql8.0.22 version, Dell G3 computer.

How to solve the problem of forgetting mysql password in Linux

Solution:

1. Check whether the mysql service is started , if started, close the mysql service

//查看mysql服务状态
[root@mytestlnx02 ~]# ps -ef | grep -i mysql
root     22972     1  0 14:18 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql    23166 22972  0 14:18 pts/0    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root     23237 21825  0 14:22 pts/0    00:00:00 grep -i mysql
//关闭服务
[root@mytestlnx02 ~]# service mysql stop
[root@mytestlnx02 ~]#

2. Modify the mysql configuration file my.cnf

The location of the my.cnf configuration file is generally / etc/my.cnf, some versions are in /etc/mysql/my.cnf

In the configuration file, add 2 lines of code

[mysqld]
skip-grant-tables

How to solve the problem of forgetting mysql password in Linux

The function is Skip password verification when logging in to mysql

Then start the mysql service and enter mysql

[root@mytestlnx02 ~]# service mysqld start
[root@mytestlnx02 ~]#
[root@mytestlnx02 ~]# mysql -u root 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

3. Change the password

to connect to the mysql database. Modify the user password

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> update mysql.user set authentication_string=password('root_password') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit

4. Restart the mysql service

First comment or delete the two lines of code previously added to the configuration file, and then restart the mysql service. You can log in using the password you just set.

[root@mytestlnx02 ~]# service mysql start
[root@mytestlnx02 ~]#
[root@mytestlnx02 ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

operates differently on CentOS.

The command to change the password keeps reporting errors

mysql> update user set authentication_string=password('xxxxxxxx') where User='root';       
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 '('root_password') where User='root'' at line 1

It can’t be a syntax problem. I checked it many times and finally found that it should be done like this under CentOS:

View the initial password

[root@VM_0_8_centos ~]# grep 'temporary password' /var/log/mysqld.log
2018-09-26T04:25:54.927944Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: DN34N/=?aIfZ

You can see that the initial password is DN34N/=?aIfZ

Use the initial password to log in

[root@VM_0_8_centos ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.12 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Change password

mysql> ALTER USER 'root' IDENTIFIED BY 'xxxxxxxxx';  
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxx';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye

Restart the service and it will take effect

[root@VM_0_8_centos ~]# service mysqld stop 
Redirecting to /bin/systemctl stop  mysqld.service
[root@VM_0_8_centos ~]# service mysqld start
Redirecting to /bin/systemctl start  mysqld.service

Related recommendations: "Linux Video Tutorial"

The above is the detailed content of How to solve the problem of forgetting mysql password in Linux. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn