你的位置:首页 > 数据库

[数据库]如何解决mysql stop fail的问题


最近在学习mysql,碰到了一个mysql stop fail的问题,在这里把碰到的问题以及解决的过程写出来,不是这个问题有多难,而是我在解决此问题的过程中没有发现一个行之有效的解决问题的中文网页,搞得白白浪费了很多时间。在这里我把解决的过程写下来,希望给后来者解决相同的问题节省点时间。好了,废话不多说,开始进入正题。

我的操作系统环境是ubuntu 14.04,64位,安装mysql过程如下:

由于更改了mysql的配置文件,需要重启一下mysql,我通过下面两个命令来stop mysql:

当然也试过网上所说的service mysql stop,然后并没有卵用。在搜索了多次以后,最后在一个英文的论坛中找到的解决方法。在该问题的版面也有很多的回答者给出了“方法”,只有一位给出的方法解决了我的问题。

该问题的解决过程是这样子的:

1、以root权限登陆mysql,执行如下的sql语句:
    select User from mysql.user

看看在mysql数据库下的user表中是不是存在一个名为:debian-sys-maint的用户,执行上面的sql语句在我的机器上返回的结果如下图所示:

如果在你的查询返回的结果集中不存在用户debian-sys-maint,那么你需要执行第二个步骤,如果有debian-sys-maint用户,那么你需要执行第三个步骤。

2、执行sql语句:CREATE USER 'debian-sys-maint‘@'localhost' identified by 'password'

我简单解释一下该sql语句:创建一个名为debian-sys-maint的用户,password为该用户使用mysql的密码,那么password字段的值我们如何指定呢?是任意指定吗?不是,password字段的值得需要与文件/etc/mysql/debian.cnf中的debian-sys-maint的密码保持一致,在我的机器上/etc/mysql/debian.cnf文件的内容如下:

3、如果执行了第二步了,那么你就可以成功stop mysql,不需要执行第三步了。第三步的过程如下:

首先执行如下的sql语句,查看debian-sys-maint所在行的password字段的值与/etc/mysql/debian.cnf中的debian-sys-maint所对应的password是否相同,

由于在mysql中密码是被加密存储的,所以我们根本无法比较两个密码,由于我们需要的是两处的密码保持一致,所以执行下面的sql语句:

update user set password=PASSWORD("password from /etc/mysql/debian.cnf") where User='debian-sys-maint'

此处password from /etc/mysql/debian.cnf为在/etc/mysql/debian.cnf文件中debian-sys-maint所对应的密码,大家千万别搞错了。

这样就可以成功stop mysql了。

多说一句,大家平时解决问题还是多采用英文,中文的东西鱼龙混杂,很多噪音,不仅不能帮你解决问题,还把带到沟里,白白浪费时间。

好了,还是最后标志性的那句话:我所说的都是错的,当然也包括这一句。