MYSQL 8 安装中遇到的一些问题及汇总_用户名

MYSQL的安装中遇到一些问题,这里的汇总一下,看看越来越强大的MYSQL 8  在安装中和MYSQL 5.7 有什么不大一样的地方。


1 在SQL_MODE的地方添加

ONLY_FULL_GROUP_BY, 这个一直是被其他数据库DBER诟病的地方,在之前MYSQL 的GROUP BY 经常因为不严谨,而被吐槽,添加这个参数后,MYSQL的GROUP BY 和其他数据库的 GROUP BY 的方式会一致,不严谨的写法将被禁止。(不严谨的写法就是,写GROUP BY 语句的 select 列和 group by 中的列不一致)。


2 以下配置就不要在MY.CNF中存在,因为MYSQL 8 的格式统一为barracuda


innodb_file_format = Barracuda

innodb_file_format_max = Barracuda


3 expire_logs_day 将在未来的版本中被消灭,取代他的是binlog_expire_logs_seconds=432000  来代替,这里可以尝试把天换算成秒


4  Undo table space 的设置不在设置中,MYSQL 会自动默认进行设置2 个undo 空间,如果还有问题,需要自己去创建undo table space


5 原来的密码插件,被MYSQL8.0 变为密码组件,首先在原来的my.cnf中药去掉如下设置

#disconnect_on_expired_password=disable

#default_password_lifetime=0

#validate_password_policy=LOW #STRONG

#validate-password=FORCE_PLUS_PERMANENT

以及在开始启动时加载的  validate_password.so

官方文档,中解释道 通过 yum 或 rpm方式安装的MYSQL 都包括了 component_validata_password 的组件。

如果是通过其他方式,(这里是通过percona 二进制方式安装的),在进入到MYSQL后直接键入

INSTALL COMPONENT 'file://component_validate_password';

MYSQL 8 安装中遇到的一些问题及汇总_大小写_02


MYSQL 8 安装中遇到的一些问题及汇总_大小写_03


validate_password.check_user_name 是对密码中是否包含用户名进行比对,默认是打开的,如果密码中包含用户的名字则密码生成会错误。

validate_password.mixed_case_count 是对密码中的用户名进行判断是否有大小写的设置,0 是不需要混合,1 是默认需要进行大小写混合

validate_password.policy= low  这是对密码的复杂度进行的要求,low 是要求密码的长度, MEDIUM 是要求大小写,数字和密码成都, STRONG 是除了上述的要求外,还要想字典文件中的内容。

 

最后MYSQL在MYSQL8 中加入了 connection-control plugin ,这个插件的主要作用在于对于原来没有对服务器进行连接管理的内容补充,意在对服务器不断的尝试性访问失败后,如何处理这些不断进行的连接。

可以在配置文件加入以下内容


connection-control=FORCE_PLUS_PERMANENT

connection-control-failed-login-attempts=FORCE_PLUS_PERMANENT

connection_control_failed_connections_threshold=4

connection_control_min_connection_delay=1500


并在此之前安装好插件

​plugin-load-add=connection_control.so​​​​并在MYSQL 中执行命令​

INSTALL PLUGIN CONNECTION_CONTROL
SONAME 'connection_control.so';
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS
SONAME 'connection_control.so';


在设置好后,通过
connection_control_failed_connections_threshold来继续判断客户端尝试多少次连接失败的情况下
connection_control_min_connection_delay=1500 单位是毫秒


这有效的弥补了之前MYSQL 在这方面的缺陷,更加保证了连接的安全性和如何弥补攻击性的连接的处理方式


除此以外还有一些默认值的改变


1 max_allow_packet 从原来的 4MB 变为 64MB

2 table_open_cache 从原来的 2000 变为 4000

3 log_error_verbosity 从原来的notes 变为 warnings

4 innodb_flush_neighbors 从原来的 1 变为 0

5 innodb_max_dirty-pages_pct 从原来的 75% 到 90%

6 transaction-write-set-extraction 从原来的off变为 XXHASH64

7 Slave_rows_search_algorithms 从原来的 index_scan, table scan 变为 index_scan hash_scan

8 event_scheduler 从原来的 0 变为 1


说完这些,我想大家应该能对MYSQL 5.7 和 8.0 在设计上的变化有一定想法了

从5.7 到 8 的速度不会太慢(已经有一年多的时间了,percona 也有半年的时间了),还得加快速度学习。