信息时代,如何管理各种各样的密码是个挑战,一不小心忘了银行账户的密码,二不小心忘了wifi密码,三不小心忘了mysql数据库root密码...,没关系,忘记了密码的管理员依然是好DBA,哈哈。
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。
时间有限没有测试这种方法,应该是没有问题。