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

2024-10-09 09:10:00
admin
原创
81
摘要:问题描述:我一直按照手册在 Ubuntu 上安装软件套件。我对 MySQL 一无所知。我在我的 Ubuntu 上完成了以下安装。sudo apt-get update sudo apt-get install mysql-server-5.5 sudo apt-get install mysql-client...

问题描述:

我一直按照手册在 Ubuntu 上安装软件套件。我对 MySQL 一无所知。我在我的 Ubuntu 上完成了以下安装。

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

然后我就这么做了

cd ~/Desktop/iPDC-v1.3.1/DBServer-1.1
mysql -uroot -proot <"Db.sql"

我最终收到以下错误消息。

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

我该如何修复它并继续?


解决方案 1:

注意:对于MySQL 5.7+,请参阅Lahiru对此问题的回答。其中包含更多最新信息。

对于 MySQL <5.7:

默认的 root 密码为空(即一个空字符串),而不是root。因此,您可以直接以以下身份登录:

mysql -u root

安装后你显然应该更改你的 root 密码:

mysqladmin -u root password [newpassword]

在大多数情况下,您还应该在广泛使用数据库之前设置单独的用户帐户。

解决方案 2:

我最近也遇到了同样的问题,但就我的情况而言,我记得我的密码,但它一直给我同样的错误。我试过很多解决方案,但仍然没有帮助。然后我尝试了这个:

mysql -u root -p

然后它会要求你输入这样的密码

Enter password:

然后我输入了我使用的密码。就这样。

解决方案 3:

我可以通过执行此语句来解​​决这个问题

sudo dpkg-reconfigure mysql-server-5.5

这将改变 root 密码。

解决方案 4:

您必须重置密码!Mac OS X(已测试并正常运行)和 Ubuntu 的步骤:

使用以下方法停止 MySQL

sudo service mysql stop

或者

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

以安全模式启动:

sudo mysqld_safe --skip-grant-tables --skip-networking

(上面这一行是整个命令)

这将是一个持续的命令,直到过程完成,因此打开另一个 shell/终端窗口,无需密码登录:

mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD(&quot;password&quot;) WHERE User=&quot;root&quot;;

根据@IberoMedia 的评论,对于较新版本的 MySQL,该字段被称为authentication_string

mysql> UPDATE mysql.user SET authentication_string=PASSWORD(&quot;password&quot;) WHERE User=&quot;root&quot;;

使用以下方式启动 MySQL:

sudo service mysql start

或者

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

您的新密码是“password”。

注意:对于MySQL > 5.7版本,请尝试以下操作:

update mysql.user set authentication_string=&quot;password&quot; where user=&quot;root&quot;;

解决方案 5:

当您的密码丢失时就会发生这种情况。

忘记密码后修改密码步骤:

  1. 停止 MySQL 服务器(在 Linux 上):

sudo systemctl stop mysql
  1. 启动数据库而不加载授权表或启用网络:

sudo mysqld_safe --skip-grant-tables --skip-networking &amp;

此命令末尾的 & 符号将使此过程在后台运行,因此您可以继续使用终端并运行mysql -u root(以 root 身份运行)。它不会要求输入密码。

如果出现如下错误:

2018-02-12T08:57:39.826071Z mysqld_safe Directory &#039;/var/run/mysqld&#039; for UNIX
socket file don&#039;t exists.
mysql -u root
ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket
&#039;/var/run/mysqld/mysqld.sock&#039; (2)
[1]+  Exit 1
  1. 创建 MySQL 服务目录。

sudo mkdir /var/run/mysqld

授予 MySQL 用户写入服务目录的权限。

sudo chown mysql: /var/run/mysqld
  1. 运行步骤2中的相同命令以在后台运行MySQL。

  2. 运行mysql -u root。您无需输入密码即可获得 MySQL 控制台。

运行这些命令

FLUSH PRIVILEGES;

