我的MySQL安装已损坏。如何完全重新配置它?


20

这是我完成的以下命令。

$ sudo service mysql start
mysql start/running

$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

$ aptitude search mysql |grep ^i
i   libapache2-mod-auth-mysql       - Module Apache 2 pour l'authentification vi
i   libdbd-mysql-perl               - Perl5 database interface to the MySQL data
i   libmysqlclient16                - MySQL database client library             
i   mysql-client-5.1                - MySQL database client binaries            
i   mysql-client-core-5.1           - MySQL database core client binaries       
i   mysql-common                    - MySQL database common files, e.g. /etc/mys
i   mysql-server-5.1                - MySQL database server binaries and system 
i   mysql-server-core-5.1           - MySQL database server binaries            
i   php5-mysql                      - MySQL module for php5                     

ALM -找到你mysql.log cat /var/log/mysql.log和编辑你的答案withthis文件....
hhlp

5
我喜欢您在那里使用grep ^ i的方式。很聪明。
Luis Alvarado

它到底是做什么的?能力是安装工具。
user4951 2012年

@JimThio就是要找到与此问题相关的已安装软件包。
恢复莫妮卡-ζ-2012年

Answers:


16

重新安装之前,请检查/ var / log / mysql中的日志文件,其中可能包含有关mysql无法正常工作的线索。如果没有日志,则可能未在您的配置中启用到文件的日志:配置Mysql错误日志

要重新安装任何软件包,请使用

dpkg -l|grep mysql-server

然后用于5.7版

sudo apt-get install mysql-server-5.7 --reinstall

如果这不允许您重新配置软件包,则可以使用

sudo dpkg-reconfigure mysql-server-5.7

当我从11.10升级到12.04时,sudo dpkg-reconfigure mysql-server-5.1帮了我大忙,我的mysqld无法启动,我不得不手动进行sudo mysqld
Hanynowsky 2012年

7

错误2002(HY000):无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2)

在MySQL安装中,可以指定本地连接套接字的位置。进行更新时并不少见于错误“无法通过本地连接到本地MySQL服务器套接字”。让我们看看如何解决这个问题。

错误看起来像这样:

Mysql-u root-p
Enter password:
ERROR 2002 (HY000): Can not connect to local MySQL server-through socket '/ tmp / mysql.sock' (2)

通过ps我们可以看到是否由参数指定以及它在哪里:

# ps -fea | grep mysqld
mysql    17661 14003  1 Feb19 ?        00:24:59 /usr/local/mysql-percona/libexec/mysqld --basedir=/usr/local/mysql-percona --datadir=/var/data/mysql/datadir/data --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log
root     23790  7840  0 09:25 pts/0    00:00:00 grep mysqld

在这种情况下,我们看到in /var/lib/mysql/mysql.sock。如果找不到作为参数,则应查看mysqld部分/etc/my.cnf以找到该参数:

grep socket /etc/my.cnf
socket=/var/lib/mysql/mysql.sock

如果我们知道它在哪里,则需要修改相同的文件(/etc/my.cnf)并添加参数部分socket client:

[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

1
那就是我要回答的问题。我已经知道这是几乎所有与之相关的问题的正确答案。当我再次获得能力时会为您+1。
路易斯·阿尔瓦拉多

感谢您的详尽解释!就我而言,即使我在my.cnf中指定了一个套接字,它也没有侦听它(“ ps”中显示的参数为空,无法建立连接。解决方法:将“ protocoll = tcp”添加到my.cnf的客户端部分中,强制使用tcp而不是套接字
Tapper 2012年

2

对于后面的查看者:
当我无法升级mysql-server软件包时,我遇到了类似的错误,但是我发现这解决了我的问题。如果sudo apt-get install -f不起作用,请尝试sudo apt-get purge mysql*。现在,您可以重新安装mysql-server。


1
请注意, sudo apt-get purge mysql不会保留你的数据库
尼尔森Owalo

1

我遇到的问题之一是知道我遇到哪个版本的问题。这是一个好主意:

$ aptitude search mysql |grep ^i

但是,我发现此问题很关键:

$ apt-get --reinstall install mysql-server-5.x

(其中x是版本。如果不添加此版本,则可能是使用了错误的dpkg。


0

这对我有用

sudo apt purge mysql*
sudo apt autoremove
sudo apt autoclean
sudo apt install mysql-server

描述

1)第一条命令通过配置文件删除与MySQL相关的所有内容。

2)第二个删除那些不再需要的软件包。


法语[!]:

1)DigitalOcean

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.