MySQL无法启动!


12

尝试从命令行登录MySQL时出现此错误:

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

我认为这意味着MySQL尚未启动。因此,我尝试启动它:

sudo /etc/init.d/mysql start

我收到此消息:

* Starting MySQL database server mysqld [fail] 

我在哪里/如何做才能启动MySQL?我正在运行Ubuntu 8.04,并通过apt-get安装了MySQL。我已经能够启动它并使用了几次,所以我不知道为什么它停止了工作。

更新:当运行sudo /etc/init.d/mysql status时,我收到消息:

* MySQL is stopped.

更新#2:我的日志文件(/var/log/mysql.log和/var/log/mysql.err)为空(如果这些文件正确)


当您使用sudo /etc/init.d/mysql status时会发生什么
emgee

Answers:


10

在Ubuntu 12.04上,更改/etc/mysql/my.cnf文件中的缓冲区大小后,我遇到了同样的问题,我觉得有些不高兴。无论如何,尝试将它们更改回默认设置后,MySQL仍然无法启动。

我尝试了几种不同的方法来解决它,但我确实注意到/var/run/mysql/mysql.sock丢失了。这可能是一个问题,因此您可以在此处进行检查,如果缺少该位置,则可以执行以下操作来替换它:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

这根本不是解决问题的我!但这可能对某些人而言。

我要做的是完全重新安装MySQL,要执行此操作,您将需要使用sudo命令。完全删除和重新安装MySQL的步骤如下:

删除MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

(可选)您可以使用aptitude,方法是将apt-get --purge替换为aptitude

清理

sudo apt-get autoremove
sudo apt-get autoclean

删除MySQL目录

sudo rm -rf /etc/mysql

安装MySQL

sudo apt-get install mysql-server mysql-client

MySQL现在应该正在运行,您可以通过以下操作进行检查:

sudo service mysql status

你应该看到

mysql start/running, process xxxxx

希望这会有所帮助,并认为我可以在完成所有可用的数据库和表之后添加,但是我必须为这些数据库重新创建用户和密码。

注意:如果您有php的mysql扩展名,则也需要重新安装它。

sudo apt-get install php5-mysql

这对我有用,但是我不得不将其更改为: sudo touch /var/run/mysqld/mysqld.sock我从结尾处发现了这一点/var/log/syslog (例如,更改为mysqld)
Programster

/var/run/mysqld还是/var/run/mysql
CMCDragonkai

触摸袜子文件是一个坏主意-您创建了一个常规文件,当它确实是一个套接字时,这是一种特殊的文件。
Criggie

3

警告:这很危险,您的mysql将不安全,任何人都可以连接,编辑表等,请勿使服务器使用此命令运行。

尝试以安全模式启动它: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

如果这可行,则您的information_schema或mysql表可能存在问题。如果不起作用,则说明您的安装存在问题。


1
很好,它为您提供了syslog中的详细错误。命令已更改,在Ubuntu 12.04上,它是sudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000 2012年


3

更新ubuntu后,我最近也遇到了这个问题。尚不确定到底是什么问题。目前可以使mysql运行的一个工作原理是:

sudo aa-complain /etc/apparmor.d/*mysql*

这样就可以正常工作,表明apparmor停止了mysql的运行,并解释了为什么日志也可能为空:不允许mysql运行。

到目前为止,这仍然是一个奇怪的问题,因为在此方面没有“投诉” /var/log/apparmor,而kern.log中唯一的审核条目是从将配置文件更改为投诉模式。

请注意,这样做时我还添加了一个(空)/etc/apparmor.d/local/usr.sbin.mysql文件,因为aa-complain命令抱怨找不到该文件。


非常感谢你!在接近将我的头发撕开之后,它终于固定好了。
Olathe 2013年

3

我的512MB Digital Ocean Droplet存在相同的问题。

原来是由于内存不足。

即时解决方案是重新启动其他服务以释放内存,例如。

sudo service apache2 restart

然后希望有足够的内存,您应该能够重新启动mysql

sudo service mysql restart

长期解决方案是获取更多RAM或创建交换内存


2

看一下您的日志文件。至少在Debian上,您会获得mysql *登录/var/log


3
mysql.err和mysql.log都为空
安德鲁

1

遇到了同样的问题,结果解决方案使我无所适从。驱动器已满。您没有日志,因为没有写日志的地方.....


0

在从PPA安装了mysql 5.6的Ubuntu 12.04 Digital Ocean VPS上,同样的问题困扰了我很多年。症状是,/var/run/mysqld/mysql.sock将删除mysql.sock文件,但从未重新创建它,因此,每次更新mysql或重新启动服务器时,我都必须手动运行以下命令:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

这是从Kyle C的答案中获得的(除了mysqld而不是mysqld)。最后我降级到了mysql 5.5,这是您通常会执行sudo apt-get install mysql-server命令的时候。但是,这并非一帆风顺,所以这是我必须要做的:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

希望这可以帮助其他同样痛苦的人。


0

认为这可能对其他人有帮助...就在这里。

我想将mysql 5.5(ubuntu的默认设置)迁移到新的5.7
(希望与新的本机JSON类型一起玩)

我按照说明安装了最新版本。...
但是MySQL不想启动。

花了很长时间寻找,然后在中找到了这一行/var/log/mysql/errors.log

unknown variable 'key_buffer=16M'

这就是/etc/mysql/my.cnf我在升级过程中选择保留的设置。

所以,这之后很容易:
用位于同一目录中的版本替换了我my.cnfmy.cnf.dpkg-dist版本...

然后不得不跑

sudo mysql_upgrade -u root -p sudo service mysql restart

现在MySQL已备份并运行


0

在可能出错的地方发现了另一种变化。我移动了数据目录,结果我忘记为mysql用户设置目录,该目录也失败,没有任何输出。事后看来,这显然是错误的,但是缺少错误消息使每个琐碎的问题都很难找到。

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.