我在LAMP(精确穿山甲)上安装了Ubuntu 12.04 LTS,然后在phpMyAdmin上设置了root密码。我忘记了密码,现在我无法登录。当我尝试通过终端更改密码时,我得到:
ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器 '/var/run/mysqld/mysqld.sock'(2)
我该如何解决这个问题?我无法打开LAMP,卸载它或重新安装它。
答案 0 :(得分:212)
我曾遇到此问题并通过安装mysql-server
解决了这个问题,因此请确保您已安装mysql-server
,而不是mysql-client
或其他内容。
该错误表示文件/var/run/mysqld/mysqld.sock
不存在,如果您未安装mysql-server
,则该文件将不存在。但是如果mysql-server
已经安装并且正在运行,那么您需要检查配置文件。
配置文件是:
/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf
在/etc/my.cnf
中,套接字文件配置可能是/tmp/mysql.sock
,而/etc/mysql/my.cnf
中的套接字文件配置可能是/var/run/mysqld/mysqld.sock
。因此,删除或重命名/etc/mysql/my.cnf
,让mysql使用/etc/my.cnf
,然后问题就可以解决了。
答案 1 :(得分:172)
试试这个:
mysql -h 127.0.0.1 -P 3306 -u root -p <database>
另外(看看它是否正在运行):
telnet 127.0.0.1 3306
my.cnf
文件/etc/somewhere
中的错误配置可能只是错误配置(取决于Linux distribution)。
答案 2 :(得分:103)
我看到了所有这些答案,但无提供了重置密码和没有接受的答案的选项。实际的问题是他忘记了他的密码,所以他需要重置,而不是看它是否正在运行(已安装或未安装),因为大多数这些答案都是暗示的。
按照以下步骤操作(如果您真的忘记了密码,可以提供帮助,即使您目前不在这种情况下也可以随时尝试使用密码):
停止class A < B::C::D
include B
attr_accessor :d
def initialize
@msg = 'Hello world'
super
end
end
mysql
或其他分销版本:
sudo /etc/init.d/mysql stop
以安全模式启动MySQL
sudo /etc/init.d/mysqld stop
使用root
登录MySQLsudo mysqld_safe --skip-grant-tables &
选择要使用的MySQL数据库
mysql -uroot
重设密码
use mysql;
冲洗权限
update user set password=PASSWORD("mynewpassword") where User='root';
重启服务器
flush privileges;
再次停止并启动服务器
Ubuntu和Debian:
quit
在CentOS,Fedora和RHEL上:
sudo /etc/init.d/mysql stop
...
sudo /etc/init.d/mysql start
使用新密码登录
sudo /etc/init.d/mysqld stop
...
sudo /etc/init.d/mysqld start
输入新密码并再次享受您的服务器
这取自 Reset a MySQL root password 。
更新来自@ Daniel的评论:
在MySQL 5.7中,mysql.user表字段中的密码字段已被删除,现在字段名称为&#39; authentication_string&#39;,因此步骤5应为:
mysql -u root -p
答案 3 :(得分:61)
我尝试了以下步骤:
super user
身份登录或使用sudo
/etc/mysql/my.cnf
bind-address
,并将其值更改为数据库服务器主机的IP地址。对我而言,它是localhost
或127.0.0.1
sudo service mysql start
它对我有用。
答案 4 :(得分:36)
我通过执行以下命令解决了这个问题:
mysql.server start
如果您使用的是mac并使用brew来安装mysql,只需使用:
brew services start mysql
答案 5 :(得分:30)
我有类似的问题。 mysql无法启动:
sudo service mysql start
start: Job failed to start
如果我禁用了apparmor:
sudo aa-complain /etc/apparmor.d/*
问题消失了。问题是mysqld试图访问/run/mysqld/mysqld.sock但是apparmor配置文件只给了/var/run/mysqld/mysqld.sock的权限(/ var / run符号链接到/ run,所以这些实际上是相同)。不知道为什么mysqld没有使用var路径,因为这是在所有配置文件中设置的,但你可以通过将以下内容添加到/etc/apparmor.d/usr.sbin.mysqld来解决问题
/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
答案 6 :(得分:27)
我通过杀死mysql
进程解决了这个问题:
ps -ef | grep mysql
kill [the id]
然后我再次启动服务器:
sudo /etc/init.d/mysql restart
但start
也有效:
sudo /etc/init.d/mysql start
然后我以admin
登录,我就完成了。
答案 7 :(得分:26)
在我的情况下,磁盘已满,mysqld无法启动。
尝试重启mysql服务。
service mysql restart
或
服务mysql停止
service mysql start
如果它无法识别“停止”命令,那么肯定是磁盘空间。你应该在分区mysql中分配一些空间,或者让磁盘变大。
使用
检查磁盘空间df -h
答案 8 :(得分:19)
不知何故,MySQL服务器进程没有创建套接字,或者客户端正在寻找错误位置的套接字。
我的第一个建议是检查MySQL服务器是否正在运行。第二个建议可能是MySQL服务器在另一台主机上运行吗?如果是这样,请将-h <hostname>
标志添加到终端中的MySQL客户端。
如果MySQL确实正在运行并在本地运行,请检查您的my.cnf
文件。应该有像
socket = /var/run/mysqld/mysqld.sock
查看它是否与您在帖子中提到的套接字位置匹配。
根据经验,我想说最可能的情况是你的MySQL服务器根本没有运行,或者没有在你从终端运行MySQL客户端的同一主机上运行。
答案 9 :(得分:19)
我刚刚重启生产服务器后遇到了同样的问题。我在DigitalOcean Droplet上运行Debian 8.1(Jessie)。
这就是我解决问题的方法:
检查文件/var/run/mysqld/mysqld.sock
是否存在。如果没有,请输入touch /var/run/mysqld/mysqld.sock
(这是我必须做的)手动创建它。
因此MySQL进程可以使用此文件。通过输入chown mysql /var/run/mysqld/mysqld.sock
来更改所述文件的所有权。
完成“2”后,输入service mysql restart
或/etc/init.d/mysql restart
重启MySQL服务。
完成上述步骤后,我的问题就解决了。我很少遇到这个问题,而且可能有更好的方法,所以如果需要,请务必提供建设性的反馈:)。
答案 10 :(得分:15)
你的mysql-server可能没有运行。通过在终端中输入mysql.server start
确保它运行。
答案 11 :(得分:11)
这对我有用:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart
这会创建一个链接。
答案 12 :(得分:11)
检查my.cnf中的"bind-adress"
参数。
请尝试使用以下命令:
mysql -h 127.0.0.1 -P 3306 -u root -p
-h for host 127.0.0.1
,即localhost
3306
的-P(注意-P为大写),即MySQL的默认端口
答案 13 :(得分:10)
如果您正在使用Amazon EC2,并且您在实例上遇到此问题,那么您只需执行以下操作:
sudo yum install mysql-server
sudo service mysqld restart
Amazon EC2没有安装服务器(只安装了客户端),因此如果需要在您的实例上安装,请尝试
mysql -u root -p
检查是否有效。
答案 14 :(得分:9)
而不是使用localhost:
mysql -u myuser -pmypassword -h localhost mydatabase
使用127.0.0.1
mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase
(另请注意,-p和mypassword之间没有空格)
享受:)
答案 15 :(得分:9)
我想每当你收到错误
ERROR 2002(HY000):无法通过socket&#39; /var/lib/mysql/mysql.sock'连接到本地MySQL服务器;
我建议先检查你的mysql
守护程序是否正在运行...大多数情况下它默认不运行。您可以/etc/init.d/mysqld status
进行检查。
如果它没有运行,请先启动它:
.../etc/init.d/mysqld start.
我敢打赌,这将有效率达到110%。
答案 16 :(得分:8)
确保您拥有重要数据库的备份,然后尝试卸载MySQL 相关内容:
apt-get remove --purge mysql\*
然后再次安装:
apt-get install mysql-server mysql-client
这对我有用,数据保存。
如果PHP MySQL显示错误,您可能必须重新安装PHP MySQL :
apt-get install php5-fpm php5-mysql
答案 17 :(得分:7)
我也遇到了这个问题,但我刚刚做了:
sudo service mysql restart
它对我有用。
答案 18 :(得分:7)
如果您的Linux计算机上安装了XAMPP,请尝试将my.cnf
文件从/opt/lampp/etc/my.cnf
复制到/etc/my.cnf
。
然后,再次运行mysql -u root
...您现在应该拥有正确的套接字并能够运行MySQL客户端。
答案 19 :(得分:6)
看来您的MYSQL已停止。使用以下命令再次启动MySQL
sudo service mysql start
答案 20 :(得分:6)
如果您的安装是最近的,您应该确认您的安装是否是安装服务器...作为mysql-server-5.5 ..也许您只安装了“mysql”..这只是客户端而不是服务器。< / p>
答案 21 :(得分:6)
在我的情况下,默认端口3306正被其他进程使用,因此它没有启动。我停止了其他服务后做了sudo service mysql start
,它运行正常。顺便说一句,您可以使用类似sudo lsof -Pn -iTCP:3306
的内容来查看谁可能正在使用该端口。
答案 22 :(得分:6)
我找到了解决方案
发布前 命令:mysql_secure_installation
sudo systemctl stop mariadb
sudo systemctl start mariadb
mysql_secure_installation
然后它会询问root密码,您只需按 Enter 并设置新的root密码。
答案 23 :(得分:6)
在我的情况下,通过做一些R&amp; D:
我可以使用
连接到MySQLroot-debian#mysql -h 127.0.0.1 -u root -p
但它不适用于mysql -u root -p
。
我在 my.cnf 中找不到任何bind-address
。所以我在socket=/var/lib/mysql/mysqld.sock
中对参数my.cnf
进行了评论,这导致了登录问题。
重新启动服务后,它很顺利:
root@debian:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)
答案 24 :(得分:5)
mysqld stop
mysql.server start
答案 25 :(得分:5)
根据经验,我说你需要检查服务器是否先运行,然后尝试配置MySQL。最后一个解决方案是重新安装MySQL。
答案 26 :(得分:5)
打开终端并输入:
sudo apt-get purge mysql-client-core-5.6
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-client-core-5.5
sudo apt-get install mysql-server
MySQL数据库核心客户端和MySQL服务器包都是相同的版本5.5。 MySQL Client 5.5和MySQL Server 5.5是Ubuntu 14.04中这些软件包的当前“最佳”版本,由软件包维护者决定。
如果您更愿意安装MySQL Client 5.6和MySQL Server 5.6,您还可以在Ubuntu软件中心找到mysql-client-core-5.6和mysql-server-5.6软件包。重要的是客户端和服务器版本号在任何一种情况下都匹配。
这对我有用。
答案 27 :(得分:5)
我有同样的问题。如果您的MySQL服务被拒绝,有时会发生这种情况。
所以你必须开始它:
sudo service mysql start
答案 28 :(得分:5)
就我而言,当我运行
时,似乎我真的无法杀死mysql进程sudo service mysql stop
ps -ef | grep mysql
mysql进程总是在那里,它看起来像是阻塞了套接字文件而新的mysql进程无法自己创建它。
所以这有帮助
cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
现在我可以使用
登录数据库了mysql -u root
然后更新root密码:
UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;
PS :我无法更新root passwod,看起来像“auth_socket”插件有问题,所以我不得不创建具有完全权限的新用户
insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y", `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y", `Repl_client_priv` = "Y", `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y", `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";
这会创建没有密码的用户“超级”,然后您可以使用mysql -u super
答案 29 :(得分:5)
我通过重启mysql解决了这个问题
/etc/init.d/mysql stop
和
/etc/init.d/mysql start
就是这样。
答案 30 :(得分:5)
在Debian服务器Jessie上,我的工作解决方案是简单地执行
service mysql restart
service mysql reload
答案 31 :(得分:5)
如果您的mysql server
默认未运行,也会遇到同样的问题,它会在几秒钟后再次停止,因此您可以再次运行($ sudo service mysql start
)命令,如果知道的话,可以更改。 / p>
该使用命令
$ sudo service mysql start
(如果需要,请输入用户密码,因为我们使用sudo
)
然后运行
$ sudo mysql -u root -p (put user password if required )
现在您有了数据库
答案 32 :(得分:4)
检查您是否拥有正确的权利:
sudo chmod 755 /var/lib/mysql/mysql
我遇到了同样的问题,这对我有用。在这之后,我能够启动MySQL。
答案 33 :(得分:4)
现在有效......
我已按照教程 Installing MariaDB 10.1.16 on Mac OS X with Homebrew 来解决此问题。
但不要忘记杀死或卸载MariaDB的旧安装。
答案 34 :(得分:4)
在Ubuntu 14.04(Trusty Tahr)上也一样。
如果您已安装XAMPP,安装mysql-server不是解决方案,因为您将访问另一个MySQL!
您必须使用正确的套接字才能访问。通常是这样的:
/opt/lampp/var/mysql/mysql.sock
相反,请将其更改为:
/var/run/mysqld/mysqld.sock
答案 35 :(得分:4)
我遇到了同样的问题。经过多次搜索,我没有找到任何答案。
最后,我检查了/tmp
目录,其权限是755.我将其权限更改为777,mysqld启动良好,没有任何问题。
答案 36 :(得分:2)
对我来说,更新解决了这个问题:
在Ubuntu上:
sudo apt-get update
sudo apt-get upgrade
在CentOS上:
sudo yum update
答案 37 :(得分:2)
在我的情况下,问题是我的所有数据库中的页面损坏(检查mysql错误日志)。
我用Forcing InnoDB Recovery解决了这个问题。诀窍是编辑/etc/mysql/my.cnf并添加
innodb_force_recovery = 4
正好在
之下[mysqld]
然后重启mysql。 检查一切正常后,再次删除该行。
答案 38 :(得分:2)
您可以先检查服务是否正在运行:
ps ax | grep mysql
我收到了这个回复:
6104 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe
6431 pts/0 Sl 0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/m
没有响应意味着服务没有运行,所以:
service mysql start
答案 39 :(得分:2)
安装mysql-server:
sudo apt-get install mysql-server
enter password as root
登录:
mysql -u root -p root
安装MySQL服务器时给出了-u user name
和-p password
。它会起作用,因为它对我有用。
答案 40 :(得分:2)
您缺少创建/ var / run / mysqld目录的权限。因此,请创建并 授予以下权限。
答案 41 :(得分:2)
我无法解释,但在kubuntu 12.04.2之后
sudo apt-get autoremove linux-headers-3.2.0-37 linux-headers-3.2.0-37-generic
它开始起作用了
答案 42 :(得分:2)
For CentOS Linux release 7.3
The mysql.sock file path is /var/lib/mysql/mysql.sock
Edit /etc/my.cnf file and put below entry
This will solve your problem.
[client]
user=root
password=Passw0rd
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0
重启服务后
service mysql restart
答案 43 :(得分:2)
只需将/opt/lampp/etc/my.cnf
文件复制到/etc/mysql/my.cnf
。
在终端类型中:
mysql -u root
您将收到mysql>
提示:
mysql> Update mysql.user set Password=PASSWORD('your_password') where user='root';
mysql> FLUSH PRIVILEGES;
答案 44 :(得分:2)
我的服务器存储已满,这阻止了Mysql的启动。从here得到了这个想法。增加HD并重新启动即可解决此问题。
答案 45 :(得分:1)
我的服务器上的简单解决方案:在使用我的MySQL数据库迁移到新的Debian 7服务器后,hosts file中缺少第二个本地IP地址,127.0.1.1
。添加此解决了警告:
echo -e "\n127.0.1.1 $(hostname)" >> /etc/hosts
答案 46 :(得分:1)
尝试使用
重新启动服务器sudo /usr/local/mysql/support-files/mysql.server start
如果有任何错误,请按照以下步骤进行操作
mysqld
您将看到以下日志。请注意这里MySQL目录的突出显示部分
mysqld:无法将dir更改为 &#39; /usr/local/mysql-5.7.14-osx10.11-x86_64/data /&#39; (错误代码:13 - 权限被拒)2016-10-04T14:09: 19.392581Z 0 [警告] TIMESTAMP 隐含DEFAULT值已弃用。请用 --explicit_defaults_for_timestamp服务器选项(有关更多详细信息,请参阅文档)。 2016-10-04T14:09:19.392847Z 0 [警告]不安全 --secure-file-priv的配置:当前值不受限制 生成文件的位置。考虑将其设置为有效的非空 路径。 2016-10-04T14:09:19.392921Z 0 [注意] mysqld(mysqld 5.7.14) 从过程1402开始... 2016-10-04T14:09:19.397569Z 0 [警告] 无法创建测试文件
/usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14:09:19.397597Z 0 [警告]无法创建测试文件 /usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14:09:19.397712Z 0 [ERROR]无法将datadir设置为 /usr/local/mysql-5.7.14-osx10.11-x86_64/data/
2016-10-04T14:09:19.397776Z 0 [ERROR]中止
2016-10-04T14:09:19.397795Z 0 [注意] Binlog结束
2016-10-04T14:09:19.397925Z 0 [注意] mysqld:关闭完成
sudo chown -R _mysql:_mysql /usr/local/mysql-5.7.14-osx10.11-x86_64
请注意上一个日志中的MySQL文件夹路径 / usr / local ,在我的情况下,它是 mysql-5.7.14- osx10.11-x86_64 ,您必须 根据计算机上的日志 对其进行更新,以提供读访问权限到MySQL目录
sudo /usr/local/mysql/support-files/mysql.server start
启动MySQL
SUCCESS!
答案 47 :(得分:1)
对我而言:
打开/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
。
答案 48 :(得分:1)
我现在遇到了这个问题并解决了它。
虽然你安装了mysql-server,但守护进程需要运行才能让客户端连接到它。
首先检查mysql服务器是否正在运行:
netstat -tap | grep mysql
你应该看到这样的事情:
$ sudo netstat -tap | grep mysql
tcp 0 0 localhost:mysql *:* LISTEN 6639/mysqld
如果您没有运行服务器,请通过以下命令启动守护程序:
/etc/init.d/mysql restart
这可以解决您的问题,如果它已安装。
答案 49 :(得分:1)
就我而言,我的mysql数据文件夹中的文件已损坏
mv / var / lib / mysql / var / lib / mysql_old
当我进行备份时,我将目录移至“ _old”,然后再次启动了docker。它使用干净的数据创建了一个新的mysql文件夹,套接字正常工作。
答案 50 :(得分:1)
此答案与在具有少量RAM的计算机上更新到MySQL 5.6有关
我在Debian 8(Jessie)上从MySQL 5.5升级到5.6时遇到了同样的问题。 MySQL没有启动(状态显示活动/退出)并且简单地使service mysql start
无效,因为我从/var/logs/mysql/error.log
日志文件中找到了:
InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
Cannot allocate memory for the buffer pool
内存不够:我只有256 MB的RAM。
在MySQL中有一个设置performance_schema
。默认情况下,它在MySQL 5.5中关闭。
https://dev.mysql.com/doc/refman/5.5/en/performance-schema-startup-configuration.html
但是在MySQL 5.6中默认打开,只需在/etc/mysql/my.cnf
文件中添加以下行并重新启动即可。
performance_schema = off
警告:关闭此设置可能会遇到性能问题,但我想在开发环境中不会出现问题。
此外,这篇文章可能有助于将MySQL配置为使用最小内存 Configuring MySQL to use minimal memory 。
答案 51 :(得分:1)
您正在本地运行,这意味着您的客户端与您的服务器在同一台计算机上运行。
确保您的Unix用户可以实际访问/阅读/var/run/mysqld/mysqld.sock
:
ls -als /var
ls -als /var/run
ls -als /var/run/mysqld
ls -als /var/run/mysqld/mysqld.sock
如果没有,请咨询系统管理员或database administrator以提供对这些目录的充分读/写访问权限,或将套接字文件移到其他位置。
答案 52 :(得分:1)
安装mysql-server解决了该问题
sudo apt-get install mysql-server
答案 53 :(得分:1)
同时检查您的my.conf
(/etc/mysql/my.cnf
),看看bind-address是否设置为127.0.0.1。
如果没有,这可能会导致此问题。
答案 54 :(得分:1)
要防止问题发生,您必须从命令行正常关闭服务器,而不是关闭服务器电源。
shutdown -h now
这将在关闭机器之前停止正在运行的服务。
基于Centos,遇到此问题时再次备份它的另一种方法是移动mysql.sock:
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start
重新启动服务会创建一个名为mqsql.sock
的新条目答案 55 :(得分:1)
如果你正在使用Ubuntu,那可能是一个特权问题。
检查您的目录权限。它不足以在根组中,也在MySQL编写的目录上使用chmod(例如,/var/run/mysqld/
用于创建mysqld.pid
文件。 / p>
这对我有帮助。
答案 56 :(得分:1)
我有同样的问题。我发现了这个。
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
这是因为在启动MySQL客户端之前,您没有运行mysqld
守护程序。运行第一个MySQL实例时,将自动创建文件/var/lib/mysql/mysql.sock
。
修复:
首先启动MySQL守护程序,然后键入mysql
:
/etc/init.d/mysqld start
mysql
默认情况下,MySQL数据库的root密码为空。从安全角度来看,最好将MySQL root密码更改为新密码。
mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root';
mysql> FLUSH PRIVILEGES;
完成后,请登录:
进行检查mysql -u root -p
Enter Password: <your new password>
答案 57 :(得分:1)
就我而言,我无法访问 mysql,经过 3 天的研究,我找到了解决方案。这是完美的解决方案,因为我搜索了 /var/run/mysqld/mysqld.sock
并且没有找到该文件夹。您可以在腻子上运行下面列出的命令。
sudo mkdir /var/run/mysqld/
sudo chown -R mysql:mysql /var/log/mysql
sudo mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --socket=/var/run/mysqld/mysqld.sock
sudo /etc/init.d/mysql restart
您将节省宝贵的时间。
答案 58 :(得分:0)
在Ubuntu 18:10 Linode 1GB Ram中,我遇到了此错误。在检查/var/log/mysql/error.log之后,我遇到了这个问题:
[注意] InnoDB:由于缓冲池较小,innodb_empty_free_list_algorithm已更改为旧版。为了使用退避,请将缓冲池至少增加到20MB。
我将linode升级到2GB,并使用sudo mysql重新启动了mariadb。接下来运行mysql_secure_admin,但是没有为用户设置root密码-作为ususl unitl更改了root用户以使用mysql_native_password插件。 不确定,但似乎已创建了袜子,但由于我的VPS内存不足而导致服务器关闭。
答案 59 :(得分:0)
我之前在 Kubuntu 20.04 中遇到过这个问题。它对我的解决方法是运行:
sudo dpkg --configure -a
原因是dpkg崩溃了。
我其他时候遇到了这个问题,我通过运行解决了:
sudo /etc/init.d/mysql start
认为服务已停止。
答案 60 :(得分:0)
令人惊讶的是,此问题的另一个原因是删除了文件夹 /var/log/mariadb 这是我删除此日志文件夹后的情况。创建后,错误消失。
答案 61 :(得分:0)
对我来说 mysql 没有运行,所以我用
修复了它sudo /etc/init.d/mysql start
答案 62 :(得分:0)
就我而言,我缺少mysql服务器。因此,通过sudo apt-get install mysql-server
安装它之后,我可以再次连接。
答案 63 :(得分:0)
对我来说,在 CentOS 上,我必须像这样重新启动 mariadb
服务:
systemctl start mariadb.service
答案 64 :(得分:0)
当我停止mysql服务时,我得到了完全相同的错误,以及如何解决它:使用以下命令(重新)启动mysql:
sudo systemctl start mysql
或
sudo systemctl restart mysql
答案 65 :(得分:0)
解决方案1 清除(或删除,如果要保留数据库)任何mysql软件包以重新进行安装:
sudo apt purge "mysql*"
-自动删除软件包
sudo apt autoremove
-停止apparmor服务
sudo systemctl stop apparmor
-使apparmor删除其配置文件(我以为停止就足够了,但对我而言却不是。使用systemctl则行不通)
sudo service apparmor teardown
-重新安装mysql-server
sudo apt install mysql-server
-安装apparmor-utils,以在apparmor中为mysql创建一个配置文件,从而允许mysql运行
sudo apt install apparmor-utils
-检查mysql服务器的状态(必须处于活动(运行)状态)
sudo systemctl status mysql
-在apparmor中为mysql生成配置文件
sudo aa-genprof mysql
-在其他终端上运行mysql(输入root密码)
mysql -u root -p
-在apparmor在另一个终端中生成配置文件的同时在MySQL中进行操作
mysql>创建数据库fooDB
-Swith切换至另一个终端,然后按“ s”(提示提示您是“扫描”)
-对您认为合适的apparmor的策略说是(我想所有策略都适用于mysql),说“是”,按“ a”表示允许
-按“ f”完成装甲配置文件
-重新启动apparmor服务
sudo systemctl start apparmor
-检查是否仍然可以在另一个终端上使用mysql
mysql>退出
mysql -u root -p
如果一切顺利,则可以从命令行使用mysql。
答案 66 :(得分:0)
这个答案很可能会淹没在这里,但也许有人偶然发现了它。
就我而言,SELinux阻止用户/应用程序连接到MySQL(MariaDB)服务器套接字。在RHEL上,检查/var/log/audit/audit.log
是否启用了SELinux。
答案 67 :(得分:0)
我的情况只是因为/var/log/mysql
中定义的/etc/mysql/my.cnf
文件夹丢失而导致mysql停止了。创建它之后,我可以启动mysql并像往常一样运行。
答案 68 :(得分:0)
建议:总是问MySQL问题是什么。就我而言,less /var/log/mysql/error.log
并看到:
2015-07-28 12:01:48 23224 [ERROR] /usr/sbin/mysqld: unknown variable 'log_slow_queries=/var/log/mysql/mysql-slow.log'
2015-07-28 12:01:48 23224 [ERROR] Aborting
这是抱怨,因为我在my.cnf
中取消注释了此选项,但在评论此选项后,它开始没有任何问题。
答案 69 :(得分:0)
如果您尝试更改存储数据库的目录,但在配置文件中输入错误的目录(如第二个驱动器中的拼写错误D
而不是准确的{{},则也会发生此错误1}})。它不会告诉你错字目录不存在,它会告诉你你没有访问它的权限(导致你尝试更改错字目录的权限,它会让你这样做)。因此,如果在更改目录时出现此错误,请仔细检查配置文件并确保没有输入错误。
答案 70 :(得分:0)
我也遇到了这个问题,这些答案都没有帮助我。问题不同,但错误是由OP描述的。
我在/var/log/mysql
中查看了MySQL的日志,我看到了:
150309 5:03:19 [ERROR] /usr/sbin/mysqld: unknown variable 'lower_case_tables_names=1'
我打开了/etc/mysql/my.cnf
文件,并对该行#
进行了评论。在这之后,我能够连接到数据库。
老实说,我不知道问题是什么。由于维护,linode服务器计划重新启动,并且此错误无处不在。
答案 71 :(得分:0)
在/etc/mysql/my.cnf
中,检查最后一行是:
!includedir /etc/mysql/conf.d/
答案 72 :(得分:0)
我在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已成功创建。
答案 73 :(得分:0)
sudo touch /var/lib/mysql/.force_upgrade
sudo rcmysql restart
当我遇到这个问题时为我工作
答案 74 :(得分:0)
配置文件可能存在问题。我遇到了类似的问题,我无法在网上找到解决方案。我注意到我有两个my.cnf
个文件,一个在/etc/mysql
,另一个在/etc
。
请按照以下步骤操作:
使用my.cnf
检查计算机上的locate my.cnf
个文件。
如果有两个条目,即/etc/my.cnf
和/etc/mysql/my.cnf
,
将/etc/mysql/my.cnf
重命名为其他内容,例如/etc/mysql/my.cnf.old
尝试再次运行MySQL。
答案 75 :(得分:0)
您是否检查过LAMPP是否正在运行?
sudo bash <path>/lampp start
对我来说,路径是
sudo bash /opt/lampp/lampp start
答案 76 :(得分:0)
升级MySQL为我修复了它。在基于RHEL的服务器上,只需运行:
sudo yum upgrade mysql-server
答案 77 :(得分:0)
您应该验证/var/run/mysqld
组的所有者。如果不是mysql.mysql
,请执行:
su root
chown mysql.mysql /var/run/mysqld
答案 78 :(得分:0)
我通过从/etc/mysql/my.conf
部分([mysqld])中的mysqld
删除此行来解决此问题:
default-character-set=utf8
重启并且工作正常。
答案 79 :(得分:-1)
我不得不说:
sudo /etc/init.d/mysqld start
答案 80 :(得分:-1)
完全卸载MySQL
sudo apt-get remove --purge mysql\*
重新安装
sudo apt-get install mysql-server mysql-client
测试它是否运行
sudo mysql
sudo apt-get install php7.2-fpm php7.2-mysql
答案 81 :(得分:-4)
执行命令
sudo reboot
为我工作。