阿里云Linux CentOS 7.2下自建MySQL的root密码忘记解决方法
以下所有内容都来自于网络,一部分来自于自己的理解。
验证环境:
[root@~~/]
# rpm -qa | grep mysql
mysql-
5.6.28-
1.el6
.x86_64
[root@~~/]
# lsb_release -a
LSB Version: :core-
4.1-amd64:core-
4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release
7.2.1511 (Core)
Release: 7.2.1511
Codename: Core
[root@~~/]
# uname -r
3.10.0-
327.22.2.el7
.x86_64
首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
修改MySQL的登录设置:
在[mysqld]的段中加上一句:skip-grant-tables
[root@~~/]
# vi /etc/my.cnf
例如:
[mysqld]
datadir=/var/
lib/mysql
socket=/var/
lib/mysql/mysql.sock
skip-grant-tables
保存并且退出vi。
重新启动mysqld
[root@~~
/]# /etc/init.d/mysqld restart
Stopping MySQL: [
OK ]
Starting MySQL: [
OK ]
登录并修改MySQL的root密码
[root@~~/]
Welcome
to the MySQL monitor. Commands
end with ;
or \g.
Your MySQL connection
id is 1
Server
version:
5.6.28-
log Source distribution
Copyright (c)
2000,
2015, 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 respective
owners.
Type 'help;'
or '\h'
for help. Type '\c'
to clear
the current input statement.
mysql> use mysql;
mysql> update user
set password=password(
"test")
where user='root';
mysql> flush privileges;
mysql>
exit;
Bye
将MySQL的登录设置修改回来
将刚才在[mysqld]的段中加上的skip-grant-tables删除,保存并且退出vi;
[root@~~/]
保存并且退出vi。
再次重新启动mysqld
[root@~~
/]# /etc/init.d/mysqld restart
Stopping MySQL: [
OK ]
Starting MySQL: [
OK ]
使用新的密码登录,正常登录
如果外网不能访问数据库,可以进行如下操作:
[] - -- -- ---
[] - --