2019-03-31 22:53:49
来 源
中存储网
MySQL
mysql root密码忘记后自然是要重置一个,方法很简单,修改my.cnf文件添加skip-grant-tables,就可以重置mysql root密码了。

信息时代,如何管理各种各样的密码是个挑战,一不小心忘了银行账户的密码,二不小心忘了wifi密码,三不小心忘了mysql数据库root密码...,没关系,忘记了密码的管理员依然是好DBA,哈哈。

mysql数据库 root密码忘记后的修改方法分享-centos环境下

mysql root密码忘记后自然是要重置一个,其实很简单,分享centos mysql root密码修改方法如下:

1.首先确认服务器处于安全的状态,也就是没有人同时连接这个MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库处于完全没有密码保护的 

状态下,其他的用户也可以任意地登录和修改MySQL的信息,非常危险,解决方法就是将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。如果条件允许,最安全的状态是拔掉网线。。。

2.修改my.cnf文件: 

# vi /etc/my.cnf 

在[mysqld]部分尾部加上一句:skip-grant-tables 

# The MySQL server

[mysqld]

port            = 3306

socket          = /tmp/mysql.sock

skip-external-locking

log-error=/a/log/mysql/error.log

key_buffer_size = 16M

max_allowed_packet = 1M

table_open_cache = 64

sort_buffer_size = 512K

net_buffer_length = 8K

read_buffer_size = 256K

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 8M

skip-grant-tables

保存并且退出vi。

3.重新启动mysql 

# service mysqld restart 

Stopping MySQL: [ OK ] 

Starting MySQL: [ OK ]

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

# mysql

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or g.

Your MySQL connection id is 30

Server version: 5.5.37-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respectiveowners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> use mysql ; 

Database changed 

mysql> UPDATE user SET Password = password ( '新的root密码' ) 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

5.将my.cnf中的skip-grant-tables注释掉或删除 

# vi /etc/my.cnf 

将刚才在[mysqld]的段中加上的skip-grant-tables前边加#注释掉,或者直接删除 

保存并且退出。

6.重新启动mysqld 

# service mysqld restart 

Stopping MySQL: [ OK ] 

Starting MySQL: [ OK ]

7.重新登录mysql验证一下root密码。

怎么样,是不是改好了,真的很简单,不过一定要确保安全哦。

另一种方法介绍(网上看到,未验证)

相对于上面的skip-grant-tables方法,有人提供了另外一种修改,优点是只需要重启一次,且基本上不存在安全隐患。

1、关闭实例

/2、创建一个sql文件

写上密码修改语句

# vi init.sql 
alter user 'root'@'localhost' identified by '123456';

3、使用--init-file参数,启动实例

# bin/mysqld_safe --defaults-file=my.cnf --init-file=/usr/local/mysql57/init.sql &

实例启动成功后,密码即修改完毕。 

如果mysql实例是通过服务脚本来管理的,除了创建sql文件,整个操作可简化为一步。

# service mysqld restart --init-file=/usr/local/mysql57/init.sql 

注意:该操作只适用于/etc/init.d/mysqld这种服务管理方式,不适用于RHEL 7新推出的systemd。

时间有限没有测试这种方法,应该是没有问题。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。