Home > Database > Mysql Tutorial > CentOS下重置MySQL的root密码的教程_MySQL

CentOS下重置MySQL的root密码的教程_MySQL

PHP中文网
Release: 2016-05-27 13:45:50
Original
1033 people have browsed it

本人在CentOS6.4上安装万mysql后,无法通过root进入,因为安装的时候,并没有设置root密码,似乎有个初始随机密码,但是不记得了,太麻烦,直接重置root密码。
首先,你必须要有操作系统的root权限了。要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤。

PS:赋予用于root权限
方法一: 修改 /etc/sudoers 文件,找到%wheel一行,把前面的注释(#)去掉


## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
Copy after login


然后修改用户,使其属于root组(wheel),命令如下:


#usermod -g root tommy
Copy after login


修改完毕,现在可以用tommy帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

方法二: 修改 /etc/sudoers 文件,找到root一行,在root下面添加一行,如下所示:


## Allow root to run any commands anywhere
root ALL=(ALL)  ALL
tommy ALL=(ALL)  ALL
Copy after login


修改完毕,现在可以用tommy帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:


tommy:x:500:500:tommy:/home/tommy:/bin/bash
Copy after login


修改后如下


tommy:x:0:500:tommy:/home/tommy:/bin/bash
Copy after login


保存,用tommy账户登录后,直接获取的就是root帐号的权限。


root下类似于安全模式登录系统,有人建议说是pkill mysql,但是我不建议哈。因为当你执行了这个命令后,会导致这样的状况:


/etc/init.d/mysqld status
mysqld dead but subsys locked
Copy after login


这样即使你是在安全模式下启动mysql都未必会有用的,所以一般是这样/etc/init.d/mysqld stop,如果你不幸先用了pkill,那么就start一下再stop咯。
使用rpm包安装完mysql后,按照一下步骤重置root密码:
启动mysql:


#/etc/init.d/mysql start
Copy after login


启动成功后查看mysql进程信息,获取mysqld_safe的安装目录(非常关键):


#ps -ef | grep -i mysql
root  3466  1 0 01:45 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe 
--datadir=/var/lib/mysql --pid-file=/var/lib/mysql/BSC.TEST.pid
mysql  3569 3466 16 01:45 pts/1 00:00:00 /usr/sbin/mysqld 
--basedir=/usr 
--datadir=/var/lib/mysql 
--plugin-dir=/usr/lib64/mysql/plugin 
--user=mysql 
--log-error=/var/lib/mysql/BSC.TEST.err 
--pid-file=/var/lib/mysql/BSC.TEST.pid
root  3597 3105 0 01:45 pts/1 00:00:00 grep -i mysql
Copy after login


可以看到mysqld_safe的安装位置(上面标蓝色部分):/usr/bin/
接着执行一下命令停止mysql:


/etc/init.d/mysql stop
Copy after login


以安全方式启动mysql:


#/usr/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 &
Copy after login


稍等5秒钟,然后执行以下语句:


#/usr/bin/mysql -u root mysql
Copy after login


注意:mysql与mysql_safe目录一样,都是:/usr/bin/下,这个是通过“ps -ef | grep -i mysql”命令得到的。

出现“mysql>”提示符后输入:


mysql> update user set password = Password('root') where User = 'root';
Copy after login


回车后执行(刷新MySQL系统权限相关的表):


mysql> flush privileges;
Copy after login
Copy after login


再执行exit退出:


mysql> exit;
Copy after login


退出后,使用以下命令登陆mysql,试试是否成功:


#mysql -u root -p
Copy after login


按提示输入密码:


root
Copy after login


但是执行查看数据库命令报错:


mysql> show databases;
Copy after login
Copy after login



ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
Copy after login


解决办法:


mysql> SET PASSWORD=PASSWORD('root');
Copy after login



Query OK, 0 rows affected (0.00 sec)
Copy after login
Copy after login



mysql> flush privileges;
Copy after login
Copy after login



Query OK, 0 rows affected (0.00 sec)
Copy after login
Copy after login



mysql> show databases;
Copy after login
Copy after login



+--------------------+
| Database   |
+--------------------+
| information_schema |
| mysql    |
| performance_schema |
| test    |
+--------------------+
4 rows in set (0.00 sec)
Copy after login


PS:如果在使用mysqladmin的话:


# mysqladmin -u root -p password "test123"
Copy after login



Enter password: 【输入原来的密码】
Copy after login

以上就是CentOS下重置MySQL的root密码的教程_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template