错误 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-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("password") WHERE User="root";
根据@IberoMedia 的评论,对于较新版本的 MySQL,该字段被称为authentication_string
:
mysql> UPDATE mysql.user SET authentication_string=PASSWORD("password") WHERE User="root";
使用以下方式启动 MySQL:
sudo service mysql start
或者
sudo /usr/local/mysql/support-files/mysql.server start
您的新密码是“password”。
注意:对于MySQL > 5.7版本,请尝试以下操作:
update mysql.user set authentication_string="password" where user="root";
解决方案 5:
当您的密码丢失时就会发生这种情况。
忘记密码后修改密码步骤:
停止 MySQL 服务器(在 Linux 上):
sudo systemctl stop mysql
启动数据库而不加载授权表或启用网络:
sudo mysqld_safe --skip-grant-tables --skip-networking &
此命令末尾的 & 符号将使此过程在后台运行,因此您可以继续使用终端并运行mysql -u root
(以 root 身份运行)。它不会要求输入密码。
如果出现如下错误:
2018-02-12T08:57:39.826071Z mysqld_safe Directory '/var/run/mysqld' for UNIX
socket file don't exists.
mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)
[1]+ Exit 1
创建 MySQL 服务目录。
sudo mkdir /var/run/mysqld
授予 MySQL 用户写入服务目录的权限。
sudo chown mysql: /var/run/mysqld
运行步骤2中的相同命令以在后台运行MySQL。
运行
mysql -u root
。您无需输入密码即可获得 MySQL 控制台。
运行这些命令
FLUSH PRIVILEGES;
对于 MySQL 5.7.6 及更高版本
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
对于 MySQL 5.7.5 及更早版本
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
如果 ALTER USER 命令不起作用,请使用:
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
现在退出
要停止手动启动的实例:
sudo kill `cat /var/run/mysqld/mysqld.pid`
重启 MySQL
sudo systemctl start mysql
解决方案 6:
在服务器首次启动时,如果服务器的数据目录为空,则会发生以下情况:
服务器已初始化。
SSL 证书和密钥文件在数据目录中生成。
valid_password插件已安装并启用。
创建超级用户帐户 'root'@'localhost'。设置超级用户的密码并存储在错误日志文件中。
要显示它,请使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
尽快使用生成的临时密码登录更改root密码,并为超级用户帐户设置自定义密码:
shell> mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
解决方案 7:
如果问题仍然存在,请尝试强制更改密码:
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
设置新的MySQL root用户密码:
use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;
停止 MySQL 服务器:
/etc/init.d/mysql stop
启动MySQL服务器并测试:
mysql -u root -p
解决方案 8:
如果其他答案都不适合您,并且您收到此错误:
mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don'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 &
# 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('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
# If you omit (AND Host='localhost') 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 用户登录。
我尝试了以下步骤:
dpkg --get-selections | grep mysql
(获取 MySQL 的版本)。dpkg-reconfigure mysql-server-5.7
mysql -u root -p
如果没有 -p,则不会提示您输入密码。进入后,您可以按照以下步骤创建一个有密码的用户:
CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;
从根用户退出并从上面提供的 <name> 登录。
mysql -u <your_new_username> -p
由于某种原因,仅仅输入 MySQL 仍然不起作用。完全不起作用。我建议养成使用 的习惯mysql -u <name> -p
。
解决方案 11:
在终端中,只需输入:
mysql -u root -p
然后它会要求你输入密码。
解决方案 12:
我以root 用户身份安装了 MySQL (
$SUDO
),并遇到了同样的问题
以下是我修复它的方法:
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)
`mysql -u debian-sys-maint -p
输入密码:`
现在提供密码(GUx0RblkD3sPhHL5)。
现在
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 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
MySQL 5.7.5 及更早版本:
mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
解决方案 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 用户设置一个临时密码。您应该保存该密码。该密码无法恢复。
按照说明进行操作:
转至
cd /usr/local/mysql/bin/
输入临时密码(类似于“tsO07JF1=>3”)
您应该会收到
mysql>
提示。运行,
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');
如果您希望设置密码:“root”,那么命令将是,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
跑步
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
跑步
exit
跑步
./mysql -u root -p
输入你的密码。我的情况是输入“root”(不带引号)
就这样。
为了方便起见,您应该将其添加"/usr/local/mysql/bin"
到您的 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 &
mysql -u root
设置新的MySQL root用户密码:
use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
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 'root'@'localhost' (using password: YES)
由于它默认尝试连接到 localhost,因此指定本地 IP 地址可以解决此问题:
mysql -u root -p -P 6606 -h 127.0.0.1
解决方案 20:
我也遇到了同样的问题。我这样做了:
打开你的cmd
导航到 C:Program FilesMySQLMySQL Server 8.0bin>(其中 MySQL Server 8.0 可能因您安装的服务器而异)
然后输入以下命令
mysql -u root -p
它会提示输入密码...只需点击
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 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
确实有效。
解决方案 22:
我遇到的错误是:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
这是端口运行时出现的问题。
默认情况下,MySQL 在端口 3306上运行。
您可以通过运行来检查
在 32 位系统中:
sudo /opt/lampp/manager-linux.run
在 64 位系统中:
sudo /opt/lampp/manager-linux-x64.run
并点击Configure
按钮。
在我的例子中,端口在 3307 上运行,我使用了以下命令
mysql -u root -p -P 3307 -h 127.0.0.1
解决方案 23:
默认情况下,密码为空,因此您必须按照以下步骤更改密码。
连接到 MySQL
root# mysql
Use mysql
mysql> update user set password=PASSWORD('root') where User='root';
最后,重新加载权限:
mysql> flush privileges;
mysql> quit
解决方案 24:
仅一行即可解决我的问题。
sudo dpkg-reconfigure mysql-server-5.5
解决方案 25:
在Ubuntu 16.04 (Xenial Xerus)和 MySQL 版本 5.7.13中,我能够通过以下步骤解决问题:
按照 B.5.3.2.2 节重置 Root 密码的说明进行操作:Unix 和类 Unix 系统
MySQL 5.7 参考手册我尝试
#sudo mysqld_safe --init-file=/home/me/mysql-init &
失败了。错误在/var/log/mysql/error.log中:
2016-08-10T11:41:20.421946Z 0 [Note] Execution of init_file '/home/me/mysql/mysql-init' started.
2016-08-10T11:41:20.422070Z 0 [ERROR] /usr/sbin/mysqld: File '/home/me/mysql/mysql-init' not found (Errcode: 13 - Permission denied)
2016-08-10T11:41:20.422096Z 0 [ERROR] Aborting
mysql-init 的文件权限不是问题。我们需要编辑 AppArmor 权限。
編輯
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 <local/usr.sbin.mysqld>
}
做
sudo /etc/init.d/apparmor reload
再次启动 mysqld_safe。尝试上述步骤 2。检查文件/var/log/mysql/error.log。确保没有错误并且 mysqld 已成功启动。
跑步
mysql -u root -p
输入密码:
输入您在 mysql-init 中指定的密码。您现在应该能够以 root 身份登录。
通过以下方式关闭mysqld_safe
sudo mysqladmin -u root -p shutdown
以正常方式启动 mysqld
sudo systemctl start mysql
解决方案 26:
从此链接复制,我遇到了同样的问题,这解决了问题。我们为数据库添加密码后,需要添加-p
(基于密码的登录),然后输入密码。否则,它将返回此错误:
mysql -u root -p
解决方案 27:
因为您的错误消息显示“密码:是”,这意味着您使用了错误的密码。我也遇到过这种情况。幸运的是,我记得正确的密码,并且能够使数据库连接正常工作。
解决方案 28:
此错误可能是由密码中的特殊字符引起的
如果您删除它们,问题就解决了。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'insert_password';
我的情况中的特殊字符是“$§”
您还必须修复导致此错误的所有其他问题,例如在 Windows 中将 mysql 安装路径添加到 Windows 环境变量下的 Windows 路径。编辑系统环境变量 > 高级 > 环境变量 > 双击路径 > 新建 > 输入 mysql bin 文件夹的路径
C:Program FilesMySQLMySQL 服务器 8.0bin
解决方案 29:
如果您的计算机上已安装其他版本的 MySQL,则可能会出现此错误。解决此问题的最快方法是先卸载旧版本的 MySQL,然后再安装新版本。
解决方案 30:
password
在最近的 MySQL 版本中,表中没有任何内容mysql.user
。
因此您需要执行ALTER USER
。将这一行命令放入文件中。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
并将其作为初始化文件执行(以root或mysql用户身份):
mysqld_safe --init-file=/home/me/mysql-init &
需要停止 MySQL 服务器才能启动mysqld_safe
。
此外,AppArmor 加载此初始化文件的权限也可能存在问题。请参阅AppArmor 和 MySQL以了解更多信息。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件