Mysql-8 执行授权语句错误:ERROR 1064 (42000)

Mysql-8 执行授权语句错误:ERROR 1064 (42000)

今天在mysql执行授权语句

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'WITH GRANT OPTION;

时提示如下错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to use near 
'IDENTIFIED BY 'Tibco123'WITH GRANT OPTION' at line 1、

 

意识到版本问题后就百度mysql-8授权语句的语法,终于解决问题。

在Mysql 8版本中,不能使用 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'WITH GRANT OPTION;

这一行命令来设置用户权限,必须分两步来实现设置用户权限【先创建用户、在对该用户分配用户权限】,最后刷新权限

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

<think>嗯,用户遇到了一个MySQL命令执行错误,我需要仔细分析问题。首先看看错误信息。用户执行的命令是: [root@k8s-master01 ~]# mysql -uzzy -p5DKU7Yqke -e "select count(distinct license) from `ry-cloud`.hm_product_license;" 然后系统报错说“-bash: ry-cloud: command not found”,接着是MySQL的警告和语法错误。看起来有几个问题需要解决。 首先,注意到用户使用了反引号`ry-cloud`,在Linux的shell中反引号会被解释为命令替换,所以系统尝试执行ry-cloud这个命令,但找不到,所以报错。这应该是第一个错误的原因。用户的本意是引用数据库名,但反引号在shell中有特殊含义,导致被误解。 接下来,MySQL的语法错误是因为表名前面的数据库名部分没有被正确传递。当反引号被shell处理后,实际传给MySQL的命令可能变成了.hm_product_license,导致语法错误。因此,需要转义反引号或者改用其他引号。 另外,用户直接在命令行中使用密码,这会触发MySQL的警告,建议使用配置文件或者提示输入密码以提高安全性。不过这可能不是当前的主要问题,但可以提醒用户注意。 解决方法应该是将SQL语句中的反引号用单引号包裹整个查询,或者在反引号前加上反斜杠转义。例如,使用双引号包裹整个SQL语句时,内部的数据库名反引号需要用反斜杠转义,或者改用单引号包裹整个SQL语句,这样内部的`ry-cloud`就不会被shell解释。 还需要检查数据库和表名是否正确存在,用户是否有权限访问。如果问题仍然存在,可能需要进一步确认数据库名称和表的结构是否正确。 总结步骤应该是:处理反引号的转义问题,调整引号的使用方式,然后重新执行命令。同时提醒用户密码使用的安全注意事项,以及验证数据库和表的存在。</think>这里存在两个主要问题需要解决: ==================== 🛠️问题一:反引号被Shell解析 ---------------------------- 错误提示`-bash: ry-cloud: command not found`是由于反引号在Shell中被识别为命令替换符号。原命令中的数据库名`ry-cloud`需要用反引号包裹,但未正确转义。 ✅ 解决方案: ```bash # 使用单引号包裹SQL语句(推荐) mysql -uzzy -p5DKuI7Yqke -e 'SELECT COUNT(DISTINCT license) FROM `ry-cloud`.hm_product_license;' # 或使用反斜杠转义反引号 mysql -uzzy -p5DKuI7Yqke -e "SELECT COUNT(DISTINCT license) FROM \`ry-cloud\`.hm_product_license;" ``` ==================== 🛠️问题二:MySQL密码安全警告 ---------------------------- `Warning: Using a password on the command line interface can be insecure`是安全提示,建议改用以下方式: ✅ 解决方案: ```bash # 使用mysql_config_editor存储凭据 mysql_config_editor set --login-path=zy --user=zzy --host=localhost --password # 输入密码后安全连接 mysql --login-path=zy -e "YOUR_SQL_QUERY" ``` ==================== 💡 补充说明: 1️⃣ 如果仍然出现`ERROR 1146 (42S02)`,需要检查: - 数据库`ry-cloud`是否存在 - 用户`zzy`是否有权限访问该库 - 表`hm_product_license`是否存在 2️⃣ 可通过以下命令验证数据库列表: ```bash mysql -uzzy -p5DKuI7Yqke -e "SHOW DATABASES;" ``` 3️⃣ 建议使用MySQL 8.0+新版客户端消除警告: ```bash mysqlsh -uzzy -p5DKuI7Yqke --sql -e "SELECT ..." ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值