我在LAMP(Precise Pangolin)上安装了Ubuntu 12.04 LTS,然后在phpMyAdmin上设置root密码。我忘记了密码,现在我无法登录。当我尝试通过终端更改密码时,我得到:
ERROR 2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
我怎样才能解决这个问题?我无法打开LAMP,卸载它或重新安装它。
我曾经有过这个问题并通过安装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
,那么问题可能会解决。
在我不得不重新启动生产服务器之后,我刚刚遇到了同样的问题。我在DigitalOcean Droplet上运行Debian 8.1(Jessie)。
这就是我为解决我的问题而采取的措施:
-h <hostname>
是否存在。如果没有,请通过输入my.cnf
手动创建它(这是我必须要做的)。socket = /var/run/mysqld/mysqld.sock
更改所述文件的所有权。/var/run/mysqld/mysqld.sock
或touch /var/run/mysqld/mysqld.sock
重启MySQL服务。完成上述步骤后,我的问题就解决了。我很少遇到这个问题,而且可能有更好的方法,所以如果需要,请务必提供建设性的反馈:)。
你的mysql服务器可能没有运行。通过在终端中键入chown mysql /var/run/mysqld/mysqld.sock
确保它运行。
检查my.cnf中的service mysql restart
参数。
否则尝试使用命令:
/etc/init.d/mysql restart
mysql.server start
,即localhost"bind-adress"
的-P(注意-P为大写),即MySQL的默认端口这对我有用:
mysql -h 127.0.0.1 -P 3306 -u root -p
这会创建一个链接。
如果您正在使用127.0.0.1
,并且您在实例上遇到此问题,那么您只需要:
3306
Amazon EC2没有安装服务器(仅安装了客户端),因此如果需要在您的实例上安装它,之后尝试
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart
检查是否有效。
我想每当你收到错误
ERROR 2002(HY000):无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器
我建议先检查你的Amazon EC2守护进程是否正在运行......大多数情况下它默认不运行。您可以通过sudo yum install mysql-server
sudo service mysqld restart
查看。
如果它没有运行,那么先启动它:
mysql -u root -p
我打赌它会110%起作用。
而不是使用localhost:
mysql
使用127.0.0.1
/etc/init.d/mysqld status
(另请注意,-p和mypassword之间没有空格)
请享用 :)
确保您拥有重要数据库的备份,然后尝试卸载MySQL相关的东西:
.../etc/init.d/mysqld start.
然后再次安装:
mysql -u myuser -pmypassword -h localhost mydatabase
这对我有用,数据保存。
如果PHP MySQL显示错误,您可能需要重新安装PHP MySQL:
mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase
如果您的Linux机器上安装了apt-get remove --purge mysql\*
,请尝试将apt-get install mysql-server mysql-client
文件从apt-get install php5-fpm php5-mysql
复制到XAMPP。
然后,再次运行my.cnf
...您现在应该拥有正确的套接字并能够运行MySQL客户端。
我也遇到了这个问题,但我刚刚做了:
/opt/lampp/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 distribution)。
我也面临同样的问题,如果你的/etc/my.cnf
没有默认运行会发生它会在一段时间后再次停止所以你再次运行(mysql -u root
)命令你可以改变,如果知道。
对于该使用命令
sudo service mysql restart
(如果需要,请输入用户密码,因为我们使用mysql server
)然后运行
$ sudo service mysql start
现在你有了数据库
如果您的安装是最近的,您应该确认您的安装是否是安装服务器...作为mysql-server-5.5 ..也许您只安装了“mysql”..这只是客户端而不是服务器。
在我的情况下,默认端口3306正被其他一些进程使用,因此它没有启动。在我停止了其他服务并做了$ sudo service mysql start
之后,它运行良好。顺便说一句,你可以使用类似sudo
的东西来查看谁可能正在使用该端口。
在我的情况下,它通过做一些研发工作:
我可以使用连接到MySQL
$ sudo mysql -u root -p (put user password if required )
但它不适用于sudo service mysql start
。
我在my.cnf中没有找到任何sudo lsof -Pn -iTCP:3306
。所以我在root-debian#mysql -h 127.0.0.1 -u root -p
中对参数mysql -u root -p
进行了评论,这导致了登录问题。
重新启动服务后,它很好:
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)
mysql_secure_installation
然后它将询问root密码,您只需按Enter键并设置新的root密码即可。
我用重启mysql解决了这个问题
sudo systemctl stop mariadb
和
sudo systemctl start mariadb
而已。
根据经验,我说你需要检查服务器是否先运行,然后尝试配置MySQL。最后一个解决方案是重新安装MySQL。
在我的情况下,当我运行时,似乎我真的无法杀死mysql进程
mysql_secure_installation
mysql进程总是在那里,看起来它阻塞了套接字文件,而新的mysql进程本身就无法创建它。
所以这有帮助
/etc/init.d/mysql stop
现在我可以使用登录数据库了
/etc/init.d/mysql start
然后更新root密码:
sudo service mysql stop
ps -ef | grep mysql
PS:我无法更新root密码,看起来像“auth_socket”插件有问题,所以我不得不创建具有完全权限的新用户
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
在Debian服务器Jessie上,我的工作解决方案就是这样做
UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;
以root用户身份
我有同样的问题。经过多次搜索,我没有找到任何答案。
最后,我检查了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";
目录,它的权限是755.我将其权限更改为777,mysqld启动没有任何问题。
我看到所有这些答案,但没有提供重置密码和没有接受的答案的选项。实际问题是他忘记了密码,所以他需要重置,而不是看它是否正在运行(已安装或未安装),因为这些答案大部分都是暗示的。
请按照以下步骤操作(如果您真的忘记了密码,可以提供帮助,即使您目前不在这种情况下也可以随时尝试):
mysql
sudo /etc/init.d/mysql stop
或者对于其他分发版本:
sudo /etc/init.d/mysqld stop
sudo mysqld_safe --skip-grant-tables &
mysql -uroot
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 priveleges;
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
这是从mysql -u root -p
。
打开终端并输入:
mysql -u super
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软件包。重要的是客户端和服务器版本号在任何一种情况下都匹配。
这对我有用。
我尝试了以下步骤:
super user
sudo
,并将其值更改为数据库服务器主机的IP地址。对我来说,它是/etc/mysql/my.cnf
或geditbind-address
它对我有用。
我通过执行以下命令解决了这个问题:
localhost
如果您使用的是mac并使用brew来安装mysql,只需使用:
127.0.0.1
我遇到了类似的问题。 mysql无法启动:
sudo service mysql start
如果我禁用apparmor:
mysql.server start
问题消失了。问题是mysqld试图访问/run/mysqld/mysqld.sock但是apparmor配置文件只给了/var/run/mysqld/mysqld.sock的权限(/ var / run符号链接到/ run,所以这些实际上是相同)。不确定为什么mysqld没有使用var路径,因为这是在所有配置文件中设置的,但你可以通过将以下内容添加到/etc/apparmor.d/usr.sbin.mysqld来解决问题
brew services start mysql
我通过杀死sudo service mysql start
start: Job failed to start
进程解决了这个问题:
sudo aa-complain /etc/apparmor.d/*
然后我再次启动服务器:
/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
但mysql
的作用也是如此:
ps -ef | grep mysql
kill [the id]
然后我登录为sudo /etc/init.d/mysql restart
,我完成了。
在我的情况下,磁盘已满,mysqld无法启动。
尝试重启mysql服务。
service mysql restart
要么
服务mysql停止
服务mysql启动
如果它不识别“停止”命令,那么肯定是磁盘空间。您应该在分区mysql中分配一些空间或使磁盘变大。
检查磁盘空间
df -h
不知何故,MySQL服务器进程没有创建套接字,或者客户端正在寻找错误位置的套接字。
我的第一个建议是检查MySQL服务器是否正在运行。第二个建议可能是MySQL服务器在另一台主机上运行吗?如果是这样,请将start
标志添加到终端中的MySQL客户端。
如果MySQL确实正在运行并在本地运行,请检查您的sudo /etc/init.d/mysql start
文件。应该有像这样的一条线
admin
看看它是否与您在帖子中提到的套接字位置匹配。
根据经验,我认为最可能出现的情况是你的MySQL服务器根本没有运行,或者没有在你从终端运行MySQL客户端的同一主机上运行。