ChatGPT解决这个技术问题 Extra ChatGPT

MySQL 错误: '访问被拒绝用户'root'@'localhost'

考虑:

./mysqladmin -u root -p** '_redacted_'  

输出(包括输入密码):

输入密码:mysqladmin:连接到“localhost”的服务器失败错误:“用户'root'@'localhost'的访问被拒绝(使用密码:YES)'

我怎样才能解决这个问题?

@clearlight 不是同一个问题,这篇文章是 mysqladmin win super privilegies into mysql 的问题,另一篇文章是来自套接字的简单连接的问题。
如果存在 ~/.my.cnf 文件,请尝试删除。
我知道这是旧的,但想对未来的访客说这个。不要在命令本身中输入您的 mysql 密码,尤其是 root 密码,否则它将存储在您的 shell 历史记录中。只需保留 -p 选项,mysql 将提示输入密码。
对于 MySQL 8,使用 sudo mysql_secure_installation 并设置强密码。参考。检查本教程的第 5 步 phoenixnap.com/kb/how-to-install-mysql-on-ubuntu-18-04

P
Peter Mortensen

我发现的所有解决方案都比必要的复杂得多,而且没有一个对我有用。这是解决我的问题的解决方案。无需重新启动 mysqld 或以特殊权限启动它。

sudo mysql

-- for MySQL
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

-- for MariaDB
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('root');

通过单个查询,我们将 auth_plugin 更改为 mysql_native_password 并将 root 密码设置为 root(请随时在查询中更改)。

现在您应该可以使用 root 登录了。更多信息可以在 MySQL documentationMariaDB documentation 中找到。

(使用 Ctrl + D 或键入 exit 退出 MySQL 控制台。)


我无法做到这一点...“您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,以了解在附近使用的正确语法...”。
这个答案有效,我不小心添加了没有用的答案投票,对不起!
在 Ubuntu 18.04 上运行良好
@TCB13 和其他面临此问题的人。 “我无法执行此操作……”您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在...附近使用的正确语法。在执行 alter 命令之前使用 FLUSH PRIVILEGES
这把我锁在了外面,甚至 sudo mysql 也不再起作用了。必须完全删除mysql并重新安装。
P
Peter Mortensen

根据您的发行版,打开并编辑 /etc/my.cnf 或 /etc/mysql/my.cnf。在 [mysqld] 下添加 skip-grant-tables Restart MySQL 现在应该可以使用以下命令登录 MySQL mysql -u root -p Run mysql> flushprivileges;通过 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword' 设置新密码;返回 /etc/my.cnf 并删除/注释 skip-grant-tables 重新启动 MySQL 现在您将能够使用新密码登录 mysql -u root -p