对于 MySQL 5.7.6 及更高版本

ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;new_password&#039;;

对于 MySQL 5.7.5 及更早版本

SET PASSWORD FOR &#039;root&#039;@&#039;localhost&#039; = PASSWORD(&#039;new_password&#039;);

如果 ALTER USER 命令不起作用,请使用:

UPDATE mysql.user SET authentication_string = PASSWORD(&#039;new_password&#039;)     WHERE User = &#039;root&#039; AND Host = &#039;localhost&#039;;

现在退出

  1. 要停止手动启动的实例:

sudo kill `cat /var/run/mysqld/mysqld.pid`
  1. 重启 MySQL

sudo systemctl start mysql

解决方案 6:

在服务器首次启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化。

  • SSL 证书和密钥文件在数据目录中生成。

  • valid_password插件已安装并启用。

  • 创建超级用户帐户 'root'@'localhost'。设置超级用户的密码并存储在错误日志文件中。

要显示它,请使用以下命令:

shell> sudo grep &#039;temporary password&#039; /var/log/mysqld.log

尽快使用生成的临时密码登录更改root密码,并为超级用户帐户设置自定义密码:

shell> mysql -u root -p

mysql> ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;MyNewPass5!&#039;; 

解决方案 7:

如果问题仍然存在,请尝试强制更改密码:

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &amp;

mysql -u root

设置新的MySQL root用户密码:

use mysql;
update user set password=PASSWORD(&quot;NEW-ROOT-PASSWORD&quot;) where User=&#039;root&#039;;
flush privileges;
quit;

停止 MySQL 服务器:

/etc/init.d/mysql stop

启动MySQL服务器并测试:

mysql -u root -p

解决方案 8:

如果其他答案都不适合您,并且您收到此错误:

mysqld_safe Logging to &#039;/var/log/mysql/error.log&#039;.
mysqld_safe Directory &#039;/var/run/mysqld&#039; for UNIX socket file don&#039;t exists.
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

按照下面的命令一步一步操作,直到重置密码:

# Stop your server first
sudo service mysql stop

# Make the MySQL service directory.
sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &amp;

# Log in to your server without any password.
mysql -u root mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD(&#039;YourNewPasswordBuddy&#039;), plugin=&#039;mysql_native_password&#039; WHERE User=&#039;root&#039; AND Host=&#039;localhost&#039;;

# If you omit (AND Host=&#039;localhost&#039;) section, it updates
# the root password regardless of its host

FLUSH PRIVILEGES;
EXIT;

# Kill the mysqld_safe process
sudo service mysql restart

# Now you can use your new password to log in to your server
mysql -u root -p

# Take note for remote access. You should create a remote
# user and then grant all privileges to that remote user

解决方案 9:

我遇到了这个非常烦人的问题,并找到了很多无效的解决方案。我遇到的最佳解决方案是完全卸载 MySQL 并重新安装。重新安装时,您设置了 root 密码,这解决了问题。

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

我在其他地方找到了这段代码,因此我不承担任何责任。但它确实有效。对于卸载 MySQL 后如何安装它,我认为DigitalOcean有一个很好的教程。请查看我的要点。

如何在 Ubuntu 上安装 MySQL(有效)

解决方案 10:

我正在使用Ubuntu 16.04(Xenial Xerus)并安装了 MySQL 5.7。

我也遇到了同样的问题

拒绝 root 用户登录。

我尝试了以下步骤:

  1. dpkg --get-selections | grep mysql(获取 MySQL 的版本)。

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

如果没有 -p,则不会提示您输入密码。进入后,您可以按照以下步骤创建一个有密码的用户:

CREATE USER &#039;your_new_username&#039;@&#039;your-hostname&#039; IDENTIFIED BY &#039;your-password&#039;;

GRANT ALL PRIVILEGES ON *.* to &#039;your_new_username&#039;@&#039;your-hostname&#039; WITH GRANT OPTION;

从根用户退出并从上面提供的 <name> 登录。

mysql -u &lt;your_new_username> -p

由于某种原因,仅仅输入 MySQL 仍然不起作用。完全不起作用。我建议养成使用 的习惯mysql -u &lt;name> -p

解决方案 11:

在终端中,只需输入:

mysql -u root -p

然后它会要求你输入密码。

解决方案 12:

我以root 用户身份安装了 MySQL ( $SUDO),并遇到了同样的问题

以下是我修复它的方法:

  1. sudo cat /etc/mysql/debian.cnf

这将显示以下详细信息:

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

上面我们可以看到密码。但我们只会在提示符中使用它。(GUx0RblkD3sPhHL5)

  1. `mysql -u debian-sys-maint -p

输入密码:`

现在提供密码(GUx0RblkD3sPhHL5)。

  1. 现在exit从 MySQL 再次登录:

`mysql -u root -p

输入密码:`

现在输入新密码。就这样。我们有了新密码以供将来使用。

它对我有用。

解决方案 13:

对于那些当前答案不起作用的人,可以尝试这个(在 macOS 上测试):

mysql -h localhost -u root -p --protocol=TCP

此后,系统会要求您输入密码,您应该使用您的 OS 用户密码。然后当您进入 MySQL 时,您可以运行:

select Host, User from mysql.user;

你应该看到:

MySQL [(none)]> select Host, User from mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+

从这里您可以更改配置并编辑密码或修改授权。

解决方案 14:

请阅读官方文档:MySQL:如何重置 Root 密码

如果您有权访问终端:

MySQL 5.7.6 及更高版本:

mysql

mysql> ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;MyNewPass&#039;;

MySQL 5.7.5 及更早版本:

mysql

mysql> SET PASSWORD FOR &#039;root&#039;@&#039;localhost&#039; = PASSWORD(&#039;MyNewPass&#039;);

解决方案 15:

2021 年。

针对Ubuntu 20.04 (Focal Fossa)的答案(也许其他发行版也一样)。

经过几天的徘徊......并且这些答案对我来说都不起作用,我这样做了,并且成功了!

始终处于 Bash shell 中:

sudo systemctl disable mysql

为了阻止守护进程在启动时启动。

sudo apt purge mysql-server

sudo apt purge mysql-community-server*

那里,它警告你,你将删除配置文件……所以它起作用了!因为那些文件就是制造麻烦的东西!

sudo apt autoremove

命令 sudo apt autoremove 删除所有遗留的包。

然后(也许这是可选的,但我还是这么做了)重启。另外,我从官方 MySQL 网页下载了 mysql-server-8.0:

sudo apt install mysql-server

它正在运行的信号是,当您输入上述命令时,系统会要求您输入 root 密码。

最后:

mysql -u root -p

以及您之前输入的密码。

解决方案 16:

这个答案可能听起来很傻,但在浪费了几个小时的时间后,这就是我让它发挥作用的方法:

mysql -u root -p

我收到了错误消息

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

即使我输入了正确的密码(第一次安装 MySQL 时获得的临时密码)。

当我在密码提示灯闪烁的时候输入密码时,我便正确了。

解决方案 17:

我在 Mac OS X 上使用 mysql-5.7.12-osx10.11-x86_64.dmg。

安装过程会自动为 root 用户设置一个临时密码。您应该保存该密码。该密码无法恢复。

按照说明进行操作:

  1. 转至cd /usr/local/mysql/bin/

  2. 输入临时密码(类似于“tsO07JF1=>3”)

  3. 您应该会收到mysql>提示。

  4. 运行,SET PASSWORD FOR &#039;root&#039;@&#039;localhost&#039; = PASSWORD(&#039;{YOUR_PASSWORD}&#039;);如果您希望设置密码:“root”,那么命令将是,SET PASSWORD FOR &#039;root&#039;@&#039;localhost&#039; = PASSWORD(&#039;root&#039;);

  5. 跑步ALTER USER &#039;root&#039;@&#039;localhost&#039; PASSWORD EXPIRE NEVER;

  6. 跑步exit

  7. 跑步./mysql -u root -p

  8. 输入你的密码。我的情况是输入“root”(不带引号)

  9. 就这样。

为了方便起见,您应该将其添加&quot;/usr/local/mysql/bin&quot;到您的 PATH 环境变量中。

现在您可以从任何地方输入./mysql -u root -p然后输入密码,然后您将收到mysql>提示。

解决方案 18:

如果问题仍然存在,请尝试强制更改密码。

停止 MySQL 服务器(在 Linux 上):

/etc/init.d/mysql stop

停止 MySQL 服务器(在 Mac OS X 上):

mysql.server stop

使用--skip-grant-tables启动mysqld_safe守护进程:

mysqld_safe --skip-grant-tables &amp;
mysql -u root

设置新的MySQL root用户密码:

use mysql;
update user set password=PASSWORD(&quot;NEW-ROOT-PASSWORD&quot;) where User=&#039;root&#039;;
flush privileges;
quit;

停止 MySQL 服务器(在 Linux 上):

/etc/init.d/mysql stop

停止 MySQL 服务器(在 Mac OS X 上):

mysql.server stop

启动MySQL服务器服务,并测试以root身份登录:

mysql -u root -p

解决方案 19:

如果您将 MySQL 作为 Docker 映像的一部分(例如在端口 6606 上)并且 Ubuntu 安装(在端口 3306 上),则指定端口是不够的:

mysql -u root -p -P 6606

将会抛出:

ERROR 1045 (28000): Access denied for user &#039;root&#039;@&#039;localhost&#039; (using password: YES)

由于它默认尝试连接到 localhost,因此指定本地 IP 地址可以解决此问题:

mysql -u root -p -P 6606 -h 127.0.0.1

解决方案 20:

我也遇到了同样的问题。我这样做了:

  1. 打开你的cmd

  2. 导航到 C:Program FilesMySQLMySQL Server 8.0bin>(其中 MySQL Server 8.0 可能因您安装的服务器而异)

  3. 然后输入以下命令mysql -u root -p

  4. 它会提示输入密码...只需点击Enter,因为有时您在安装时输入的密码会更改为空白。

现在您可以简单地访问数据库。

这个解决方案在 Windows 平台上对我有效。

解决方案 21:

虽然最佳答案 (使用mysqladmin ) 在macOS v10.15 (Catalina) 上有效,但在 Ubuntu 上无效。然后我尝试了许多其他选项,包括 MySQL 的安全启动,但都不起作用。

这是一个可以做到的:

至少对于我得到的版本来说,5.7.28-0ubuntu0.18.04.4答案是缺乏的IDENTIFIED WITH mysql_native_password。5.7.28 是当前 LTS 上的默认设置,因此应该是大多数新系统的默认设置(直到Ubuntu 20.04(Focal Fossa)LTS 发布)。

我发现无法设置 MySQL 服务器的 root 密码,现在应用

ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED WITH mysql_native_password BY &#039;your_pass_here&#039;;

确实有效。

解决方案 22:

我遇到的错误是:

ERROR 1045 (28000): Access denied for user &#039;root&#039;@&#039;localhost&#039; (using password: NO)

这是端口运行时出现的问题。

默认情况下,MySQL 在端口 3306上运行。

您可以通过运行来检查

  • 在 32 位系统中:

sudo /opt/lampp/manager-linux.run

  • 在 64 位系统中:

sudo /opt/lampp/manager-linux-x64.run

并点击Configure按钮。

XAMPP控制面板

在我的例子中,端口在 3307 上运行,我使用了以下命令

mysql -u root -p -P 3307 -h 127.0.0.1

解决方案 23:

默认情况下,密码为空,因此您必须按照以下步骤更改密码。

连接到 MySQL

root# mysql

Use mysql

mysql> update user set password=PASSWORD(&#039;root&#039;) where User=&#039;root&#039;;

最后,重新加载权限:

mysql> flush privileges;
mysql> quit

解决方案 24:

仅一行即可解决我的问题。

sudo dpkg-reconfigure mysql-server-5.5

解决方案 25:

在Ubuntu 16.04 (Xenial Xerus)和 MySQL 版本 5.7.13中,我能够通过以下步骤解决问题:

  1. 按照 B.5.3.2.2 节重置 Root 密码的说明进行操作:Unix 和类 Unix 系统
    MySQL 5.7 参考手册

  2. 我尝试#sudo mysqld_safe --init-file=/home/me/mysql-init &amp;失败了。错误在/var/log/mysql/error.log中:

2016-08-10T11:41:20.421946Z 0 [Note] Execution of init_file &#039;/home/me/mysql/mysql-init&#039; started.
2016-08-10T11:41:20.422070Z 0 [ERROR] /usr/sbin/mysqld: File &#039;/home/me/mysql/mysql-init&#039; not found (Errcode: 13 - Permission denied)
2016-08-10T11:41:20.422096Z 0 [ERROR] Aborting

mysql-init 的文件权限不是问题。我们需要编辑 AppArmor 权限。

  1. 編輯sudo vi /etc/apparmor.d/usr.sbin.mysqld

 ....
   /var/log/mysql/ r,
   /var/log/mysql/** rw,


 # Allow user init file
   /home/pranab/mysql/* r,

   # Site-specific additions and overrides. See local/README for details.
   #include &lt;local/usr.sbin.mysqld>
 }
  1. sudo /etc/init.d/apparmor reload

  2. 再次启动 mysqld_safe。尝试上述步骤 2。检查文件/var/log/mysql/error.log。确保没有错误并且 mysqld 已成功启动。

  3. 跑步mysql -u root -p

输入密码:

输入您在 mysql-init 中指定的密码。您现在应该能够以 root 身份登录。

  1. 通过以下方式关闭mysqld_safesudo mysqladmin -u root -p shutdown

  2. 以正常方式启动 mysqldsudo systemctl start mysql

解决方案 26:

从此链接复制,我遇到了同样的问题,这解决了问题。我们为数据库添加密码后,需要添加-p(基于密码的登录),然后输入密码。否则,它将返回此错误:

mysql -u root -p

解决方案 27:

因为您的错误消息显示“密码:是”,这意味着您使用了错误的密码。我也遇到过这种情况。幸运的是,我记得正确的密码,并且能够使数据库连接正常工作。

解决方案 28:

此错误可能是由密码中的特殊字符引起的

如果您删除它们,问题就解决了。

ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED WITH mysql_native_password BY &#039;insert_password&#039;;

我的情况中的特殊字符是“$§”

您还必须修复导致此错误的所有其他问题,例如在 Windows 中将 mysql 安装路径添加到 Windows 环境变量下的 Windows 路径。编辑系统环境变量 > 高级 > 环境变量 > 双击路径 > 新建 > 输入 mysql bin 文件夹的路径

C:Program FilesMySQLMySQL 服务器 8.0bin

解决方案 29:

如果您的计算机上已安装其他版本的 MySQL,则可能会出现此错误。解决此问题的最快方法是先卸载旧版本的 MySQL,然后再安装新版本。

解决方案 30:

password在最近的 MySQL 版本中,表中没有任何内容mysql.user

因此您需要执行ALTER USER。将这一行命令放入文件中。

ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;MyNewPass&#039;;

并将其作为初始化文件执行(以rootmysql用户身份):

mysqld_safe --init-file=/home/me/mysql-init &amp;

需要停止 MySQL 服务器才能启动mysqld_safe

此外,AppArmor 加载此初始化文件的权限也可能存在问题。请参阅AppArmor 和 MySQL以了解更多信息。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用