我在Ubuntu 12.04 LTS (Precise穿山甲)上安装了LAMP,然后在phpMyAdmin上设置根密码。我忘记密码了,现在无法登录。当我试图通过终端更改密码时,我得到:

错误2002 (HY000):无法通过套接字连接到本地MySQL服务器 ' / var /运行/ mysqld / mysqld。袜子”(2)

我该如何解决这个问题?我无法打开LAMP,卸载它或重新安装它。


当前回答

我看到所有这些答案,但没有一个提供重置密码的选项,没有接受的答案。实际的问题是他忘记了密码,所以他需要重置,而不是像大多数答案所暗示的那样,看看它是否正在运行(安装与否)。


重置密码

遵循以下步骤(如果你真的忘记了密码,这可能会有帮助,你可以随时尝试,即使你现在没有这种情况):

Stop mysql sudo /etc/init.d/mysql stop Or for other distribution versions: sudo /etc/init.d/mysqld stop Start MySQL in safe mode sudo mysqld_safe --skip-grant-tables & Log into MySQL using root mysql -u root Select the MySQL database to use use mysql; Reset the password -- 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 the privileges flush privileges; Restart the server quit Stop and start the server again Ubuntu and 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根密码。

其他回答

在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,但是没有为user-as ususl设置根密码,直到更改根用户使用mysql_native_password插件。 不确定,但似乎袜子是创建的,但由于我的VPS内存不足,服务器关闭了。

检查my.cnf中的“bind- address”参数。

否则,尝试使用命令:

mysql -h 127.0.0.1 -P 3306 -u root -p

-h表示主机127.0.0.1,即localhost -P(注意-P为大写)用于3306端口,即MySQL的默认端口

在我的情况下,我有文件损坏在我的mysql数据文件夹

mv /var/lib/mysql /var/lib/mysql_old

因此,当我有备份时,我将目录移动到“_old”,并再次启动docker。它用干净的数据创建了一个新文件夹mysql,套接字工作了。

解决方案1 清除(或删除如果你想保留数据库)任何mysql包,重新重复安装:

sudo apt purge "mysql*"

-Autoremove包

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中执行-do操作

创建数据库中的食物

-切换到另一个终端,按“s”(提示说这是“扫描”)

-对你认为合适的apparmor的政策说“是”(我猜所有的mysql),说“是”按“a”允许

-按“f”完成apparmor配置文件

-重启apparmor服务

sudo systemctl start apparmor

检查一下你是否可以在其他终端上使用mysql

Mysql>exit

mysql -u root -p

如果一切正常,您可以从命令行使用mysql。

如果您正在使用Amazon EC2,并且在实例上遇到了这个问题,那么您只需要执行以下操作:

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2没有安装服务器(只安装了客户端),因此在这种情况下,您需要在实例上安装服务器,然后尝试

 mysql -u root -p

来检验这是否有效。