你好,我有同样的问题。我做了上述,它解决了问题,但是每次我重新启动 CentOS,我都需要再次执行所有步骤(我收到消息:Access denied for user 'root'@'localhost' (using password: NO) -当运行命令 mysql (或任何 sql 命令)时,我会在每次重新启动时一遍又一遍地重复上述操作。
太糟糕了,这不适用于 MariaDB:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'' at line 1
我发现这可以工作@PhilippLudwig set PASSWORD FOR 'root'@'localhost' = PASSWORD('root');我在第 5 步之后这样做了。这是我的命令提示符输出的样子:MariaDB [(none)]> MariaDB [(none)]> set PASSWORD FOR 'root'@'localhost' = PASSWORD('root'); Query OK, 0 rows affected (0.00 sec)
对于第 3 步,重新启动 MariaDB:我发现以下工作:sudo systemctl restart mariadb
有些人可能会在 /etc/mysql/my.cnf 中找到该文件
s
sonrad10

以前的答案都没有帮助我解决这个问题,所以here's the solution I found

相关部分:

在运行 MySQL 5.7(及更高版本)的 Ubuntu 系统中,root MySQL 用户默认设置为使用 auth_socket 插件进行身份验证,而不是使用密码。这在许多情况下允许更高的安全性和可用性,但是当您需要允许外部程序(例如,phpMyAdmin)访问用户时,它也会使事情变得复杂。为了使用密码以 root 身份连接到 MySQL,您需要将其身份验证方法从 auth_socket 切换到 mysql_native_password。为此,请从终端打开 MySQL 提示符: sudo mysql 接下来,使用以下命令检查每个 MySQL 用户帐户使用的身份验证方法:SELECT user,authentication_string,plugin,host FROM mysql.user;输出+------------------+------------------ --------------+-----------+------------ + |用户 |身份验证字符串 |插件 |主持人 | +------------------+------------------ -------------+------------------------+------------+ |根 | | auth_socket |本地主机 | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |本地主机 | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |本地主机 | | debian 系统维护 | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password |本地主机 | +------------------+------------------ -------------+------------------------+------------+ 4 行 in set (0.00 sec) 在本例中,您可以看到 root 用户实际上使用 auth_socket 插件进行身份验证。要将 root 帐户配置为使用密码进行身份验证,请运行以下 ALTER USER 命令。请务必将密码更改为您选择的强密码,并注意此命令将更改您在步骤 2 中设置的 root 密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';然后,运行 FLUSH PRIVILEGES 告诉服务器重新加载授权表并使您的新更改生效: FLUSH PRIVILEGES;再次检查每个用户使用的身份验证方法,以确认 root 不再使用 auth_socket 插件进行身份验证:SELECT user,authentication_string,plugin,host FROM mysql.user;输出+------------------+------------------ --------------+-----------+------------ + |用户 |身份验证字符串 |插件 |主持人 | +------------------+------------------ -------------+------------------------+------------+ |根 | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password |本地主机 | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |本地主机 | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |本地主机 | | debian 系统维护 | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password |本地主机 | +------------------+------------------ -------------+------------------------+------------+ 4 行 in set (0.00 sec) 您可以在此示例输出中看到 root MySQL 用户现在使用密码进行身份验证。一旦你在你自己的服务器上确认了这一点,你就可以退出 MySQL shell:exit


Worx 也适用于 ubuntu 20.04 上的 mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))。干杯
任何人都在 Docker 中遇到 MySQL 的问题。这就是你们的解决方案。谢谢!
在 Debian 10 中,插件不是 auth_socket 而是 unix_socket
你能解决格式问题(也在第一版中)吗?
我收到这个错误,为什么? You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'BY 'MYPERSONALPASSWORD'' at line 1 我刚刚粘贴了这一行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MYPERSONALPASSWORD';
P
Peter Mortensen

我尝试了许多步骤来纠正这个问题。这个问题的可能解决方案有很多来源,很难从胡说八道中过滤掉意义。我终于找到了一个好的解决方案here

步骤 1:识别数据库版本

mysql --version

你会在 MySQL 中看到类似这样的输出:

mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

或者像 MariaDB 这样的输出:

mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

记下您正在运行的数据库和版本,因为稍后您将使用它们。接下来,您需要停止数据库,以便您可以手动访问它。

步骤 2:停止数据库服务器

要更改 root 密码,您必须事先关闭数据库服务器。

您可以使用以下方法对 MySQL 执行此操作:

sudo systemctl stop mysql

对于 MariaDB,具有:

sudo systemctl stop mariadb

第三步:不做权限检查重启数据库服务器

如果您在不加载有关用户权限的信息的情况下运行 MySQL 和 MariaDB,它将允许您以 root 权限访问数据库命令行,而无需提供密码。这将允许您在不知情的情况下访问数据库。

为此,您需要停止数据库加载存储用户权限信息的授权表。因为这有点安全风险,您还应该跳过网络以防止其他客户端连接。

在不加载授权表或启用网络的情况下启动数据库:

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

此命令末尾的 & 号将使此进程在后台运行,因此您可以继续使用终端。

现在您可以以 root 用户身份连接到数据库,该用户不应该要求输入密码。

mysql -u root

您将立即看到一个数据库 shell 提示。

MySQL 提示

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

mysql>

MariaDB 提示

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

MariaDB [(none)]>

现在您具有 root 访问权限,您可以更改 root 密码。

第四步:修改root密码

mysql> FLUSH PRIVILEGES;

现在我们实际上可以更改root密码了。

对于 MySQL 5.7.6 和更新版本以及 MariaDB 10.1.20 和更新版本,使用以下命令:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

对于 MySQL 5.7.5 及更早版本以及 MariaDB 10.1.20 及更早版本,请使用:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

确保将 new_password 替换为您选择的新密码。

注意:如果 ALTER USER 命令不起作用,通常表示存在更大的问题。但是,您可以尝试 UPDATE ... SET 来重置 root 密码。

[重要] 这是解决我的特定问题的特定行:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

记住在此之后重新加载授权表。

无论哪种情况,您都应该看到命令已成功执行的确认信息。

Query OK, 0 rows affected (0.00 sec)

密码已更改,因此您现在可以停止数据库服务器的手动实例并像以前一样重新启动它。

第五步:正常重启数据库服务器

本教程进一步介绍了重新启动数据库的步骤,但我使用的唯一部分是:

对于 MySQL,使用:

sudo systemctl start mysql

对于 MariaDB,使用:

sudo systemctl start mariadb

现在,您可以通过运行来确认新密码已正确应用:

mysql -u root -p

该命令现在应该提示输入新分配的密码。输入它,您应该可以按预期访问数据库提示。

结论

您现在拥有对恢复的 MySQL 或 MariaDB 服务器的管理访问权限。确保您选择的新 root 密码安全可靠,并将其保存在安全的地方。


MariaDB 10.2.0 中引入了 ALTER USER 语句。
哇 !这条线 mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost'; 对我来说真是救命稻草!
我使用 MariaDB 10.3.25,这很有效:mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
我喜欢这种方法,因为它允许我在不永久修改权限的情况下临时创建数据库备份,尽管最好不要在后台运行 mysqld_safe,因为我似乎在尝试杀死它然后获取mysql 服务再次正常运行(尽管完全重启 Linux 似乎可以解决问题)。
-bash: mysqld_safe: command not found AlmaLinux release 8.5
P
Peter Mortensen

在尝试了所有其他答案之后,这最终对我有用:

sudo mysql -- It does not ask me for any password

-- Then in MariaDB/MySQL console:
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
exit;

我在博文 Solved: Error “Access denied for user ‘root’@’localhost’” of MySQL — codementor.tech(中)中找到了答案。


这条插件线真的很有帮助。我尝试了很多组合,但这是唯一适用于 Ver 14.14 Distrib 5.7.27,适用于 Linux (x86_64)
这也帮助了我使用 mysql 5.7。所以不仅适用于mariadb
我刚刚在 MySQL 8 Ubuntu 20.04 上使用了它,它工作正常。使用 skip-grant-table(my.conf 或 mysql 命令)的其他答案无效。我可以使用服务帐户 (askubuntu.com/a/120769/169836) 进入,但 UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root'; 不起作用。只有在使用插件部分时才起作用。谢谢~
这对我的 sql 8 和 Ubuntu 20.04 有所帮助。
那个插件应该做什么?可以链接到官方文档吗?请通过 editing (changing) your answer 回复,而不是在评论中(没有“编辑:”、“更新:”或类似内容 - 答案应该看起来好像是今天写的)。
P
Peter Mortensen

对于 Ubuntu/Debian 用户

(它可能适用于其他发行版,尤其是基于 Debian 的发行版。)

运行以下命令以 root 身份连接(无需任何密码)

sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf

如果您不想每次连接时都添加 --defaults-file 作为 root,您可以将 /etc/mysql/debian.cnf 复制到您的主目录中:

sudo cp /etc/mysql/debian.cnf ~/.my.cnf

接着:

sudo mysql

这就是全部。显然,默认情况下,Ubuntu 上的“root”不是“root”。
D
Douglas Hosea

根据我的经验,如果你不使用 sudo 运行,它将无法工作。因此,请确保您的命令是;

sudo mysql -uroot -p

这应该是公认的答案。问题不在于忘记密码,而在于错误消息,因为如果不使用 sudo 权限运行,您将无法以 root 身份登录。
最重要的答案都是坏的。为了节省数小时的时间,请使用此答案 - stackoverflow.com/a/58155034/4759176
这应该是最佳答案。接受我的投票。谢谢
P
Peter Mortensen

对于新的 Linux 用户来说,这可能是一项艰巨的任务。让我用 MySQL 8 更新它(现在可用的最新版本是 8.0.12,截至 2018 年 9 月 12 日)

在“/etc/mysql/mysql.conf.d/”打开“mysqld.cnf”配置文件。将 skip-grant-tables 添加到 [mysql] 文本的下一行并保存。重启 MySQL 服务为“sudo service mysql restart”。现在您的 MySQL 无需任何身份验证。使用 mysql -u root -p 连接到 MySQL 客户端(也称为 mysql-shell)。目前还没有需要输入的密码。运行 SQL 命令刷新权限;现在将密码重置为 ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';现在让我们回到正常状态;从“mysqld.cnf”中删除该行“skip-grant-tables”并重新启动服务。

而已。


mysql -u root -p 仍然要求输入密码 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
@Salem 尝试使用 sudo,应该可以
P
Peter Mortensen

就我而言,在 Debian 10 下,错误

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

被(好方法)解决了

sudo mysql -u root -p mysql

坏方法:

mysql -u root -p mysql

这解决了这个问题。只需使用 sudo (无密码)授予权限,执行如下: sudo mysql -u root -p
P
Peter Mortensen

我这样做是为了在 OS X 中初始设置 MySQL 时设置我的 root 密码。打开一个终端。

sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'

关闭终端并打开一个新终端。

