当前位置: 首页 > 知识库问答 >
问题:

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

谯乐池
2023-03-14

我安装了以下版本的MySQL:

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

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

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

同样,作为root用户,

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

我尝试按照重置根密码:Unix和类Unix系统的说明进行操作;我在我的主目录中制作了文本文件,并从那里尝试使用--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

我读到过类似的错误,无法连接到Mysql服务器;无法创建/写入pid文件,其中建议的解决方案是将MySQL用户分配到/var/run/mysqld目录。但是,如果我尝试此操作,我会得到“不允许操作”:

kurt@kurt-ThinkPad:~$ chown mysql:mysql /var/run/mysqld
chown: changing ownership of '/var/run/mysqld': Operation not permitted

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

共有3个答案

葛俊
2023-03-14

注意你的插件。如果它是unix-socket,并且您遵循选项2,那么您必须知道哪个用户正在使用shell。因为shell的用户是唯一的身份验证方式。当shell的用户是其他usename时,即使使用$mysql-u root-p,也无法访问数据库。请看这里的例子https://mariadb.com/kb/en/authentication-plugin-unix-socket/.我建议像option2那样创建一个用户,但使用插件“mysql_native_password”。

林泰平
2023-03-14

默认安装后,我得到了相同的错误代码。我正在Ubuntu 18.0.4中运行MariaDB 10.4.7。以下是我绕过它的方式:

sudo mysql -u root
...
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
Query OK, 0 rows affected (0.005 sec)
MariaDB [(none)]> set password for 'root'@'localhost'=password('');
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> exit

在此之后,我可以再次以相同的旧方式运行mysql命令:

$ mysql -u root
...
MariaDB [(none)]>

注意:这将覆盖MariaDB 10.4.7的默认安全设置。在测试或开发环境中,这是完全可以的。在生产环境中,您可能需要三思。我建议创建不同的用户,然后为其设置密码。

司空胤
2023-03-14

我注意到一个解决方案是使用sudo运行mysql

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> 

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

 类似资料:
  • 问题内容: 我正在设置新服务器,并继续遇到此问题。 当我尝试以root用户登录MySQL数据库时,出现错误: 错误1698(28000):用户’root’@’localhost’的访问被拒绝 是否通过终端(SSH),PHPMyAdmin或MySQL客户端(例如Navicat)连接都没有关系。他们都失败了。 我在mysql.user表中查看了以下内容: 如您所见,root应该具有访问权限。 该服务器

  • 我正在设置一个新的服务器,但一直遇到这个问题。 当我尝试使用root用户登录MySQL数据库时,我得到了以下错误: 错误1698(28000):拒绝用户'root'@'localhost'的访问 不管我是通过终端(SSH)连接,还是通过PHPMyAdmin或MySQL客户端(例如Navicat)连接。他们都失败了。 我查看了mysql.user表,得到了以下信息: 如您所见,root用户应该具有访

  • 我刚刚在我的Ubuntu机器上安装了MySQL服务器。所有安装都正常,当它询问我的密码时,我只需点击“回车”键,将密码留空。现在,当我尝试登录时: 只需按enter键,就会出现以下错误: 错误1698 (28000):用户'root'@'localhost'的访问被拒绝 我不知道错误是什么,也不知道如何修复它。有人能帮忙吗?我试图阅读MYSQL文档,但我不明白他们在说什么。 当我尝试访问phpMy

  • 我是Raspberry Pi和MySQL的新手。 我已经创建了一个代码,数据库在phpmyadmin运行的wamp服务器在我的PC。同时,我想在Raspberry PI3中运行这段代码。此外,当我在Raspberry Pi 3中运行代码时,我希望数据可以保存在phpmyadmin中,这样,当我在PC上运行localhost时,我从Raspberry Pi中输入的数据也可以保存在PC中。但是,当我运

  • 错误1045(28000):拒绝用户'root'@'localhost'的访问(使用密码:Y ES) 这个错误是什么意思?

  • 问题内容: $ ./mysqladmin -u root -p ‘ 编辑 ‘ 输入密码: mysqladmin:在“ localhost”处连接到服务器失败错误: “对用户“ root” @“ localhost”的访问被拒绝(使用密码:是) 我怎样才能解决这个问题? 问题答案: 打开并编辑或,具体取决于您的发行版。 在下添加 重启MySQL 您现在应该可以使用以下命令登录mysql 跑 设置新密