mysql 8.0学习
1.创建用户
GRANT ALL ON dbname.*(tablename) TO 'your_mysql_name'@'your_client_host';
2.mysql5.7升级到mysql8.0
首先,我们要大概了解下MySQL5.7和8.0有哪些不同,参考官方文档和其他网友文章,概括总结出MySQL8.0以下几点新特性:
默认字符集由latin1变为utf8mb4。
MyISAM系统表全部换成InnoDB表。
JSON特性增强。
支持不可见索引,支持直方图。
sql_mode参数默认值变化。
默认密码策略变更。
新增角色管理。
支持窗口函数,支持Hash join。
根据版本变化及官方升级教程,列举出以下几点注意事项: 1.注意字符集设置。为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。 2.密码认证插件变更。为了避免连接问题,可以仍采用5.7的mysql_native_password认证插件。 3.sql_mode支持问题。8.0版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。 4.是否需要手动升级系统表。在MySQL 8.0.16版本之前,需要手动的执行mysql_upgrade来完成该步骤的升级,在MySQL 8.0.16版本及之后是由mysqld来完成该步骤的升级。
5.myslq 5.7.11 or 更早的版本需要ALTER INSTANCE ROTATE INNODB MASTER KEY;表空间加密是5.7.11才有的特性所以得开启表空间加密
步骤
5.7.11升级到8.0.16之后
第一步
5.7软件上操作
SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
或者
SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
保证数据刷新到磁盘
mysqladmin -u root -p shutdown
关闭mysql
解压mysql8.0.20二进制包
修改mysql8.0参数
# 最后几个for8.0的参数要格外注意 [mysqld] user = mysql datadir = /data/mysql/data port = 3306 socket = /data/mysql/tmp/mysql.sock pid-file = /data/mysql/tmp/mysqld.pid tmpdir = /data/mysql/tmp skip_name_resolve = 1 max_connections = 2000 group_concat_max_len = 1024000 lower_case_table_names = 1 log_timestamps=SYSTEM max_allowed_packet = 32M binlog_cache_size = 4M sort_buffer_size = 2M read_buffer_size = 4M join_buffer_size = 4M tmp_table_size = 96M max_heap_table_size = 96M max_length_for_sort_data = 8096 default_time_zone = '+8:00' #logs server-id = 1003306 log-error = /data/mysql/logs/error.log slow_query_log = 1 slow_query_log_file = /data/mysql/logs/slow.log long_query_time = 3 log-bin = /data/mysql/logs/binlog binlog_format = row log_bin_trust_function_creators = 1 gtid_mode = ON enforce_gtid_consistency = ON #for8.0 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION character-set-server = utf8 collation_server = utf8_general_ci basedir = /usr/local/mysql8 skip_ssl default_authentication_plugin=mysql_native_password
执行升级程序
/usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
最后升级成功