ChatGPT解决这个技术问题 Extra ChatGPT

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

我一直在按照手册在 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' 的访问被拒绝(使用密码:是)

我该如何修复它并继续?

未来的访问者,也不要忘记检查这里解释的几个原因:dev.mysql.com/doc/refman/8.0/en/problems-connecting.html

P
Peter Mortensen

注意:对于MySQL 5.7+,请参阅此问题的answer from Lahiru。这包含更多当前信息。

对于 MySQL < 5.7:

默认的 root 密码是空白的(即一个空字符串),而不是 root。所以你可以登录为:

mysql -u root

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

mysqladmin -u root password [newpassword]

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


@FarticlePilter -p 标志指定密码,因此在您更改根密码后,您会像 mysql -u root -p[newpassword] 一样。 < [filename] 正在使用 std 输入在通过您提供的用户凭证给定的路径执行 SQL 文件。
我按照 mysqladmin -u root password abc1234 的指示尝试了,但我得到了 mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'。太感谢了!
@Kanagaroo 在这个问题中,OP 声明他们刚刚安装了 MySQL,然后尝试通过 MySQL 命令行客户端访问。这听起来像是第一次接触到我。
其实对于mysql community server 5.7,默认root密码是在安装的时候随机生成的。检查您的 /var/log/mysqld.log 以获取有关“临时密码”的行。节省数小时的闲逛。
@BraianMellor 这确实解决了 MySQL < 5.7 的问题,因为 Ubuntu 上的默认(安装后)root 密码为空白(无密码),在原始问题中,发布者试图使用 root/root。问题与丢失密码、更改密码或类似问题无关。对于较新版本的 MySQL,我引用的另一个答案是正确的,因为用户必须查看错误日志才能看到随机生成的 root 密码。
P
Peter Mortensen

我能够通过执行这个语句来解决这个问题

sudo dpkg-reconfigure mysql-server-5.5

这将更改root密码。


正是我所需要的...并不是每个人都有 5.5 版的服务器。使用 dpkg --get-selections | grep sql 获取您的版本
@Balmipour 在 Rhel 6.x 中检查 sql 版本的等效命令应该是什么
@Divz 在 Rhel/centos 中重新配置 mysql 服务器的命令应该是什么
当我在 Mac OS X 中运行此命令时,我收到此错误:sudo: dpkg-reconfigure: command not found。有什么建议吗?
这不要求输入新密码。改成什么?
P
Peter Mortensen

你必须重设密码! 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

您的新密码是“密码”。

注意:对于 MySQL > 5.7 的版本,试试这个:

update mysql.user set authentication_string='password' where user='root';

请不要那样做! @Divz 的答案更安全。 引用关于 --skip-grant-tables 的文档: 这使任何人都可以在没有密码和所有权限的情况下进行连接 [...] 因为这是不安全的,[. ..] 将 --skip-grant-tables--skip-networking 结合使用以防止远程客户端连接。 哦,而且,这个对我不起作用。这就是我来这里的原因:p
如果你走那条路,是的。它对我不起作用,而且遵循@Divz 的回答对我来说似乎更容易,无论如何--我建议使用 dpkg --get-selections | grep mysql-server- 来获取您的确切 MySQL 版本,然后使用 sudo dpkg-reconfigure mysql-server- 5.x(用您的服务器版本替换 5.x,顺便说一句)。我以这种精确度评论了@Divz 的答案,但它被几个“感谢”评论所掩盖。
更新用户集 authentication_string=password('1111') where user='root';
我必须将命令 sudo mysql restart 更改为 sudo service mysql restart,它就像一个魅力。“我已经编辑了你的帖子。
自 MySQL 5.7.6 起,Password 列已重命名为“authentication_string”,您可以在此处阅读有关它的更多信息:bugs.mysql.com/bug.php?id=76655
P
Peter Mortensen

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

mysql -u root -p

之后它会要求您输入这样的密码

Enter password:

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


为我工作!我的 mysql-server 版本是: 服务器版本:8.0.13 MySQL Community Server - GPL
如果您不知道密码怎么办?
P
Peter Mortensen

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

忘记密码时更改密码的步骤:

停止 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 文件不存在。 mysql -u root ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) [1]+ Exit 1 Make MySQL service directory。 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 步修改为 sudo kill `sudo cat /var/run/mysqld/mysqld.pid`
这是对我有用的。在第 5 步中,执行 1. 使用 USER 2. 更改密码使用 --> update user set authentication_string = PASSWORD("password") where User='root';
这是最好的解决方案,我能找到。在 MBP '15 型号的 macOS Mojave 上使用“5.7.26 MySQL 社区服务器 (GPL)”。我不得不从 System Preference 中停止 Mysql,然后执行第 2 步和第 5 步。然后我必须通过使用 ps -ef | 查找 PID 来终止 MySQL 进程。 grep mysql。
经过数小时和数天的努力,我懒得在步骤 2 中找到错误原因。非常感谢您的回答。最后我可以看到 mysql -u root -p 正在使用我的新密码
L
Lahiru

