前言
👨💻👨🌾📝记录学习成果,以便温故而知新
作为内部系统的数据库MySQL8与5.7比没有发现有明显的优越性,引入异常还一堆。本篇记录这些常见问题,以后发现随时补充。
1.修改密码
(1)修改密码语句
ALTER mysql.USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
MySQL 8.0.13默认的密码是有强度要求,这点有时就比较麻烦。
(2)查看 mysql 初始的密码策略
SHOW VARIABLES LIKE 'validate_password%';
1)validate_password_length 固定密码的总长度;
2)validate_password_dictionary_file 指定密码验证的文件路径;
3)validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;
(3)修改策略如下
set global validate_password.mixed_case_count =0;
2.password() 函数
password函数被删除了,5.7文档如此写到
This function is deprecated in MySQL 5.7 and is removed in MySQL 8.0.
文档: https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_password
似乎mysql_native_password认证方式还是使用的password函数计算的。
某网友文章写到“password() 函数的算法是:upper(sha1(unhex(sha1(‘abc’))))”,试了一下,还真是
3.老版本Navicat中文乱码
老版本Navicat修改表注释,中文乱码,换成了Navicat 16,乱码问题解决,功能也增加了,但是感觉没有老版本看上去简洁