以下在Linux中工作,设置root密码。

sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables

sudo mysqld_safe --skip-grant-tables:这对我第一次不起作用。但在第二次尝试时,它成功了。)

然后登录 MySQL:

mysql -u root

FLUSH PRIVILEGES;

现在更改密码:

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

重启 MySQL:

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

P
Peter Mortensen

在您的MySQL Workbench中,您可以转到左侧边栏,在管理下选择“用户和权限”,单击用户帐户下的根目录,在右侧部分中单击“帐户限制”选项卡以增加最大查询、更新等,然后单击选项卡“管理角色”并选中复选框以授予帐户访问权限。


P
Peter Mortensen

呃 - 对我没有任何帮助!我有一台运行 MariaDB 5.5.64 的 CentOS 7.4 机器。

我必须在从 YUM 安装 MariaDB 之后立即执行此操作;

systemctl restart mariadb
mysql_secure_installation

mysql_secure_installation 将引导您完成多个步骤,包括“设置 root 密码?[Y/n]”。只需说“y”并给它一个密码。如您所愿,回答其他问题。

然后您可以使用密码进入

mysql -u root -p

它会活下来

systemctl restart mariadb

钥匙

然后,我检查了 /bin/mysql_secure_installation 源代码,以了解它如何神奇地更改 root 密码,而这里的其他答案都不能。导入位是:

do_query "UPDATE mysql.user SET Password=PASSWORD('$esc_pass') WHERE User='root';"

...它说的是 SET Password=... 而不是 SET authentication_string = PASSWORD...。因此,此版本 (5.5.64) 的正确程序是:

使用您已设置的密码,使用 mysql -u root -p 登录。

或者,停止数据库并使用以下命令启动它:

mysql_safe --skip-grant-tables --skip-networking &

从 mysql> 提示符:

use mysql;
select host,user,password from user where user = 'root';
(observe your existing passwords for root).
UPDATE mysql.user set Password = PASSWORD('your_new_cleartext_password') where user = 'root' AND host = 'localhost';
select host,user,password from user where user = 'root';
flush privileges;
quit;

杀死正在运行的 mysqld_safe。重启 MariaDB。以 root 身份登录:mysql -u -p。使用您的新密码。

如果需要,您可以一次设置所有 root 密码。我认为这是明智的:

mysql -u root -p

(login)
use mysql;
select host,user,password from user where user = 'root';
UPDATE mysql.user set Password = PASSWORD('your_new_cleartext_password') where user = 'root';
select host,user,password from user where user = 'root';
flush privileges;
quit;

这将对所有根密码执行更新:即,“localhost”、“127.0.0.1”和“::1”

以后我去RHEL 8 或者你有什么的时候,我会尽量记住检查/bin/mysql_secure_installation,看看那些人是怎么做的,是谁配置的此操作系统的 MariaDB。


P
Peter Mortensen

使用 sudo 更改您的密码:

sudo mysql

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

来源:Phoenixnap - Access denied for user root localhost


P
Peter Mortensen

修复 macOS

从 https://downloads.mysql.com/archives/community/ 安装 MySQL(8.x 是最新的,但请确保该版本与 macOS 版本兼容)为 root 提供密码(让 是密码)在安装过程中(不要忘记记住密码!)选择使用旧密码加密选项(这是我使用过但没有尝试使用强密码加密选项)搜索并打开 MySQL.prefPane(使用搜索工具)选择配置选项卡单击配置文件的选择选项选择/private/etc/my.cnf 从终端打开一个名为/etc/my.cnf(vi /etc/my.cnf)的新文件或现有文件添加以下内容: [mysqld] skip-grant-tables 重启 mysqld 如下: ps aux | grep mysql kill -9 ...(获取所有 MySQL 相关进程的 pid) mysqld 自动重新启动 通过从终端运行以下命令来验证该选项是否已设置: ps aux | grep mysql > mysql/bin/mysqld ... --defaults-file=/private/etc/my.cnf ... (输出) 运行以下命令连接(let mysql--macos- x86_64 是安装 MySQL 的文件夹。要获取实际文件夹,请运行 ls /usr/local/ 并复制文件夹名称):/usr/local/mysql--macos-x86_64/bin/mysql -uroot -p


最重要的答案都是坏的。为了节省数小时的时间,请使用此答案 - stackoverflow.com/a/58155034/4759176
我只是复制粘贴了在 Mac OS 上对我有用的解决方案。我希望它是有用的。我没有在 Windows 或 Linux 上尝试此修复,我认为其他解决方案应该适用于其他操作系统。
P
PYK

我的站在这里:

