#进入容器:env LANG=C.UTF-8 避免容器中显示中文乱码
docker exec -it atguigu-mysql-master env LANG=C.UTF-8 /bin/bash
#进入容器内的mysql命令行
mysql -uroot -p
#修改默认密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

这段命令序列用于进入一个运行中的 Docker 容器,并在其中执行一些 MySQL 相关的操作。下面是每个步骤的详细解释:

进入容器并设置语言环境
# 进入容器:env LANG=C.UTF-8 避免容器中显示中文乱码
docker exec -it atguigu-mysql-master env LANG=C.UTF-8 /bin/bash
  • 1.
  • 2.
  1. docker exec: 这个命令用于在已运行的容器内执行命令。
  2. -it: -i 表示使容器的标准输入保持打开状态;-t 表示为容器分配一个伪TTY。
  3. atguigu-mysql-master: 这是你要进入的容器的名字或者ID。
  4. env LANG=C.UTF-8: 这个命令设置环境变量 LANGC.UTF-8。这会告诉容器内的程序使用 UTF-8 编码,这样可以避免在容器内显示中文时出现乱码问题。
  5. /bin/bash: 这是在容器内启动的命令,即打开一个 Bash shell。
进入 MySQL 命令行
# 进入容器内的mysql命令行
mysql -uroot -p
  • 1.
  • 2.
  1. mysql: 这是 MySQL 的客户端命令,用于连接 MySQL 服务器。
  2. -u root: 指定以 root 用户身份登录。
  3. -p: 提示输入密码。这会在终端中提示用户输入密码。
修改默认密码校验方式
# 修改默认密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 1.
  • 2.
  1. ALTER USER: 用于修改用户的属性。
  2. 'root'@'%': 指定要修改的用户。这里的 % 表示允许 root 用户从任意主机登录。
  3. IDENTIFIED WITH mysql_native_password BY '123456': 这里设置了 root 用户的身份验证方式为 mysql_native_password 并设置密码为 '123456'
总结

这段命令序列首先通过 docker exec 进入名为 atguigu-mysql-master 的容器,并设置环境变量 LANGC.UTF-8 以避免中文乱码问题。接着,通过 mysql 命令以 root 用户身份登录到 MySQL 服务器。最后,使用 ALTER USER 命令修改 root 用户的密码,并指定使用 mysql_native_password 身份验证插件。

关于mysql_native_password

mysql_native_password 是 MySQL 中的一种身份验证插件,用于处理用户登录时的密码验证。它是 MySQL 最常用的身份验证方法之一,并且在大多数 MySQL 版本中默认启用。

插件概述
  • mysql_native_password
  • 插件工作原理:
  • 当用户设置密码时,MySQL 会使用 SHA-1 算法对密码进行散列,并将散列后的结果存储在 mysql.user 表中。
  • 当用户尝试登录时,MySQL 会对提供的密码再次使用相同的散列算法,并将结果与存储在 mysql.user 表中的散列值进行比较,以验证密码是否正确。
使用示例

如果你想修改某个用户的密码验证方式为 mysql_native_password,你可以使用以下 SQL 命令:

ALTER USER 'username'@'hostname' IDENTIFIED WITH mysql_native_password BY 'new_password';
  • 1.

这里:

  • 'username' 是你要修改的用户名。
  • 'hostname' 指定用户可以从哪个主机登录。通常使用 'localhost' 表示本地登录,'%' 表示允许从任何主机登录。
  • 'new_password' 是新的密码。
注意事项
  • 安全性:
  • 使用 mysql_native_password 插件时,虽然密码是以散列形式存储的,但 SHA-1 散列算法现在被认为不是最安全的选择。在 MySQL 8.0 中,引入了更强的身份验证插件 caching_sha2_password,它使用更安全的 SHA-2 散列算法。
  • 兼容性:
  • 如果你需要与旧版 MySQL 兼容,或者你正在使用不支持新插件的应用程序,那么 mysql_native_password 可能是一个合适的选择。
示例命令

假设你想要修改 root 用户的密码验证方式为 mysql_native_password 并设置密码为 '123456',可以使用如下命令:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 1.

请注意,设置简单密码如 '123456' 在生产环境中是不安全的。在实际应用中,你应该使用更复杂、更安全的密码。

总结

mysql_native_password 是 MySQL 中的一种身份验证插件,用于处理密码的散列和验证。它使用 SHA-1 散列算法,是 MySQL 5.6 及更高版本中的默认身份验证插件。尽管它在某些情况下仍然有用,但对于最新的 MySQL 版本来说,推荐使用更安全的 caching_sha2_password 插件。