1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。
可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。
2.修改MySQL的登录设置:
#
vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables 例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
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 ]
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;
Database changed
mysql> UPDATE user SET 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
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;
Database changed
mysql> UPDATE user SET 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
经过以上步骤,mysql的root密码设置为空
5.将MySQL的登录设置修改回来
#
vi /etc/my.cnf
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld
#
/etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
7.更改mysql密码
#
mysqladmin -uroot -p password 你的mysql密码
例如:mysqladmin -uroot -p password abc123
如果提示mysqladmin: command not found,使用如下命令
#
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
然后在使用mysqladmin命令。使用mysqladmin命令后需要输入原密码。原密码为空,所有直接回车。
Enter password:
登陆使用密码登陆mysql
#
mysql -uroot -pabc123
mysql>
mysql>
登陆成功,至此,mysql的root密码更改完毕。