我在Ubuntu 12.04 LTS (Precise Pangolin) 上安装了LAMP,然后在phpMyAdmin上设置了 root 密码。我忘记了密码,现在无法登录。当我尝试通过终端更改密码时,我得到:
ERROR 2002 (HY000): 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)
我怎样才能解决这个问题?我无法打开、卸载或重新安装 LAMP。
我在Ubuntu 12.04 LTS (Precise Pangolin) 上安装了LAMP,然后在phpMyAdmin上设置了 root 密码。我忘记了密码,现在无法登录。当我尝试通过终端更改密码时,我得到:
ERROR 2002 (HY000): 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)
我怎样才能解决这个问题?我无法打开、卸载或重新安装 LAMP。
我曾经遇到过这个问题并通过安装解决了它mysql-server
,因此请确保您已经安装了mysql-server
,而不是mysql-client
其他的。
该错误意味着该文件/var/run/mysqld/mysqld.sock
不存在,如果您没有 install mysql-server
,则该文件将不存在。所以在这种情况下,安装它
sudo apt-get install mysql-server
但是如果mysql-server
已经安装并且正在运行,那么您需要检查配置文件。
配置文件是:
/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf
在/etc/my.cnf
,socket 文件 config 可能是/tmp/mysql.sock
,/etc/mysql/my.cnf
socket 文件中的 config 可能是/var/run/mysqld/mysqld.sock
. 所以,删除或重命名/etc/mysql/my.cnf
,让mysql使用/etc/my.cnf
,那么问题可能就解决了。
尝试这个:
mysql -h 127.0.0.1 -P 3306 -u root -p <database>
另外(查看它是否正在运行):
telnet 127.0.0.1 3306
可能它只是my.cnf
文件中的错误配置,在/etc/somewhere
(取决于Linux 发行版)。
我看到了所有这些答案,但没有一个提供重置密码的选项并且没有接受的答案。实际的问题是他忘记了密码,所以他需要重置,而不是查看它是否正在运行(安装与否),因为这些答案中的大多数暗示。
请按照以下步骤操作(如果您真的忘记了密码会很有帮助,并且您可以随时尝试,即使您目前不在这种情况下):
停止mysql
sudo /etc/init.d/mysql stop
或者对于其他发行版本:
sudo /etc/init.d/mysqld stop
以安全模式启动 MySQL
sudo mysqld_safe --skip-grant-tables &
使用 root 登录 MySQL
mysql -u root
选择要使用的 MySQL 数据库
use mysql;
重置密码
-- MySQL version < 5.7
update user set password=PASSWORD("mynewpassword") where User='root';
-- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
update user set authentication_string=password('mynewpassword') where user='root';
刷新权限
flush privileges;
重启服务器
quit
停止并重新启动服务器
Ubuntu 和 Debian:
sudo /etc/init.d/mysql stop
...
sudo /etc/init.d/mysql start
在 CentOS、Fedora 和 RHEL 上:
sudo /etc/init.d/mysqld stop
...
sudo /etc/init.d/mysqld start
使用新密码登录
mysql -u root -p
输入新密码并再次享受您的服务器,就像什么都没发生一样
我尝试了以下步骤:
super user
或使用sudo
/etc/mysql/my.cnf
使用gedit打开bind-address
,并将其值更改为数据库服务器主机的 IP 地址。对我来说,它是localhost
或127.0.0.1
sudo service mysql start
它对我有用。
在我的情况下,磁盘已满,mysqld 无法再启动。
尝试重启mysql服务。
> service mysql restart
或者
> service mysql stop
> service mysql start
如果它不识别stop
命令,那么它肯定是磁盘空间。您应该在分区mysql
中分配一些空间或使磁盘更大。
检查磁盘空间
> df -h
我通过执行以下命令解决了这个问题:
mysql.server start
如果您在 Mac 上并使用 brew 安装 mysql,只需使用:
brew services start mysql
我有一个类似的问题。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,
我通过终止mysql
进程解决了这个问题:
ps -ef | grep mysql
kill [the id]
然后我再次启动服务器:
sudo /etc/init.d/mysql restart
但start
也可以:
sudo /etc/init.d/mysql start
然后我以 登录admin
,我就完成了。
不知何故,MySQL 服务器进程没有创建套接字,或者客户端在错误的位置寻找套接字。
我的第一个建议是检查 MySQL 服务器是否正在运行。第二个建议可能是,MySQL 服务器是否在另一台主机上运行?如果是这样,请将-h <hostname>
标志添加到终端中的 MySQL 客户端。
如果 MySQL 确实在运行,并且在本地运行,请检查您的my.cnf
文件。应该有一条线
socket = /var/run/mysqld/mysqld.sock
看看这是否与您在帖子中提到的套接字位置相匹配。
根据经验,我会说最有可能的情况是您的 MySQL 服务器根本没有运行,或者没有在与您从终端运行 MySQL 客户端的主机上运行。
在我不得不重新启动生产服务器后,我刚刚遇到了同样的问题。我在 DigitalOcean 液滴上运行 Debian 8.1 (Jessie)。
这是我为解决我的问题所做的:
检查文件是否/var/run/mysqld/mysqld.sock
存在。如果没有,请通过输入手动创建它touch /var/run/mysqld/mysqld.sock
(这是我必须做的)。
所以 MySQL 进程可以使用这个文件。通过输入更改所述文件的所有权chown mysql /var/run/mysqld/mysqld.sock
。
service mysql restart
完成“2”后,输入or重新启动 MySQL 服务/etc/init.d/mysql restart
。
完成以上步骤后,我的问题就解决了。我很少遇到这个问题,可能有更好的方法,所以如果需要的话,一定要提供建设性的反馈:)。
检查"bind-adress"
my.cnf 中的参数。
否则尝试使用以下命令:
mysql -h 127.0.0.1 -P 3306 -u root -p
-h 代表主机127.0.0.1
,即 localhost
-P (注意 -P 为大写) port 3306
,即 MySQL 的默认端口
您的 mysql-server 可能没有运行。mysql.server start
通过在终端中键入来确保它运行。
我想每当你得到错误
错误 2002 (HY000): 无法通过套接字 '/var/lib/mysql/mysql.sock' 连接到本地 MySQL 服务器
我会建议首先检查您的mysql
守护程序是否正在运行......大多数情况下默认情况下它不会运行。您可以通过/etc/init.d/mysqld status
.
如果它没有运行,请先启动它:
.../etc/init.d/mysqld start.
我敢打赌它会 110% 工作。
如果您使用的是Amazon EC2,并且您在实例上遇到此问题,那么您只需执行以下操作:
sudo yum install mysql-server
sudo service mysqld restart
Amazon EC2 没有安装服务器(仅安装了客户端),因此如果出现这种情况,您需要在您的实例上安装它,然后尝试
mysql -u root -p
检查是否有效。
这对我有用:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart
这将创建一个链接。
而不是使用本地主机:
mysql -u myuser -pmypassword -h localhost mydatabase
使用 127.0.0.1
mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase
(另请注意,-p 和 mypassword 之间没有空格)
享受 :)
我也面临同样的问题,如果您mysql server
默认情况下未运行,它将在几秒钟后再次停止,因此您再次运行($ sudo service mysql start
)命令,如果知道,您可以更改。
对于那个使用命令
$ sudo service mysql start
(如果需要,请输入用户密码,因为我们使用sudo
)然后运行
$ sudo mysql -u root -p (put user password if required )
现在你有了你的数据库
我也遇到了这个问题,但我只是这样做了:
sudo service mysql restart
它对我有用。
确保你有重要数据库的备份,然后尝试卸载 MySQL相关的东西:
apt-get remove --purge mysql\*
然后再次安装:
apt-get install mysql-server mysql-client
这对我有用,并且保留了数据。
如果 PHP MySQL 显示错误,您可能需要重新安装 PHP MySQL:
apt-get install php5-fpm php5-mysql
看来您的 MYSQL 已停止。使用以下命令再次启动 MySQL
sudo service mysql start
我找到了解决方案
在触发命令之前:mysql_secure_installation
sudo systemctl stop mariadb
sudo systemctl start mariadb
mysql_secure_installation
然后它会询问 root 密码,您只需按 Enter并设置新的 root 密码。
如果您的安装是最近的,您应该确认您的安装是否是安装服务器... as mysql-server-5.5 .. 也许您只安装了“mysql” .. 这只是客户端而不是服务器。
如果您的 Linux 机器上安装了XAMPP,请尝试将my.cnf
文件/opt/lampp/etc/my.cnf
从/etc/my.cnf
.
然后,mysql -u root
再次运行...您现在应该拥有正确的套接字并能够运行 MySQL 客户端。
就我而言,它通过一些研发工作:
我可以使用连接到 MySQL
root-debian#mysql -h 127.0.0.1 -u root -p
但它不适用于mysql -u root -p
.
bind-address
我在my.cnf中没有找到任何内容。所以我排除了导致我登录问题的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)
在我的情况下,默认端口 3306 正在被其他进程使用,因此它没有启动。在我停止其他服务并执行之后sudo service mysql start
,它运行良好。顺便说一句,您可以使用类似的东西sudo lsof -Pn -iTCP:3306
来查看谁可能正在使用该端口。
就我而言,当我运行时,似乎我真的无法杀死 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 密码时遇到了问题,似乎是“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";
这将创建没有密码的用户“super”,然后您可以连接mysql -u super
拳头,尝试重新启动它
服务 mysql 停止
服务 mysql 启动
如果上面没有解决问题,现在让我们去......
完全卸载 MySQL
sudo apt-get remove --purge mysql\*
重新安装它
sudo apt install mysql-server mysql-client
测试它是否运行
sudo mysql
安装php驱动
sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-cgi php7.4-cli php7.4-common
您可以用 php7.x 或 php8.0.12 或更高版本替换 php7.4 非常好!
在 Debian 服务器 Jessie 上,我的工作解决方案是简单地做
service mysql restart
service mysql reload
作为根用户
我用重启mysql解决了这个问题
/etc/init.d/mysql stop
和
/etc/init.d/mysql start
而已。
打开终端并输入:
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 软件包。重要的是客户端和服务器版本号在任何一种情况下都匹配。
这对我有用。
检查您是否拥有正确的权限:
sudo chmod 755 /var/lib/mysql/mysql
我有同样的问题,这对我有用。完成此操作后,我能够启动 MySQL。
在 Ubuntu 14.04 (Trusty Tahr) 上也是如此。
如果您已经安装了 XAMPP,安装 mysql-server 不是解决方案,因为您将访问另一个 MySQL!
您必须使用正确的套接字才能访问。通常是这样的:
/opt/lampp/var/mysql/mysql.sock
相反,将其更改为:
/var/run/mysqld/mysqld.sock
根据经验,我说您需要先检查服务器是否正在运行,然后再尝试配置 MySQL。最后的解决方案是重新安装 MySQL。
mysqld stop
mysql.server start
我有同样的问题。经过大量搜索,我没有找到任何答案。
最后查看/tmp
目录,权限是755,改成777,mysqld启动正常,没有任何问题。
我遇到过同样的问题。如果您的 MySQL 服务被关闭,有时会发生这种情况。
所以你必须启动它:
sudo service mysql start
对我来说,更新解决了这个问题:
在 Ubuntu 上:
sudo apt-get update
sudo apt-get upgrade
在 CentOS 上:
sudo yum update
当我停止 mysql 服务时,我得到了完全相同的错误,这里如何解决它:通过(重新)使用以下命令启动 mysql:
sudo systemctl start mysql
或者
sudo systemctl restart mysql
对于 CentOS Linux 7.3 版,mysql.sock 文件路径为/var/lib/mysql/mysql.sock
编辑/etc/my.cnf
文件并放入下面的条目这将解决您的问题。
[client]
user=root
password=Passw0rd
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0
在此之后重新启动服务
service mysql restart
尝试重新启动服务器
sudo /usr/local/mysql/support-files/mysql.server start
如果有任何错误,请按照以下步骤操作
mysqld
您将看到以下日志。请注意此处 MySQL 目录的突出显示部分
mysqld:无法将目录更改为 “/usr/local/mysql-5.7.14-osx10.11-x86_64/data/”(错误代码:13 - 权限被拒绝)2016-10-04T14:09:19.392581Z 0 [警告] 带有隐式 DEFAULT 值的 TIMESTAMP 已弃用。请使用 --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 [错误] 无法将 datadir 设置为 /usr/local/mysql-5.7.14-osx10.11-x86_64/data/
2016-10-04T14:09:19.397776Z 0 [错误] 中止
2016-10 -04T14:09:19.397795Z 0 [Note] Binlog end
2016-10-04T14:09:19.397925Z 0 [Note] 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
成功!
您缺少创建 /var/run/mysqld 目录的权限。所以请创建并授予以下权限。
您可以首先检查服务是否正在运行,使用:
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
就我而言,问题是我所有数据库中的页面损坏(检查 mysql 错误日志)。
我用强制 InnoDB Recovery解决了它。诀窍是编辑 /etc/mysql/my.cnf 并添加
innodb_force_recovery = 4
略低于
[mysqld]
然后重启mysql。现在检查一切正常后,再次删除线。
只需将您的/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;
安装mysql服务器:
sudo apt-get install mysql-server
enter password as root
登录:
mysql -u root -p root
这里是安装 MySQL 服务器时给出的-u user name
。-p password
它会像对我一样有效。
对我来说 mysql 没有运行,所以我修复了它
sudo /etc/init.d/mysql start
我的服务器存储已满,这导致 Mysql 无法启动。从这里得到想法。增加 HD 并重新启动解决了该问题。
为防止发生此问题,您必须从命令行正常关闭服务器,而不是关闭服务器电源。
shutdown -h now
这将在关闭机器之前停止正在运行的服务。
基于 Centos,当你遇到这个问题时,另一种方法是移动 mysql.sock:
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start
重新启动服务会创建一个名为 mqsql.sock 的新条目
您在本地运行,这意味着您的客户端与您的服务器在同一台机器上运行。
确保您的 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
如果没有,请咨询您的系统管理员或数据库管理员,以提供对这些目录的足够读取/执行访问权限,或将套接字文件移至其他位置。
我遇到过同样的问题。我找到了这个。
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
这是因为您mysqld
在启动 MySQL 客户端之前没有运行守护程序。该文件/var/lib/mysql/mysql.sock
将在运行 MySQL 的第一个实例时自动创建。
修理:
首先启动 MySQL 守护进程,然后键入mysql
:
/etc/init.d/mysqld start
mysql
默认情况下,MySQL 数据库的 root 密码为空。从安全的角度来看,将 MySQL 根密码更改为新密码是个好主意。
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>
我现在刚刚遇到这个问题并解决了。
尽管您安装了 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
如果已安装,这应该可以解决您的问题。
如果您使用的是 Ubuntu,则可能是权限问题。
检查您的目录权限。在根组中是不够的,还要在 MySQL 写入的目录上使用chmod(例如,/var/run/mysqld/
用于创建mysqld.pid
文件)。
这对我很有帮助。
我无法解释,但在 kubuntu 12.04.2 之后
sudo apt-get autoremove linux-headers-3.2.0-37 linux-headers-3.2.0-37-generic
它开始起作用了
还要检查您的my.conf
( /etc/mysql/my.cnf
) 并查看绑定地址是否设置为 127.0.0.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 以使用最少的内存,配置 MySQL 以使用最少的内存(Web 存档链接,以防原始链接将来过期https://web.archive.org/web/20201112041608/ http://www.tocker.ca/2014/03/10/configuring-mysql-to-use-minimal-memory.html)。
就我而言,我的问题是我试图从我的 linux 终端访问,而不是从我的带有 mysql 的 docker 容器访问。
对我来说是:
打开/etc/mysql/my.cnf
或/etc/my.cnf
搜索“绑定地址”。它是127.0.0.1
。我将它转换为 localhost,所以行结果应该是'bind-address = localhost'。
否则,您应该使用存在于 bind-address 指令中的 IP 地址运行 MySQL 服务器,即mysql -h 127.0.0.1
.
就我而言,我无法访问 mysql,经过 3 天的研究,我找到了解决方案。这是完美的解决方案,因为我已经搜索过/var/run/mysqld/mysqld.sock
,但没有找到该文件夹。您可以在 putty 上运行下面列出的命令。
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
您将节省宝贵的时间。
就我而言,我的 mysql 数据文件夹中的文件已损坏
mv /var/lib/mysql /var/lib/mysql_old
所以当我有备份时,我将目录移动到“_old”,然后再次启动 docker。它使用干净的数据创建了一个新文件夹 mysql ,并且套接字工作。
我的服务器上的简单解决方案:在使用我的 MySQL 数据库迁移到新的 Debian 7 服务器后,我的主机文件中缺少第二个本地 IP 地址。添加这个解决了警告:127.0.1.1
echo -e "\n127.0.1.1 $(hostname)" >> /etc/hosts
安装 mysql-server 解决了这个问题
sudo apt-get install mysql-server
在 Ubuntu 18:10 Linode 1GB Ram 中,我遇到了这个错误。在检查 /var/log/mysql/error.log 之后,我遇到了这个:
[注意] InnoDB:innodb_empty_free_list_algorithm 已更改为 legacy,因为缓冲池大小较小。为了使用退避,将缓冲池至少增加到 20MB。
我将我的 linode 升级到 2GB 并使用 sudo mysql 重新启动了 mariadb。接下来 mysql_secure_admin 运行,但没有为用户设置 root 密码-as ususl unitl 将 root 用户更改为使用 mysql_native_password 插件。不确定,但似乎创建了 sock,但由于我的 VPS 内存不足,服务器关闭了。
如果您的服务器/数据库工作正常并且突然出现此问题,那么只需尝试重新启动您的数据库服务器。对于 Centos,我使用以下命令,并且我的问题“连接被拒绝”“无法通过套接字连接到本地 mysql”已修复
sudo systemctl start mysqld
您应该验证组的所有者/var/run/mysqld
。如果不是mysql.mysql
,请执行以下操作:
su root
chown mysql.mysql /var/run/mysqld
sudo touch /var/lib/mysql/.force_upgrade
sudo rcmysql restart
当我遇到这个问题时为我工作
我在 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 已成功创建。
我也遇到了这个问题,这些答案都没有帮助我。问题有所不同,但错误是由 OP 描述的。
我检查了 MySQL 的日志/var/log/mysql
,我看到了这个:
150309 5:03:19 [ERROR] /usr/sbin/mysqld: unknown variable 'lower_case_tables_names=1'
我打开了/etc/mysql/my.cnf
文件并取消了该行的注释#
。之后,我能够连接到数据库。
老实说,我不知道问题出在哪里。由于维护,linode服务器计划重新启动,并且这个错误突然出现。
您是否检查过 LAMPP 是否正在运行?
sudo bash <path>/lampp start
对我来说,路径是
sudo bash /opt/lampp/lampp start
我通过从我/etc/mysql/my.conf
的mysqld
部分([mysqld])中删除这一行来解决这个问题:
default-character-set=utf8
重新启动,它工作正常。
升级 MySQL 为我修复了它。在基于 RHEL 的服务器上,只需运行:
sudo yum upgrade mysql-server
可能是配置文件的问题。我遇到了类似的问题,我在网上找不到解决方案。我注意到我有两个my.cnf
文件,一个/etc/mysql
在/etc
. 请按照以下步骤操作:
使用 .检查my.cnf
计算机上的文件locate my.cnf
。
如果有两个条目,即/etc/my.cnf
and /etc/mysql/my.cnf
,则重命名/etc/mysql/my.cnf
为其他内容,例如/etc/mysql/my.cnf.old
尝试再次运行 MySQL。
在/etc/mysql/my.cnf
中,检查最后一行是:
!includedir /etc/mysql/conf.d/
D
如果您尝试更改存储数据库的目录,但在配置文件中输入了错误的目录(例如第二个驱动器中的拼写错误而不是准确的) ,也会发生此错误D_
。它不会告诉您拼写错误目录不存在,而是告诉您您没有访问它的权限(导致您尝试更改拼写错误目录的权限,它会让您这样做)。因此,如果您在更改目录时遇到此错误,请仔细检查配置文件并确保您没有拼写错误。
我遇到了同样的问题,问题是 mysql-server 已安装但未运行。
试试, service mysql start 或者 systemctl start mysql
对我来说,在 CentOS 上,我必须mariadb
像这样重新启动服务:
systemctl start mariadb.service
我的情况只是因为 .mysql 中/var/log/mysql
定义的缺少文件夹而停止了 mysql /etc/mysql/my.cnf
。创建它后,我可以启动 mysql 并照常运行。
解决方案 1 清除(如果要保留数据库,则删除)任何 mysql 包以重新重复安装:
sudo apt purge "mysql*"
- 自动删除包
sudo apt autoremove
-停止apparmor服务
sudo systemctl stop apparmor
- 让 apparmor 删除它的配置文件(我认为 stop 就足够了,但对我来说不是。使用 systemctl 它不起作用)
sudo service apparmor teardown
-重新安装mysql服务器
sudo apt install mysql-server
-安装apparmor-utils,在apparmor中为mysql创建一个配置文件,允许mysql运行
sudo apt install apparmor-utils
-检查mysql-server的状态(必须是Active(running))
sudo systemctl status mysql
- 在 apparmor 中为 mysql 生成配置文件
sudo aa-genprof mysql
- 在其他终端运行mysql(输入root密码)
mysql -u root -p
- 当 apparmor 在另一个终端中生成配置文件时,在 MySQL 中执行操作
mysql> 创建数据库 fooDB
-切换到另一个终端并按“s”(提示告诉你这是“扫描”)
- 对您认为合适的 apparmor 政策说“是”(我猜它们都适用于 mysql),说“是”按“a”表示允许
- 按“f”完成 Apparmor 配置文件
-重启apparmor服务
sudo systemctl start apparmor
-检查你是否仍然可以在其他终端使用mysql
mysql>退出
mysql -u root -p
如果一切顺利,您可以从命令行使用 mysql。
一个建议:总是问 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
,但是在注释了这个选项之后,它开始没有任何问题。
我不得不说:
sudo /etc/init.d/mysqld start
这个答案很可能在这里被淹没,但也许有人不小心偶然发现了它。
在我的例子中,SELinux 阻止了用户/应用程序连接到 MySQL (MariaDB) 服务器套接字。在 RHEL 上,检查/var/log/audit/audit.log
您是否启用了 SELinux。
就我而言,我缺少 mysql-server。因此,通过安装它后,sudo apt-get install mysql-server
我能够再次连接。
我以前在 Kubuntu 20.04 中遇到过这个问题。它为我解决的方法是运行:
sudo dpkg --configure -a
原因是 dpkg 崩溃了。
我在其他时间遇到了问题,我通过运行解决了它:
sudo /etc/init.d/mysql start
认为服务已停止。
令人惊讶的是,此问题的另一个原因是删除了文件夹 /var/log/mariadb 这是我删除此日志文件夹后的情况。创建后,错误消失了。