我的问题开始与我不能登录根在我的mysql安装更多。我试图运行mysql没有密码打开…但每当我执行命令时

# mysqld_safe --skip-grant-tables &

我再也拿不回提示了。我试图按照这些说明恢复密码。

屏幕看起来是这样的:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

我没有得到开始输入SQL命令重置密码的提示。

当我按CTRL + C杀死它时,我得到以下消息:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

如果我重试该命令并将其放置足够长的时间,我确实会得到以下一系列消息:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

但如果我尝试以root用户登录,执行以下操作:

# mysql -u root

我得到以下错误消息:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

/var/run/mysqld/mysqld.Sock文件不存在。文件夹有,但文件没有。

此外,我不知道这是否有帮助,但我运行find / name mysqld,它出现了:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

我不知道这是否正常。但我把这些信息也包括进来,以防有用。

我最终决定卸载并重新安装mysql。

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

在按照上面相同的顺序重新安装所有包之后,在phpmyadmin安装期间,我得到了相同的错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

所以我再次尝试卸载/重新安装。这一次,在我卸载包之后,我还手动将所有mysql文件和目录重命名为mysql。在各自的位置都不好。

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

然后我尝试重新安装mysql-server和mysql-client。但我注意到它并没有提示我输入密码。它不是应该要求输入管理员密码吗?


当前回答

对于那些通过Vitess使用MySql的人。

我在vttablet组件收到这个错误,由于语法错误(忘记添加;to end of SQL命令)传递给init_db。在get started docs中作为示例给出的SQL:

apiVersion: v1
kind: Secret
metadata:
  name: my-cluster-config
type: Opaque
stringData:
  users.json: |
    {
      "user": [{
        "UserData": "user",
        "Password": "pass"
      }]
    }
  init_db.sql: |
    # This file is executed immediately after mysql_install_db,
    # to initialize a fresh data directory.
    CREATE DATABASE IF NOT EXISTS my_db <--- No ';' at the end

完整的错误日志:

TabletManager.ReplicationStatus()(on zone1from)错误: net.Dial(/vt/socket/mysql.sock) to local server失败 / vt /套筒/ mysql。Sock: connect:没有这样的文件或目录(errno 2002)

其他回答

确保您无法访问的套接字文件路径与'/var/run/mysqld/mysqld相同。Sock ',否则改变你的路径。 停止mysqld

$ sudo /etc/init.d/mysqld stop

如果进程仍在运行;

$ sudo pkill -9 mysqld

删除将要创建socket的mysql目录。对我来说,它不允许移除,所以我必须用力移除。

$ sudo mkdir -p /var/run/mysqld

设置目录的所有权

$ sudo chown mysql:mysql /var/run/mysqld

启动mysql

$ sudo /etc/init.d/mysql start

尝试连接mysql

$ sudo mysql -u dbuser -p

我在CentOS VPS上也遇到了类似的问题。如果MySQL启动后无法启动或一直崩溃,请尝试以下步骤:

1)找到my.cnf文件(我的文件位于/etc/my.cnf),并添加一行:

innodb_force_recovery = X

将X替换为从1到6的数字,从1开始,如果MySQL不启动,则递增。设置为4,5或6可以删除您的数据,所以要小心,并阅读http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html之前。

2)重启MySQL服务。只有SELECT将运行,这在此时是正常的。

3)用mysqldump逐个转储你所有的数据库/模式,不要压缩转储,因为以后你必须解压缩它们。

4)仅移动(或删除!)/var/lib/mysql中的bd目录,保留根目录中的单个文件。

5)停止MySQL,然后取消注释1)中添加的行。

6)恢复所有bd的倾倒在3)。

好运!

解决方法简单多了。

First, you have to locate(in Terminal with "sudo find / -type s") where your mysql.sock file is located. In my case it was in /opt/lampp/var/mysql/mysql.sock Fire up Terminal and issue sudo Nautilus This starts your Files manager with super user privileges From Nautilus navigate to where your mysql.sock file is located Right click on the file and select Make Link Rename the Link File to mysqld.sock then Right click on the file and Cut it Go to /var/run and create a folder called mysqld and enter it Now right click and Paste the Link File Voila! You will now have a mysqld.sock file at /var/run/mysqld/mysqld.sock :)

对我来说唯一有效的方法是从我的系统中完全卸载MYSQL。所以我做了以下事情:

sudo apt-get remove mysql-server -y
sudo rm -r /var/lib/mysql
sudo rm -r /etc/mysql
sudo apt-get remove mysql-client -y
sudo apt-get remove mysql-common -y
sudo apt-get remove phpmyadmin -y
sudo apt-get install mysql-server -y

我在Ubuntu 14.10上遇到了这个问题

mysql-server不再安装了(不知怎么的它已经被删除了),但我不能安装它,因为有一些损坏的包和依赖关系问题/冲突。

最后我不得不重新安装mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server