mysql8.0新增用户及密码加密规则修改

MySQL8.0已经发布GA版,当前最新GA版本为8.0.12。虽然相对于之前版本,MySQL8.0没有加入新元素,但是,经过代码重构,MySQL8.0的优化器更加强大,同时也有一些新特性,如支持索引隐藏等。

但是,MySQL新版本中也有很多与先前版本不一样的地方,比如在用户创建上就有很多变化。

1. 用户创建

创建用户的操作已经不支持grant的同时创建用户的方式,需先创建用户再进行授权

mysql> grant all on *.* to ‘admin‘@‘%‘ identified by ‘admin123‘;
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 ‘admin123‘‘ at line 1
mysql> create user  ‘admin‘@‘%‘ identified by ‘admin123‘;
Query OK, 0 rows affected (0.06 sec)

mysql> grant all on *.* to ‘admin‘@‘%‘ ;
Query OK, 0 rows affected (0.04 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 2. 用户登录1

当用户密码含有字母或数字外的特殊符号登录时,原先使用双引号或单引号都可以登录,但在mysql8.0登录时遇到问题,如下

[[email protected] lib]# /usr/local/mysql8.0/bin/mysql -uroot -p"[email protected]#123" --socket=/data/mysql/mysql3310/tmp/mysql3310.sock
-bash: [email protected]#123": event not found
[[email protected] lib]# /usr/local/mysql8.0/bin/mysql -uroot -p‘[email protected]#123‘ --socket=/data/mysql/mysql3310/tmp/mysql3310.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.12 MySQL Community Server - GPL

3.低版本客户端登录异常

错误号码 2058:Plugin caching_sha2_password could not be loaded

出现这个原因是mysql8.0 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决此问题方法有两种,一种是升级客户端驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password。

如果修改用户密码加密规则可使用如下方式:

1). 修改加密方式:

-- 修改密码为用不过期
mysql> ALTER USER ‘root‘@‘%‘ IDENTIFIED BY ‘password‘ PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.02 sec)

-- 修改密码并指定加密规则为mysql_native_password
mysql> ALTER USER ‘root‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘123456‘;
Query OK, 0 rows affected (0.01 sec)

-- 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> 

修改完毕后再次登录即可成功

 

2).使用高版本客户端

linux低版本客户端登录时也会出现此情况,因此需使用高版本的客户端

[[email protected] lib]# mysql -uroot -p‘123456‘ --socket=/data/mysql/mysql3310/tmp/mysql3310.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password‘ cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
[[email protected] lib]# /usr/local/mysql8.0/bin/mysql -uroot -p‘123456‘ --socket=/data/mysql/mysql3310/tmp/mysql3310.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 8.0.12 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

除了密码插件调整外,MySQL8.0其他几个主要的新密码策略有:

  • 支持密码过期策略,需要周期性修改密码
  • 增加历史密码校验机制,防止近几次的密码相同(次数可以配置)
  • 修改密码是需要验证旧密码,防止被篡改风险
  • 支持双密码机制,即新密码与修改前的旧密码同时可以使用,且可以选择采用主密码还是第二个密码
  • 增加密码强度约束,避免使用弱密码

耿小厨已开通个人微信公众号,想进一步沟通或想了解其他文章的同学可以关注我

原文地址:https://www.cnblogs.com/huakai201/p/11470565.html

时间: 2024-12-12 13:42:23

mysql8.0新增用户及密码加密规则修改的相关文章

MySQL8.0新增配置参数详解

MySQL8.0新增或改进了数据字典.原子DDL.安全和账户.资源管理.InnoDB增强.字符集支持.JSON增强.字段类型支持.优化器.通用表达式.窗口函数.正则表达式支持.内部临时表.日志.备份锁等特性,MySQL本身是一个配置比较多比较复杂的数据库,那么新的版本中有哪些参数项是新增的用来控制这些新特性的使用那?接下来我们对新增的配置项进行逐一分析.? activate_all_roles_on_login此参数在版本8.0.2引入,是一个可以动态调整的global级参数,默认值为OFF.此

mysql 中用户默认密码加密问题

问题描述: 在mysql中 user表中新增用户默认密码为123456,但是在数据库中显示不能为明文,而mysql的默认字段不能用函数 解决方法: 用触发器 delimiter | drop trigger if exists default_user_pwd;create trigger default_user_pwd before insert on user  for each row if (new.pwd is null or new.pwd ='' or new.pwd ='123

用户登录密码加密

用户登录密码加密 用Windows自带的MD5,一般来说就差不多了 public String makeMD5(String password) { MessageDigest md;    try {     // 生成一个MD5加密计算摘要     md = MessageDigest.getInstance("MD5");     // 计算md5函数     md.update(password.getBytes());     // digest()最后确定返回md5 has

extmail 密码加密方式修改为plain-md5的方法

extmail默认密码加密方式是md5crypt,但是有些时候会遇到这样的问题--老的邮件系统中的用户密码是md5加密的. 此时需要将extmail的密码加密方式修改为md5,通过官方解释(md5和md5crypt没有区别),修改为plain-md5即可.但是,这只解决了web登陆的验证问题,没有解决smtp以及pop3的验证问题. 通过 http://www.extmail.org/forum/viewthread.php?tid=3175 帖子解决了验证问题,内容摘录如下: courier-

Mac brew安装MySQL8.0.18后忘记密码(重置密码篇)

前要:MySQL8后密码要求很高,要有大小写字母和数字特殊字符,导致自己忘记以前配置的密码 一.跳过mysql的密码认证,修改配置文件my.cnf $ ls /usr/local/etc/my.cnf /usr/local/etc/my.cnf # 修改配置文件, 添加 skip-grant-tables $ cat /usr/local/etc/my.cnf # Default Homebrew MySQL server config [mysqld] # Only allow connect

MySQL root用户忘记密码解决方案(安全模式,修改密码的三种方式)

1.关闭正在运行的MySQL 2.启动MySQL的安全模式,命令如下: mysqld --skip-grant-tables or mysqld-nd --skip-grant-tables 3.使用root用户[免密码]登陆MySQL mysql -u root -p 输入密码时,直接回车 4.选择MySQL系统库 use mysql 5.查看当前系统用户root的密码 select user,host,password from user where user="root" 查看的

linux如何通过脚本来修改用户的密码?脚本自动化修改用户密码?

需求描述: linux环境中在创建用户的时候,涉及到修改用户的密码,一般是通过passwd命令进行修改,需要多次的确认,这里考虑通过一条命令直接对密码进行修改 不需要进行交互的方式.在此记录. 操作过程: 1.通过echo命令结合passwd命令来实现 [[email protected] ~]# echo "mytest" | passwd --stdin mytest Changing password for user mytest. passwd: all authentica

OA项目13:系统模块之用户管理密码加密等

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 上节遗留了一个错误,在用户管理list.jsp页面显示岗位时这句<s:iterator value="#roles">是无法将岗位显示的,必须将#去掉便OK了. 二 密码MD5加密: 引入包:commons-codec.jar 在userAction中涉及到密码的add()方法和initPassword()方法中将设置密码的代码改

利用WordPress用户密码算法规则修改用户密码

WordPress用户密码保存在wp_users数据表的user_pass字段,密码是通过Portable PHP password hashing framework类产生的, 密码的形式是随机且不可逆,同一个明文的密码在不同时间,产生的密文也不一样,相对来说较为安全. WordPress用户密码产生的过程是:当需要生成用户密码的时候,随机产生了一个salt,然后将salt和password相加,又进行了count次md5,最后和encode64的hash数值累加,就得到了一个以$P$开头的密