Ubuntu 16.04 上的 Mysql:无法以 root 身份登录,无法以安全模式启动,/var/run/mysqld 在重启时被删除

Ubuntu 16.04 上的 Mysql:无法以 root 身份登录,无法以安全模式启动,/var/run/mysqld 在重启时被删除

我无法在 Dell XPS-13 9360 上的 Ubuntu 16.04 上运行 mysql,mysql 版本为 5.7.17。似乎有两个问题:

1)我无法以root或超级用户身份登录,或者以安全模式启动mysql。

2)/var/run/mysqld当服务停止时,该文件夹会被删除。

以下是详细信息;

我已经通过运行以下命令清除并重新安装了 mysql (来源)在终端中:

sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean

使用以下命令重新安装:

sudo apt-get dist-upgrade
sudo apt-get install mysql-server

安装后,当我在终端中输入以下任一命令时:

mysql -uroot

或者

sudo mysql -u root

我看到这条消息:

错误 1045(28000):拒绝用户“root”@“localhost”访问(使用密码:否)

我尝试通过以下命令以安全模式启动 mysql:

sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &

失败并显示以下消息:

2017-04-26T08:54:42.307043Z mysqld_safe Logging to syslog.
2017-04-26T08:54:42.309096Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-04-26T08:54:42.311019Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-04-26T08:54:42.313024Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

我可以通过输入这些命令来暂时让 mysql 工作,这些命令是我在全新安装 mysql-server 后,无法使用mysql root -u

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

这将替换丢失的文件并以安全模式启动 mysql。然后在新的终端中:

mysql -uroot
SET PASSWORD for root@localhost = password('test')
FLUSH PRIVILEGES
\q

停止并以正常模式重新启动 mysql

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

此后我可以使用以下任一方式登录:

sudo mysql -uroot

或者

mysql -u root -p

但是如果我停止并重新启动服务,那么我就无法登录。如果我输入:

sudo mysql -uroot

我看到这个错误:

错误 2002 (HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2)

此外,当我重新启动计算机时,整个问题再次出现。我尝试了以下解决方法这个错误;我创建了一个包含以下代码的文件mysql.conf

# systemd tmpfile settings for mysql
# See tmpfiles.d(5) for details

d /var/run/mysqld 0755 mysql mysql -

我将其保存在以下位置:

/etc/mysql/mysql.conf.d
/etc/tmpfiles.d

但这并没有什么变化。

我将非常感激任何可以帮助我使 mysql 正常工作的信息!

答案1

最初的问题似乎是由于我第一次安装 mysql 时没有为 root 设置密码而引起的。这对于本地开发来说曾经是正常的,但在 mysql 5.7.17 中,这似乎会导致各种问题,并且稍后设置密码也无法解决问题。

由于我再次尝试时没有正确卸载 mysql,因此问题更加严重。

最后,有效的方法是使用以下命令卸载 mysql:

sudo apt purge mysql*

删除 /etc/mysql 文件夹

删除 /var/lib/mysql、/var/lib/mysql-files、/var/lib/mysql-keyring 文件夹。

重启

使用以下方式安装 mysql:

sudo apt-get install mysql-server

确保为 root 设置密码!

相关内容