在服务器的初始启动时,假设服务器的数据目录为空,会发生以下情况:

服务器已初始化。

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

validate_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!'; 

这看起来很有希望,但它对我不起作用。当我运行 sudo grep 'temporary password' /var/log/mysqld.log 我得到 /var/log/mysqld.log: No such file or directory
试试 sudo grep 'temporary password' /var/log/mysql/error.log。 @Lahiru 解决方案对我有用。
我试过 sudo grep 'temporary password' /var/log/mysql/error.log 但它什么也没返回。
试试 shell> sudo grep 'password' /var/log/mysql/error.log。为我工作,但我得到: root@localhost 是使用空密码创建的!请考虑关闭 --initialize-insecure 选项。 我的 mysql 版本是:Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL)
@EnginYilmaz 当问题是 mysql 甚至无法访问时,您为什么建议使用 mysql 命令?
P
Peter Mortensen

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

/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

谢谢你。 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 也困扰着我的服务器。 'mysqld_safe' 也失败了,直到我在第 1 步之后执行了 'killall mysqld'。
请不要那样做! @Divz 的答案更安全。 引用关于 --skip-grant-tables 的文档: 这使得任何人都可以在没有密码和所有权限的情况下进行连接 [...] 因为这是不安全的,[. ..] 将 --skip-grant-tables--skip-networking 结合使用以防止远程客户端连接。 哦,而且,这个对我不起作用。这就是我来这里的原因:p
它给了我:错误1054(42S22):“字段列表”中的未知列“密码”
检查@Anshu 的答案,这是更安全的处理方式
@MD.MohiuddinAhmed 您必须使用更新版本的 mysql-server。参考这个答案:stackoverflow.com/a/31122246/6242649
P
Peter Mortensen

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

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

对于所有远程地址:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -> bind-address=0.0.0.0
P
Peter Mortensen

我遇到了这个非常烦人的问题,并发现了许多不起作用的答案。我遇到的最佳解决方案是完全卸载 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 有一个很好的教程。查看我的要点。

How to install MySQL on Ubuntu (which works)


P
Peter Mortensen

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

我遇到过同样的问题

root 用户登录被拒绝。

我尝试了以下步骤:

dpkg --get-selections | grep mysql(获取 MySQL 的版本)。 dpkg-重新配置 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;

从根目录退出并从您在上面提供的 登录。

mysql -u <your_new_username> -p

由于某种原因,仍然只是键入 MySQL 不起作用。 完全。我建议养成使用 mysql -u <name> -p 的习惯。


如果没有 dpkg 命令,这在 WSL 安装和安装在根目录中的 MySQL 之间对我有用。奇怪的是,我的 IP 在 WSL 中发生了变化,我无法从 WSL 登录 mariaDB,但我可以从 Windows 登录。更奇怪的是我在 users 表中确实有一个 root@'%' 。创建一个新的根并执行 GRANT ALL 工作。
P
Peter Mortensen

在终端中,只需输入:

mysql -u root -p

然后它会向您询问密码。


P
Peter Mortensen

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

这是我修复它的方法:

sudo cat /etc/mysql/debian.cnf 这将显示详细信息: # 为 Debian 脚本自动生成。请勿触摸! [client] host = localhost user = debian-sys-maint 密码 = 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 Enter password:` 现在提供密码(GUx0RblkD3sPhHL5)。现在退出 MySQL 并再次登录:`mysql -u root -p Enter password:`

现在提供新密码。就这样。我们有一个新密码供进一步使用。

它对我有用。


P
Peter Mortensen

请阅读官方文档:MySQL: How to Reset the Root Password

如果您可以访问终端:

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');

Gives : ERROR 1131 (42000): You are using MySQL as an anonymous user and anonymous users are not allowed to change passwords
这是正常的。您的用户是匿名的。您需要执行 > mysql -u {your_username}
P
Peter Mortensen

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

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

在此之后,将要求您输入密码,您应该使用您的操作系统用户密码。然后当你进入 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             |
+-----------+------------------+

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


非常感谢,这是唯一对我有用的解决方案
P
Peter Mortensen

我在 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 Run ./mysql -u root -p 输入您的密码。就我而言,我会输入“root”(不带引号)就是这样。

为方便起见,您应该将 "/usr/local/mysql/bin" 添加到 PATH 环境变量中。

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


P
Peter Mortensen

答案可能听起来很傻,但是在浪费了几个小时之后,这就是我让它工作的方式:

mysql -u root -p

我收到错误消息

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

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

当密码提示闪烁时,我输入密码时我猜对了。


重新“在密码提示闪烁时输入密码”:对比什么?为什么会闪烁或不闪烁?是什么导致它改变状态。眨眼?这是基于时间的事情吗?你能详细说明吗?最好是 editing (changing) your answer,而不是在评论中(without“Edit:”、“Update:”或类似的 - 答案应该看起来好像是今天写的) .
P
Peter Mortensen

