我在Ubuntu 12.04 LTS (Precise穿山甲)上安装了LAMP,然后在phpMyAdmin上设置根密码。我忘记密码了,现在无法登录。当我试图通过终端更改密码时,我得到:

错误2002 (HY000):无法通过套接字连接到本地MySQL服务器 ' / var /运行/ mysqld / mysqld。袜子”(2)

我该如何解决这个问题?我无法打开LAMP,卸载它或重新安装它。


当前回答

在我的情况下,我错过了mysql服务器。所以在通过sudo apt-get install mysql-server安装它之后,我又可以连接了。

其他回答

检查my.cnf中的“bind- address”参数。

否则,尝试使用命令:

mysql -h 127.0.0.1 -P 3306 -u root -p

-h表示主机127.0.0.1,即localhost -P(注意-P为大写)用于3306端口,即MySQL的默认端口

我通过杀死mysql进程来解决这个问题:

ps -ef | grep mysql
kill [the id]

然后我再次启动服务器:

sudo /etc/init.d/mysql restart

但是start也同样有效:

sudo /etc/init.d/mysql start

然后我以管理员身份登录,就搞定了。

对我来说是:

打开/etc/mysql/my.cnf或/etc/my.cnf,搜索“bind-address”。结果是127.0.0.1。我将其转换为localhost,因此行结果应该是'bind-address = localhost'。

否则,你应该使用bind-address指令中存在的IP地址运行你的MySQL服务器,即MySQL -h 127.0.0.1。

我在Ubuntu上有这个,正如我所发现的,有不止一个mysqld实例。

看起来上一个还没有完全停止,而新的已经开始了。运行/ etc / init。d/mysql stop'没有帮助,它总是返回'OK',并且在那之后会自动启动一个新实例:

        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28315
        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28570
        $ sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28763
        ..... etc ...

幸运的是,下面的命令已经解决了这个问题:

    $ sudo service mysql stop
    mysql stop/waiting

    $ ps -ef | grep mysql
    29841 26858  0 10:59 pts/8    00:00:00 grep --color=auto mysql <--- IT's gone ! 

之后,我能够再次启动mysql,并看到mysql。Sock已经创建成功。

我通过在mysqld部分([mysqld])中删除/etc/mysql/my.conf中的这一行来解决这个问题:

default-character-set=utf8

重新启动,它可以正常工作。