鱼C论坛

 找回密码
 立即注册
查看: 456|回复: 5

[已解决]显示错误:未知sha

[复制链接]
发表于 2023-5-18 22:34:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在MySQL Workbench或命令行环境下,创建一个允许在任意主机登录的用户,用户名为admin,密码为admin123,使用sha策略加密。

CREATE USER IF NOT EXISTS 'admin'@'%'
IDENTIFIED BY 'admin123';
WITH sha


这个sha策略加密的语句是怎么样的?课本上没有写到,上来求助一下,谢谢!
最佳答案
2023-5-18 22:46:29
在MySQL中,你不能直接使用"WITH sha"这样的语法来指定密码散列方法。但从MySQL 5.7.6开始,你可以通过使用 ALTER USER 语句来更改现有用户的密码散列方法。

以下是一个示例,它创建一个名为"admin"的用户,然后更改其密码并设置所使用的散列方法为SHA-256:

  1. CREATE USER IF NOT EXISTS 'admin'@'%'
  2. IDENTIFIED WITH mysql_native_password BY 'admin123';

  3. ALTER USER 'admin'@'%' IDENTIFIED WITH 'sha256_password' BY 'admin123';
复制代码


这样,'admin'用户的密码就会使用SHA-256散列方法进行加密了。不过需要注意的是,如果你使用的是MySQL 8.0或以上的版本,'sha256_password'这个插件可能需要在服务器端启用。

如果你的MySQL服务器配置了SSL,你也可以使用 'caching_sha2_password' 这个更安全的密码插件:

  1. CREATE USER IF NOT EXISTS 'admin'@'%'
  2. IDENTIFIED WITH mysql_native_password BY 'admin123';

  3. ALTER USER 'admin'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'admin123';
复制代码


使用 'caching_sha2_password' 插件需要MySQL服务器开启SSL支持,否则客户端可能无法连接。如果你的MySQL服务器配置没有启用SSL,可能需要更改服务器配置或者继续使用 'sha256_password' 插件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-18 22:44:39 | 显示全部楼层
在 MySQL 中,使用 sha1 函数来进行 SHA1 加密。你可以按照以下的语句创建一个允许在任意主机登录的用户,用户名为admin,密码为admin123,使用SHA1策略加密:

  1. CREATE USER IF NOT EXISTS 'admin'@'%'
  2. IDENTIFIED WITH sha1_password BY 'admin123';
复制代码

请注意,在 MySQL 8.0 版本中,sha1_password 是默认的密码插件。如果你的 MySQL 版本较旧,可能需要先启用此插件。可以使用以下语句手动启用:

  1. INSTALL PLUGIN sha1_password SONAME 'auth_sha1_password.so';
复制代码

另外,如果你要限制用户只能从特定的主机登录,可以将 % 替换为对应的主机 IP 或主机名。例如:

  1. CREATE USER IF NOT EXISTS 'admin'@'localhost'
  2. IDENTIFIED WITH sha1_password BY 'admin123';
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-18 22:46:29 | 显示全部楼层    本楼为最佳答案   
在MySQL中,你不能直接使用"WITH sha"这样的语法来指定密码散列方法。但从MySQL 5.7.6开始,你可以通过使用 ALTER USER 语句来更改现有用户的密码散列方法。

以下是一个示例,它创建一个名为"admin"的用户,然后更改其密码并设置所使用的散列方法为SHA-256:

  1. CREATE USER IF NOT EXISTS 'admin'@'%'
  2. IDENTIFIED WITH mysql_native_password BY 'admin123';

  3. ALTER USER 'admin'@'%' IDENTIFIED WITH 'sha256_password' BY 'admin123';
复制代码


这样,'admin'用户的密码就会使用SHA-256散列方法进行加密了。不过需要注意的是,如果你使用的是MySQL 8.0或以上的版本,'sha256_password'这个插件可能需要在服务器端启用。

如果你的MySQL服务器配置了SSL,你也可以使用 'caching_sha2_password' 这个更安全的密码插件:

  1. CREATE USER IF NOT EXISTS 'admin'@'%'
  2. IDENTIFIED WITH mysql_native_password BY 'admin123';

  3. ALTER USER 'admin'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'admin123';
复制代码


使用 'caching_sha2_password' 插件需要MySQL服务器开启SSL支持,否则客户端可能无法连接。如果你的MySQL服务器配置没有启用SSL,可能需要更改服务器配置或者继续使用 'sha256_password' 插件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-18 22:59:56 | 显示全部楼层
isdkz 发表于 2023-5-18 22:46
在MySQL中,你不能直接使用"WITH sha"这样的语法来指定密码散列方法。但从MySQL 5.7.6开始,你可以通过使用 ...




@小甲鱼 现在注销我吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-18 23:44:47 | 显示全部楼层
isdkz 发表于 2023-5-18 22:46
在MySQL中,你不能直接使用"WITH sha"这样的语法来指定密码散列方法。但从MySQL 5.7.6开始,你可以通过使用 ...

CREATE USER IF NOT EXISTS 'admin'@'%'

IDENTIFIED WITH mysql_native_password BY 'admin123';
ALTER USER 'admin'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'admin123';
(这两行都是sha加密策略吗?能不能两行写成一行:
IDENTIFIED WITH 'caching_sha2_password' BY 'admin123';)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-19 00:04:45 | 显示全部楼层
黑脸艺术家 发表于 2023-5-18 23:44
CREATE USER IF NOT EXISTS 'admin'@'%'

IDENTIFIED WITH mysql_native_password BY 'admin123';

对的,你完全可以在创建用户的同时指定 caching_sha2_password 身份验证插件。你可以把这两个语句合并成一个,如下:

  1. CREATE USER IF NOT EXISTS 'admin'@'%' IDENTIFIED WITH caching_sha2_password BY 'admin123';
复制代码


这条语句将创建一个新的用户 "admin",并使用 caching_sha2_password 插件对密码进行SHA-256散列。

这种方法更为简洁,但请注意,使用 caching_sha2_password 需要你的MySQL服务器支持SSL,否则某些客户端可能无法连接。如果你的MySQL服务器不支持SSL,你可能需要继续使用 sha256_password 或 mysql_native_password 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 13:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表