黑脸艺术家 发表于 2023-5-18 22:34:47

显示错误:未知sha

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

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


这个sha策略加密的语句是怎么样的?课本上没有写到,上来求助一下,谢谢!

歌者文明清理员 发表于 2023-5-18 22:44:39

在 MySQL 中,使用 sha1 函数来进行 SHA1 加密。你可以按照以下的语句创建一个允许在任意主机登录的用户,用户名为admin,密码为admin123,使用SHA1策略加密:

CREATE USER IF NOT EXISTS 'admin'@'%'
IDENTIFIED WITH sha1_password BY 'admin123';
请注意,在 MySQL 8.0 版本中,sha1_password 是默认的密码插件。如果你的 MySQL 版本较旧,可能需要先启用此插件。可以使用以下语句手动启用:

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

CREATE USER IF NOT EXISTS 'admin'@'localhost'
IDENTIFIED WITH sha1_password BY 'admin123';

isdkz 发表于 2023-5-18 22:46:29

在MySQL中,你不能直接使用"WITH sha"这样的语法来指定密码散列方法。但从MySQL 5.7.6开始,你可以通过使用 ALTER USER 语句来更改现有用户的密码散列方法。

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

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

ALTER USER 'admin'@'%' IDENTIFIED WITH 'sha256_password' BY 'admin123';


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

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

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

ALTER USER 'admin'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'admin123';


使用 'caching_sha2_password' 插件需要MySQL服务器开启SSL支持,否则客户端可能无法连接。如果你的MySQL服务器配置没有启用SSL,可能需要更改服务器配置或者继续使用 'sha256_password' 插件。

歌者文明清理员 发表于 2023-5-18 22:59:56

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

{:10_244:}

@小甲鱼 现在注销我吧

黑脸艺术家 发表于 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';)

isdkz 发表于 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 身份验证插件。你可以把这两个语句合并成一个,如下:

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 。
页: [1]
查看完整版本: 显示错误:未知sha