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> 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 对应的手册