mysql数据库管理员口令丢失的处理方法

来源:互联网 发布:linux tomcat 慢 编辑:程序博客网 时间:2024/06/05 00:22


对于数据库软件,其他用户的密码忘记了,拿系统账户登录上去修改一下就可以了。但如果是系统账户的密码忘记了,只要能够用操作系统管理员的身份登录,还是可以处理的。
需要注意的是,非常规方式重置系统管理员账户的密码,对mysql的正常运行是有影响的,因为操作过程中必须多次重启mysql服务。


mysql官方给出的非常规方式重置系统管理员账户有两种方法:
(1)启动mysql服务时附加参数 -init-file,是其直系含有密码重置的脚本,达到修改账户的目的;
(2)启动mysql服务时,通过附加特殊的参数,使其跳过权限验证,而后登录数据库中重置密码后,再按照正常的方式重启mysql服务。
前一种方式安全性更强,操作的步骤稍多一些,而且不同平台执行的命令也稍有差异,后一方法通用性强,适用范围广(Windows、Linux、Unix平台均适用)。


第二种方法具体操作步骤如下:
1.停止当前的mysql服务
由于没有管理员账户密码,常规关停方法无法使用,可以直接杀进程(不加-9参数),对于Windows平台可以在“服务”中停止MySQL服务,Linux、Unix平台则查找到mysqld主进程后杀掉该进程:
$ kill 'cat /data/mysqldata/3306/mysql.pid'


2.修改参数重新启动mysqld服务
跳过mysql密码验证的参数是 --skip-grant-tables 选项,该选项可以加入到启动命令中,或者配置在my.cnf文件中,然后启动mysql数据库。这两种方法分别为:

a.参数加入配置文件的方法为:
# vi /etc/my.cnf
在【mysqld】选项中加入:
skip-grant-tables
然后重启mysql服务:
# service mysqld restart


b.使用命令加参数的方法启动步骤为:
$ mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf --skip-grant-tables --skip-networking&
在参数启动命令中加入skip-networking参数是在数据库启动后,禁止mysql服务监听来自TCP/IP的连接,禁用了网络上其他助剂发出的登录请求,只允许mysql服务本地创建连接,安全性更高。


3.登录数据库修改root密码
按照上面的方法启动数据库服务后,就可以无需验证,直接登录到mysql数据库里:
$ mysql
msqyl> 
所连接的用户都是系统用户,默认是root,执行update语句,修改系统管理员账户的密码:
mysql> update mysql.user set password=password('passw0rd') where user='root';
mysql> flush privileges;


4.再次重启mysql服务,恢复正常启动方式
关闭MySQL服务,可以使用常规的mysqladmin命令关闭:
$ mysqladmin shutdown

如果第2步中是用的参数加入配置文件的方法,则需要执行:
# vi /etc/my.cnf
在【mysqld】选项中修改:
#skip-grant-tables
然后执行数据库启动命令:
$ mysqld_safe --defaults-files=/etc/my.cnf &

如果是用命令加参数的方式启动,则执行执行数据库启动命令即可。

5.使用修改后的密码验证数据库登录
mysql数据库重启后,可以使用下面的命令进行验证:
$ mysql -u root -ppassw0rd

如果可以正常登录,则说明系统管理员账户的密码重置完毕,接下来就可以用刚刚设定的新密码来管理mysql数据库了。

0 0
原创粉丝点击