Heim  >  Artikel  >  Datenbank  >  linux服务器下忘记mysql root登录密码解决办法

linux服务器下忘记mysql root登录密码解决办法

WBOY
WBOYOriginal
2016-06-07 17:51:211284Durchsuche

文章分享一篇在linux服务器下忘记mysql root登录密码解决办法,哈哈这个比在windows下要麻烦多了,不过懂linux的朋友可能很快的。

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全 状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。

2.修改MySQL的登录设置:
# vi /etc/my.cnf
在[d]的段中加上一句:skip-grant-tables
例如:

 代码如下 复制代码
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables

保存并且退出vi。

3.重新启动mysqld

 代码如下 复制代码
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]

4.登录并修改MySQL的root密码

 代码如下 复制代码

# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3 to server version: 3.23.56

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

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 user SET Password = password ( 'new-password' ) Where User = 'root' ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0

mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye

5.将MySQL的登录设置修改回来
# vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。

6.重新启动mysqld

 代码如下 复制代码
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]

7.恢复服务器的正常工作状态
将步骤一中的操作逆向操作。恢复服务器的工作状态。

二。 MySQL密码的恢复方法之二
如果忘记了MySQL的root密码,可以用以下方法重新设置:
1. KILL掉系统里的MySQL进程;

 代码如下 复制代码
killall -TERM mysqld

2. 用以下命令启动MySQL,以不检查权限的方式启动;

 代码如下 复制代码
safe_mysqld --skip-grant-tables &

3. 然后用空密码方式使用root用户登录 MySQL;

 代码如下 复制代码
mysql -u root

4. 修改root用户的密码;

 代码如下 复制代码
mysql> update mysql.user set password=PASSWORD('新密码') where User='root';
mysql> flush privileges;
mysql> quit

重新启动MySQL,就可以使用新密码登录了。


三. MySQL密码的恢复方法三
有可能你的系统没有 safe_mysqld 程序(比如我现在用的 ubuntu操作系统, apt-get安装的mysql) , 下面方法可以恢复
1. 停止mysqld;

 代码如下 复制代码
/etc/init.d/mysql stop

(您可能有其它的方法,总之停止mysqld的运行就可以了)
2. 用以下命令启动MySQL,以不检查权限的方式启动;

 代码如下 复制代码
mysqld --skip-grant-tables &

3. 然后用空密码方式使用root用户登录 MySQL;

 代码如下 复制代码
mysql -u root

4. 修改root用户的密码;

 代码如下 复制代码
mysql> update mysql.user set password=PASSWORD('newpassword') where User='root';
mysql> flush privileges;
mysql> quit

重新启动MySQL

 代码如下 复制代码
/etc/init.d/mysql restart

就可以使用新密码 newpassword 登录了。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn