我在Ubuntu 12.04 LTS(精确的穿山甲)上安装了LAMP,然后在phpMyAdmin上设置了root密码。我忘记了密码,现在无法登录。当我尝试通过终端更改密码时,我得到:
错误2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
我怎样才能解决这个问题?我无法打开LAMP,将其卸载或重新安装。
我在Ubuntu 12.04 LTS(精确的穿山甲)上安装了LAMP,然后在phpMyAdmin上设置了root密码。我忘记了密码,现在无法登录。当我尝试通过终端更改密码时,我得到:
错误2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
我怎样才能解决这个问题?我无法打开LAMP,将其卸载或重新安装。
Answers:
我曾经遇到过这个问题,并通过安装解决了这个问题mysql-server,因此请确保您已安装mysql-server,而不是mysql-client或其他东西。
该错误意味着该文件/var/run/mysqld/mysqld.sock不存在,如果您未安装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,套接字文件config可能是,/tmp/mysql.sock而在/etc/mysql/my.cnf套接字文件config中的可能是/var/run/mysqld/mysqld.sock。因此,删除或重命名/etc/mysql/my.cnf,让mysql使用/etc/my.cnf,即可解决问题。
sudo apt-get install mysql-server在ubuntu上安装mysql
                    尝试这个:
mysql -h 127.0.0.1 -P 3306 -u root -p <database>另外(看看它是否正在运行):
telnet 127.0.0.1 3306 可能只是my.cnf文件中的配置错误/etc/somewhere(取决于Linux发行版)。
/etc/my.cnf并注释了#bind-address  = 127.0.0.1 Reference 1  Reference 2。然后我可以连接。在此之后,我意识到我现在遇到了这个2002年错误,这使我得到了答案,现在又可以正常工作了。我肯定会通过解释为什么只键入mysql而不-h抛出错误的原因与您达成一致。
                    mysql -h localhost不起作用。确保使用mysql -h 127.0.0.1答案中指定的方式。
                    我看到所有这些问题的答案,但没有提供该选项重置密码并没有公认的答案。实际的问题是他忘记了密码,因此他需要重设密码,而不是密码是否正在运行(是否已安装),如大多数答案所示。
请执行以下步骤(如果您确实忘记了密码并且可以随时尝试,即使您目前不在这种情况下也可能会有所帮助):
停止 mysql
sudo /etc/init.d/mysql stop或其他发行版本:
sudo /etc/init.d/mysqld stop以安全模式启动MySQL
sudo mysqld_safe --skip-grant-tables &使用root登录到MySQL
mysql -uroot选择要使用的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输入新密码,然后再次使用服务器,就像什么也没发生
这取自“ 重置MySQL根密码”。
repair table user use_frm对我来说就可以解决此问题。- stackoverflow.com/questions/4297592/...
                    update user set authentication_string=password('mynewpassword') where user='root';
                    我尝试了以下步骤:
super user或使用sudo/etc/mysql/my.cnf使用gedit打开bind-address,然后将其值更改为数据库服务器主机的IP地址。对我来说,这是localhost或127.0.0.1sudo service mysql start它为我工作。
我有一个类似的问题。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,以我为例,磁盘已满,并且mysqld无法启动。
尝试重新启动mysql服务。
> service mysql restart要么
> service mysql stop
> service mysql start如果无法识别stop命令,则肯定是磁盘空间。您应该在分区中留出一些空间mysql中分配或使磁盘更大。
使用以下命令检查磁盘空间
> df -h我通过取消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 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或重新启动MySQL服务/etc/init.d/mysql restart。
完成上述步骤后,我的问题已解决。我很少遇到这个问题,并且可能有更好的方法,因此如果需要的话,请务必提供建设性的反馈意见。
您的mysql服务器可能未运行。键入mysql.server start终端以确保其运行。
检查"bind-adress"my.cnf中的参数。
否则尝试使用以下命令:
mysql -h 127.0.0.1 -P 3306 -u root -p-h代表host 127.0.0.1,即localhost
-P(注意-P为大写)3306,即MySQL的默认端口
这对我有用:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart这将创建一个链接。
如果您使用的是Amazon EC2,并且实例上存在此问题,则只需执行以下操作:
sudo yum install mysql-server
sudo service mysqld restartAmazon EC2没有安装服务器(仅安装了客户端),因此,在这种情况下,您需要在实例上安装该服务器,然后尝试
 mysql -u root -p检查是否有效。
而不是使用本地主机:
mysql -u myuser -pmypassword -h localhost mydatabase使用127.0.0.1
mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase(还要注意,-p和mypassword之间没有空格)
请享用 :)
127.0.0.1工作,同时localhost不?
                    如果您的安装是最新的,则应确认安装的是SERVER ...作为mysql-server-5.5。
如果您在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中找不到任何内容。所以我outcommented参数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)打开终端并输入:
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 Server软件包都将是相同的5.5版本。MySQL客户端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软件包。重要的是,在任何情况下,客户端和服务器版本号均匹配。
这对我有用。
就我而言,当我运行时,似乎真的无法杀死mysql进程
sudo service mysql stop
ps -ef | grep mysqlmysql进程始终存在,它似乎正在阻止套接字文件,而新的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";这将创建没有密码的用户“ super”,然后您可以与 mysql -u super
use mysql;<br>,您现在可以使用<br>UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root'; FLUSH PRIVILEGES;