Top

MySQL 8.0.16 Windows 10 下安装教程

MySQL MySQL  浏览 评论

环境:MySQL 8.0.16 x64     MySQL-8.0 


一、在MySQL8根目录下,新建my.ini文件,内容如下:

[mysqld]

port = 3316


# 允许最大连接数

max_connections = 5


# 允许连接失败的次数。

max_connect_errors = 3


# 服务端使用的字符集默认为utf8mb4

character-set-server = utf8mb4

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证密码

default_authentication_plugin=mysql_native_password


# basedir 是数据库的根目录

basedir = C:\Users\monkz\AppData\Local\mysql-8.0.16-winx64

# datadir 是数据库的数据目录,建议单独放在一个目录中

datadir = E:\Users\MySQL8_Data


# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M


sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 


performance_schema_max_table_instances = 600

table_definition_cache = 400

table_open_cache = 256

[mysql]

default-character-set = utf8mb4

[client]

default-character-set = utf8mb4


二、CMD进入MySQL目录下的bin目录,输入命令 mysqld --initialize --console 进行初始化操作:

  1. mysql-8.0.16-winx64\bin>mysqld --initialize --console 

  2. 回车后会输出如下内容:Y)breWqeh6(s是密码一定要记住,出现completed初始化完成;

  3. 2019-05-14T02:28:10.883977Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
    2019-05-14T02:28:10.884233Z 0 [System] [MY-013169] [Server] C:\Users\monkz\AppData\Local\mysql-8.0.16-winx64\bin\mysqld.exe (mysqld 8.0.16) initializing of server in progress as process 10308
    2019-05-14T02:28:46.638784Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Y)breWqeh6(s
    2019-05-14T02:28:59.212147Z 0 [System] [MY-013170] [Server] C:\Users\monkz\AppData\Local\mysql-8.0.16-winx64\bin\mysqld.exe (mysqld 8.0.16) initializing of server has completed


三、如果需要自动启动,还需要初始化服务;

  1. CMD进入MySQL目录下的bin目录,输入命令 mysqld --install mysql8 进行初始化操作:

  2. 其中mysql8是服务名称,默认是mysql,如果不需要修改,直接mysqld --install也行;

  3. \mysql-8.0.16-winx64\bin>mysqld --install mysql8
    Service successfully installed.


四、输入net start mysql8启动服务;

  1. \mysql-8.0.16-winx64\bin>net start mysql8 
    mysql8 服务正在启动 .....
    mysql8 服务已经启动成功。





MySQL 8.0.16 有哪些新特性。


账号管理 

  1. 具有 DROP ROLE 权限的用户只能删除被锁定的账户,而不能删除未锁定的账号。

  2. 引入 System users 概念。具有 SYSTEM_USER 权限的用户,区别于普通用户(没有 SYSTEM_USER 权限的用户)。普通用户只能维护普通用户的账号,不能维护 System users 的账号。

  3. 之前的版本中,赋权限的时候没有方法排除指定的 schema 的访问权限,比如赋予用户除了 mysql 之外的所有数据库的访问权限。新版本中可以通过开启参数 partial_revokes。来实现上述功能。

  1. SET PERSIST partial_revokes = ON;

  2. GRANT SELECT, INSERT ON . TO u1;

  3. REVOKE SELECT, INSERT ON mysql.* FROM u1; 


字符集

  1. 支持中文字符校验字符集 utf8mb4_zh_0900_as_cs。


移除的功能特性

  1. 在新版本中,临时表的存储引擎默认使用 innodb,故 internal_tmp_disk_storage_engine 已经被移除。


功能改进和修改

  1. explain 增加 FORMAT=TREE 的选项。帮助我们理解 sql 执行计划的执行过程。

  {EXPLAIN | DESCRIBE | DESC}

    tbl_name [col_name | wild]

  {EXPLAIN | DESCRIBE | DESC}

    [explain_type]

    {explainable_stmt | FOR CONNECTION connection_id}

   explain_type: {

    FORMAT = TRADITIONAL| JSON| TREE

   }

   explainable_stmt: { SELECT statement | DELETE statement | INSERT statement | REPLACE statement | UPDATE statement }


增加一个 api 内部调用的接口用于监控脏页的变化 


MySQL 将执行以下场景的 where 条件做对比的步骤从执行阶段提前到优化阶段。 

1.当常量和某个字段作比较,且常量的值大于该字段类型的最大值,比如 a 是 tinyint ,

select * from t where a<256

会被直接转换为

select * from t where ture;


2.和 null 作比较也被优化。如果 a 字段是可以为 null 的, SELECT * FROM t WHERE a IS NOT NULL.

目前还不支持 between 和 and。


MGR 增加参数 group_replication_autorejoin_tries 控制节点加入集群的次数,超过指定次数则加入失败。默认值为0,也就是说 MRG 成员不主动尝试加入集群。 对于网络不太稳定的基础环境,启用该参数可以减少人肉运维操作,提高'幸福感'。


之前的版本中,MGR 成员相互传递大量信息可能会导致部分节点接收失败并且从集群中移除。因为接受大量消息会导致接收消息的线程被 group communication engine (XCom, a Paxos variant) 占用很长时间,其他节点会认为该节点无法响应。8.0.16 版本通过参数 group_replication_communication_max_message_size 支持将超过指定大小消息拆分为多组消息。


编译须知 

MySQL 8.0 对编译的工具有比较新的版本需求,比如要求

  • GCC 5.3 版本 

  • 在 EL6  and  EL7 使用 devtoolset- 8 而非 devtoolset- 7 

  • Boost  library 最低版本是 1.69 . 0