MySQL“错误 1698 (28000):用户 'root'@'localhost' 访问被拒绝”

Kur*_*eek 5 mysql

我已经安装了以下版本的 MySQL:

kurt@kurt-ThinkPad:~$ mysql -V
mysql  Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using  EditLine wrapper
Run Code Online (Sandbox Code Playgroud)

我记得我在安装过程中没有为 root 用户设置密码。但是,如果我尝试使用该mysql命令简单地启动它,则会出现以下错误:

kurt@kurt-ThinkPad:~$ mysql
ERROR 1045 (28000): Access denied for user 'kurt'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

同样,作为 root 用户,

kurt@kurt-ThinkPad:~$ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)

我尝试按照Resetting the Root Password: Unix and Unix-Like Systems 上的说明进行操作;我在我的主目录中创建了文本文件,并从那里尝试使用该--init-file选项启动 MySQL 服务器。但是,我再次收到权限错误:

kurt@kurt-ThinkPad:~$ mysqld_safe --init-file=mysql-init &
[1] 18340
kurt@kurt-ThinkPad:~$ /usr/bin/mysqld_safe: 548: /usr/bin/mysqld_safe: cannot create /var/lib/mysql/mysqld_safe.pid: Permission denied
2016-09-20T14:57:04.753720Z mysqld_safe Logging to '/var/log/mysql/error.log'.
cat: /var/run/mysqld/mysqld.pid: Permission denied
rm: cannot remove '/var/run/mysqld/mysqld.pid': Permission denied
2016-09-20T14:57:04.780206Z mysqld_safe Fatal error: Can't remove the pid file:
/var/run/mysqld/mysqld.pid
Please remove it manually and start /usr/bin/mysqld_safe again;
mysqld daemon not started
/usr/bin/mysqld_safe: 135: /usr/bin/mysqld_safe: cannot create /var/log/mysql/error.log: Permission denied
rm: cannot remove '/var/lib/mysql/mysqld_safe.pid': Permission denied
Run Code Online (Sandbox Code Playgroud)

我在Cant connect to Mysql server 中读到过类似的错误无法创建/写入 pid 文件,其中建议的解决方案是将 MySQL 用户分配到/var/run/mysqld目录。但是,如果我尝试这样做,我会得到“不允许操作”:

kurt@kurt-ThinkPad:~$ chown mysql:mysql /var/run/mysqld
chown: changing ownership of '/var/run/mysqld': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

关于如何让 MySQL 工作的任何想法?

Kur*_*eek 7

我注意到一个解决方案是运行mysqlsudo

kurt@kurt-ThinkPad:~$ sudo mysql
sudo: unable to resolve host kurt-ThinkPad
[sudo] password for kurt: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.15 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
Run Code Online (Sandbox Code Playgroud)

(我从https://bbs.archlinux.org/viewtopic.php?id=154010得到了这个建议)。