如果您将 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

P
Peter Mortensen

2021 年。

回答 Ubuntu 20.04(Focal Fossa)(可能还有其他分布)。

经过几天的四处游荡......并且没有一个对我有用的答案,我做到了,它奏效了!

始终在 Bash shell 中:

sudo systemctl disable mysql

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

sudo apt purge mysql-server

sudo apt purge mysql-community-server*

在那里,它警告您将删除配置文件......所以它正在工作!因为那些是惹麻烦的人!

sudo autoremove

删除所有遗留的包。

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

sudo apt install mysql-server

它工作的一个信号是,当您输入上述命令时,系统会要求您输入 root 密码。

最后:

mysql -u root -p

和你之前输入的密码。


P
Peter Mortensen

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

停止 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

2
2 revs, 2 users 65%

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

连接到 MySQL

root# mysql

Use mysql

mysql> update user set password=PASSWORD('root') where User='root';

最后,重新加载权限:

mysql> flush privileges;
mysql> quit

P
Peter Mortensen

只需一行,它就解决了我的问题。

sudo dpkg-reconfigure mysql-server-5.5

P
Peter Mortensen

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

按照 B.5.3.2.2 节中的说明重置根密码: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 [注意] init_file '/home/me/mysql/mysql-init' 的执行开始。 2016-08-10T11:41:20.422070Z 0 [错误] /usr/sbin/mysqld: 找不到文件'/home/me/mysql/mysql-init' (Errcode: 13 - Permission denied) 2016-08-10T11: 41:20.422096Z 0 [错误] 中止

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

sudo 编辑 vi /etc/apparmor.d/usr.sbin.mysqld .... /var/log/mysql/ r, /var/log/mysql/** rw, # 允许用户初始化文件 /home/pranab/ mysql/* r, # 站点特定的添加和覆盖。有关详细信息,请参阅本地/自述文件。 #include } 执行 sudo /etc/init.d/apparmor reload 再次启动 mysqld_safe。尝试上面的步骤 2。检查文件 /var/log/mysql/error.log。确保没有错误并且mysqld已成功启动。运行 mysql -u root -p 输入密码:输入您在 mysql-init 中指定的密码。您现在应该能够以 root 身份登录。通过 sudo mysqladmin -u root -p shutdown 关闭 mysqld_safe 通过 sudo systemctl start mysql 以正常方式启动 mysqld


P
Peter Mortensen

虽然最佳答案(带有 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 出现)。

我找到了Can't set root password MySQL Server,现在申请了

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

这确实有效。


P
Peter Mortensen

我面临的错误是:

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

并单击配置按钮。

https://i.stack.imgur.com/ZxR85.png

在我的情况下,端口在 3307 上运行,我使用了命令

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

P
Peter Mortensen

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

mysql -u root -p

c
cesargastonec

我有一个类似的问题:

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

但就我而言,原因真的很愚蠢。我从 Word 文档中复制了命令,问题是连字符没有 ASCII 0x2D 代码,而是 Unicode 0xE2 0x80 0x93 UTF-8 序列(代码点 U+2013 EN DASH)。

错误的方法:

mysql -u root –pxxxx

正确的路:

mysql -u root -pxxxx

两者看起来相同,但并不相同(尝试一下,复制并粘贴替换您的密码)。

面对此类错误,建议尝试键入命令而不是复制和粘贴。


这并不傻。这是一种常见的现象。从网页复制时也会发生这种情况(但不在此站点上),例如从博客文章中复制。
没有必要重新输入。在适当的文本编辑器中,可以肯定地识别/搜索和替换这些内容(排除猜测)。在这种情况下,正则表达式搜索 \x{2013}(至少在 Notepad++Geany 中有效)。它还可用于搜索/替换 ZERO WIDTH SPACE 等不可见字符(搜索 \x{200B})。
H
Haris Beg

因为您的错误消息显示“密码:是”,这意味着您使用了错误的密码。这也发生在我身上。幸运的是,我记住了正确的密码,并且能够使数据库连接正常工作。


P
Peter Mortensen

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

所以你需要执行ALTER USER。将这一行命令放入文件中。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

并将其作为 init 文件执行(作为 root 或 mysql 用户):

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

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

此外,加载此初始化文件的 AppArmor 权限可能存在问题。在 AppArmor and MySQL 中了解更多信息。


P
Peter Mortensen

如果您尚未设置密码,请运行 mysql -uroot。这个对我有用。


P
Peter Mortensen

在 Mac 上,如果您在使用安装时提供的第一个密码登录时遇到问题,也许您可以简单地杀死 MySQL 进程然后尝试。

所以:

运行以下命令查找 MySQL 的 PID:ps -aef | grep mysql | grep -v grep 杀死进程:kill -15 [进程ID]

然后您可以使用以下命令使用初始密码登录:

mysql -uroot -p

它要求您输入密码。只需输入初始密码。