经常遇到需要修改MySql密码的情况,原因多种多样。这里以root用户为例,给出一个修改密码的终极方案。
1.
记得旧密码 这种情况下修改密码最简单,直接使用如下命令即可(注:确保mysql服务器处于运行状态)
- mysqladmin -h localhost -u root -p password 'your new password'
回车后,会要求你输入旧密码,如果旧密码正确,则新密码设置成功。
上面的命令选项p后面有一个mysql函数
pasword,该函数会将后面的新密码加密。在MySql5.1的版本上,加密后转化后的长度为41。
2.
忘记旧密码 MySql的用户账号信息是保存在mysql数据库的user表中的,因此,如果能直接修改该表中的相应用户的密码值,就实现了密码的修改。
2.1
linux平台2.1.1 安全检查
确保服务器处于安全状态,即没人可以任意地连接MySql数据库。因为在重新设置MySql的root密码期间,数据库的访问处于无验证状态,任意用户都可以登录和修改数据库信息。一种较普遍的做法是封闭MySql对外的端口,并停止Apache及所有用户进程。当然,最安全的方式是断网,直接在服务器的终端上操作,但多数情况下,这是不现实的。
2.1.2 修改启动配置
2.1.3 在[mysqld]段中加入一行:skip-grant-tables
- ....
-
[mysqld]
-
user = mysql
-
pid-file = /var/run/mysqld/mysqld.pid
-
socket = /var/run/mysqld/mysqld.sock
-
port = 3306
-
basedir = /usr
-
datadir = /var/lib/mysql
-
tmpdir = /tmp
-
language = /usr/share/mysql/english
-
skip-external-locking
-
skip-grant-tables
-
....
2.1.4 重启mysql
- # /etc/init.d/mysqld restart
2.1.5 登陆mysql并改密码
- # /usr/bin/mysql
-
Welcome to the MySql monitor. Commands and with ; or \g...
-
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
-
-
mysql> use mysql;
- Database changed
-
-
mysql> UPDATE user SET Password = password('your new 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
-
-
mysql> quit
2.1.6 恢复启动配置
参照2.1.2的操作,将该步添加的skip-grant-tables注释或删除
2.2
BSD平台 BSD平台上,启动脚本路径与Linux不同(当然,Linux不同的发行版也略有差异)。并且没有my.cnf配置文件。具体做法如下:
- 停止MySql: /usr/local/etc/rc.d/mysql-server.sh stop
- 无验证启动:/usr/local/bin/safe_mysqld --user=mysql --datadir=/var/db/mysql --skip-grant-tables
- 参考2.1.5的方法修改密码
2.3
Windows平台- 停止mysql服务
- 参照2.1.2的方式修改${MYSQL_HOME}\bin下的my.ini文件
- 参考2.1.5的方法修改密码
- 恢复刚刚修改的my.ini文件
阅读(1737) | 评论(0) | 转发(0) |