ERROR 1064 (42000):您的 SQL 语法有错误;想要将密码配置为 root 作为用户

Posted

技术标签:

【中文标题】ERROR 1064 (42000):您的 SQL 语法有错误;想要将密码配置为 root 作为用户【英文标题】:ERROR 1064 (42000): You have an error in your SQL syntax; Want to configure a password as root being the user 【发布时间】:2016-07-06 01:44:11 【问题描述】:

我刚刚下载了 WAMP。我想使用 mysql 控制台为 MySQL root 用户配置密码。之前没有设置密码。

以下是输入

    mysql-> use mysql
    Database changed
    mysql-> UPDATE user
         -> SET Password=PASSWORD<'elephant7'>
         -> WHERE user='root';

ERROR 1064 (42000):您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在第 3 行的 'WHERE user='root'' 附近使用的语法

【问题讨论】:

hsnyc.co/… 那么 Windows 和旧的 MySQL?您没有提及您使用的是什么版本的 MySQL 也没有操作系统。因此所有的答案都是:“试试这个..”你应该总是发布你的详细信息。投反对票。 【参考方案1】:

我使用的是 MySQL 8,但以上都不适合我。

这是我必须做的:

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

【讨论】:

这对我有用:mysql ver 8.0.16 for osx10.14 on x86_64 (Homebrew)。更新查询导致语法错误。 是的...仅适用于:mysql ver 8.0.16 for mac install with homebrew 这是唯一对我有用的东西一直在谷歌搜索!! 此查询对我有用,但新密码无效。在我重新创建 root 用户 askubuntu.com/a/784347/160368 后它才开始工作。 也许您需要在此查询后flush privileges 才能使用新密码。您可以尝试更新吗?如果答案有帮助,请点赞:)【参考方案2】:

你可以使用:

SET PASSWORD FOR 'root' = PASSWORD('elephant7');

或者,在最新版本中:

SET PASSWORD FOR root = 'elephant7' 

你也可以使用:

UPDATE user SET password=password('elephant7') WHERE user='root';

但在 Mysql 5.7 中,字段密码不再存在,您必须使用:

UPDATE user SET authentication_string=password('elephant7') WHERE user='root';

问候

【讨论】:

非常感谢,最后一个对我有用。当我写与您相同的行时,它不起作用,但是在复制和粘贴您的行时它起作用了。我确信在这两种情况下语法或大小写没有区别。 很高兴知道!友善并投票/接受答案。问候 UPDATE ... SET 是我的票。我正在使用 MariaDB 10.2。 你需要flush privileges,否则任何更改都不会生效。 最后两个都导致了我的语法错误。前两个无法执行,因为我使用了 --skip-grant-tables 选项。版本 8.0.21-0ubuntu0.20.04.4【参考方案3】:

在 MySQL 8.0.15(也可能比这更早)上,PASSWORD() 函数不再起作用,所以你必须这样做:

确保您首先停止了 MySQL(转到:“系统偏好设置”>>“MySQL”并停止 MySQL)。

在具有权限绕过的安全模式下运行服务器:

sudo mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

然后

mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

最后,再次启动 MySQL。

@OlatunjiYso 在此GitHub issue 中受到启发。

【讨论】:

mysqld_safe UNIX 套接字文件的 '/var/run/mysqld' 目录不存在。 @NativeCoder 这可能会有所帮助:***.com/questions/42153059/… 我的解决方案是以 root 用户身份运行 mysqld_safe。然后执行版本 8 样式查询 上述步骤对我有用。我尝试了许多不同的方法,但只有上述方法对我有用:Mac OS 11, 8.0.26 (MySQL Community Server - GPL) 在我的情况下,运行在 Windows 10 64 位系统中的 Ubuntu 是运行 Mysql 8 所必需的mysql_native_password" 其中用户='root' ``` 。我在这里找到了这个解决方法:***.com/questions/37879448/…【参考方案4】:

这是唯一对我有用的命令。 (我从 M 8.0 文档中得到它)

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

【讨论】:

ERROR 1290 (HY000): MySQL 服务器使用 --skip-grant-tables 选项运行,因此无法执行此语句【参考方案5】:

我也有设置密码的问题。并在以下位置找到答案 official site

SET PASSWORD FOR 'root'@'localhost' = 'your_password';

【讨论】:

MySQL 服务器使用 --skip-grant-tables 选项运行,因此无法执行此语句【参考方案6】:

试试这个。这可能会有所帮助:

mysql> UPDATE mysql.user SET Password = PASSWORD('pwd') WHERE User='root';

希望对你有帮助。

【讨论】:

【参考方案7】:

如果你有ERROR 1064 (42000) or ERROR 1046 (3D000): No database selected in Mysql 5.7,你必须指定用户表的位置,位置是mysql.table_name 那么代码就可以了。

sudo mysql -u root -p

UPDATE mysql.user SET authentication_string=password('elephant7') WHERE user='root';

【讨论】:

有必要flush privileges,许多回答者都错过了。谢谢塞尔吉奥【参考方案8】:

试试这个:

UPDATE mysql.user SET password=password("elephant7") where user="root"

【讨论】:

查询正常,0 行受影响(0.00 秒)匹配行:3 更改:0 警告:0【参考方案9】:

来自mysql文档版本:8.0.18:

创建了一个超级用户帐户'root'@'localhost'。设置并存储超级用户的密码 在错误日志文件中。要显示它,请使用以下命令: shell&gt; sudo grep 'temporary password' /var/log/mysqld.log 使用生成的临时密码登录,尽快更改 root 密码 并为超级用户帐户设置自定义密码:

shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

【讨论】:

这仅适用于centos。不适用于 ubuntu 口味。 我不这么认为,这是一条SQL命令,实际上我是在Windows 7上运行的 我试过了。至少不适用于 MySql Server 8.x Ubuntu 19.10。 不管它是否适合你,SQL 就是 SQL。它与操作系统无关。 @hiclas 是对的。【参考方案10】:

在使用 mysql 8.0 + 版本时,在使用 --skip-grant-tables 选项启动 mysql 守护程序后使用以下语法更新 root 密码

UPDATE user SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your_new_password')

【讨论】:

我正在使用 --skip-grant-tables 运行版本 8.0.21。这会引发语法错误。【参考方案11】:
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'my-password-here';

尝试一次,它对我有用。

【讨论】:

【参考方案12】:

这对我来说非常有效。

mysql> 使用mysql; mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'my-password-here';

【讨论】:

【参考方案13】:

经过数小时的反复试验,以下命令(在 found here 之后修改)对我的 Ubuntu 的 WSL 安装有效:

sudo service mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
UPDATE mysql.user SET authentication_string=null WHERE User='root';
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password_here';
flush privileges;
exit;

【讨论】:

【参考方案14】:

对于基于Official Documentation的mysql 8.0.23

ALTER USER root@localhost SET ='New_Password';

适用于 Windows 10 环境。

【讨论】:

【参考方案15】:
    点击启动管理器。 选择 MySQL 并打开它。 编写以下代码并按回车键

为'root'设置密码 = PASSWORD('elephant7');

【讨论】:

以上是关于ERROR 1064 (42000):您的 SQL 语法有错误;想要将密码配置为 root 作为用户的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - LARAVEL

Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误

创建具有货币类型的表在 sql 中出现此错误:ERROR 1064 (42000) [重复]

Laravel 6 - SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 对应的手册

SQLSTATE [42000]:语法错误或访问冲突:1064 在进行迁移时,您的 SQL 语法有错误