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

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

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


当前回答

尝试重新启动服务器

sudo /usr/local/mysql/support-files/mysql.server start

如果出现任何错误,请按照以下步骤进行操作

mysqld

您将看到下面的日志。注意MySQL目录中突出显示的部分

mysqld: Can't change dir to '/usr/local/mysql-5.7.14-osx10.11-x86_64/data/' (Errcode: 13 - Permission denied) 2016-10-04T14:09:19.392581Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2016-10-04T14:09:19.392847Z 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path. 2016-10-04T14:09:19.392921Z 0 [Note] mysqld (mysqld 5.7.14) starting as process 1402 ... 2016-10-04T14:09:19.397569Z 0 [Warning] Can't create test file /usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test 2016-10-04T14:09:19.397597Z 0 [Warning] Can't create test file /usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test 2016-10-04T14:09:19.397712Z 0 [ERROR] failed to set datadir to /usr/local/mysql-5.7.14-osx10.11-x86_64/data/ 2016-10-04T14:09:19.397776Z 0 [ERROR] Aborting 2016-10-04T14:09:19.397795Z 0 [Note] Binlog end 2016-10-04T14:09:19.397925Z 0 [Note] mysqld: Shutdown complete

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。服务器启动

启动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。

您可以首先检查服务是否正在运行,使用:

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

您正在本地运行,这意味着您的客户端与服务器运行在同一台机器上。

确保你的Unix用户可以访问/读取/var/run/mysqld .sock:

ls -als /var
ls -als /var/run
ls -als /var/run/mysqld
ls -als /var/run/mysqld/mysqld.sock

如果没有,请与系统管理员或数据库管理员联系,以提供对这些目录的足够的读/执行访问,或将套接字文件移到其他位置。

升级MySQL为我解决了这个问题。在基于rhel的服务器上,只需运行:

sudo yum upgrade mysql-server

检查你是否拥有正确的权限:

sudo chmod 755 /var/lib/mysql/mysql

我也有同样的问题,这个方法对我很有效。这样做之后,我就可以启动MySQL了。