Ubuntu 21.04

PHP 5.6.40-57

MYSQL 5.7.37

让我们配置它

nano /etc/mysql/mysql.conf.d/mysqld.cnf

在底部,写下这个

skip-grant-tables

重新加载它

service mysql restart

P
Peter Mortensen

如果您像我一样,并且之前答案中的所有信息都失败了,请继续卸载您机器上所有版本的 MySQL,使用命令 sudo find / -name "mysql"rm -rf 每个文件搜索所有剩余的 MySQL 文件或附加了“mysql”名称的目录(您应该跳过与编程语言库相关的文件)。

现在安装新版本的 MySQL 并享受。注意:您将丢失所有数据,因此请先权衡您的选择。


P
Peter Mortensen

有时在安装时会设置默认密码 - 作为 mentioned in the documentation。这可以通过以下命令来确认。

sudo grep 'temporary password' /var/log/mysqld.log

P
Peter Mortensen

如果您没有足够的权限,可能会发生这种情况。

键入 su,输入 root 密码,然后重试。


s
salvo720

窗户:

cd \Ampps\mysql\bin :

mysql.exe -u root -pmysql

在 mysql 启动后(你可以看到类似 mysql> 的 shell)使用这个查询:

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

再次尝试使用 root 访问


P
Peter Mortensen

如果您像我一样通过 Google 访问此页面,而以前的解决方案都不起作用,那么结果证明是我 100% 愚蠢的错误。我没有连接到服务器。一旦连接,一切都一帆风顺。

如果它有助于了解我的设置,我正在使用 Sequel Pro 并尝试使用 NPM 包 mysql 与 Node 连接到它。我认为我不需要实际连接(除了运行 Sequel Pro),因为我已经在我的应用程序中这样做了。

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


P
Peter Mortensen

我在设置 mysql-8 zip 版本时遇到了同样的错误。最后,切换到无缝运行的 installer 版本。在安装过程中,会提示您设置 root 密码。一旦设置,它肯定会工作。

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


P
Peter Mortensen

根据 MariaDB official documentation,在 MariaDB 10.4.3 及更高版本中,默认安装了 unix_socket 身份验证插件。

要禁用它并恢复到以前的 mysql_native_password 身份验证方法,请在 my.cnf 文件的 [mysqld] 部分添加以下行:

[mysqld]
unix_socket=OFF

然后运行:

mysql_install_db --auth-root-authentication-method=normal

然后启动 mysqld

然后,此命令将正常工作:

mysqladmin -u root password CHANGEME

如需更多信息,请参阅 Configuring mysql_install_db to Revert to the Previous Authentication Method


unix_socket 应该做什么以及为什么需要进行此更改?您能add稍微回答一下吗?请通过 editing (changing) your answer 回复,而不是在评论中(没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的)。
P
Peter Mortensen

我试图利用 Mac 上的 Docker 桌面来运行 5.7.35,而这个 docker-compose.yml 配置允许它工作:

特别是增加了一行......

命令:--default-authentication-plugin=mysql_native_password

...成功了

version: '3.3'
services:
  mysql_db:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'your_password'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - ~/your/volume/path:/var/lib/mysql

为什么这行得通?解释是什么?请通过 editing (changing) your answer 回复,而不是在评论中(没有“编辑:”、“更新:”或类似内容 - 答案应该看起来好像是今天写的)。
P
Peter Mortensen

在尝试了以下答案后:

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('root');

和类似的答案,我的终端仍然向我抛出以下错误:

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在附近使用的正确语法...

所以在网上研究之后,这行解决了我的问题,让我更改root用户密码:

sudo mysqladmin --user=root password "[your password]"

J
Jim Carnicelli

要检查的一件事是来自主机的过滤器。默认情况下它可能是“localhost”。您是否尝试从远程客户端连接?将此更改为“%”。

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


P
Peter Mortensen

“-p”参数不希望参数名称和值之间有空格。

代替

./mysqladmin -u root -p 'redacted'

利用

./mysqladmin -u root -p'redacted'

要不就

./mysqladmin -u root -p

这将提示您输入密码。


P
Peter Mortensen

解决方法:放弃!

听我说。我花了大约整整两天的时间试图让 MySQL 工作无济于事,总是遇到权限错误,这些问题的答案都没有解决。到了这样的地步,我想如果我继续下去,我会发疯的。

出于让它工作的耐心,我发送了安装 SQLite 的命令,只使用了 450 KB,它从一开始就完美运行。

如果您没有圣人的耐心,请使用 SQLite 并为自己节省大量时间、精力、痛苦和存储空间..!