更新日期:2018-09-12
目前 8.0.12 版本有 bug, 无法在指定目录初始化数据文件, 请下载 8.0.11 版本.
MySql for Windows 5.7.7 之前的 zip 版中都会附带 Data 目录, 里面有 MySql 的初始数据库. 从 5.7.7 版本开始, 就没有这个目录了, 需要用命令初始化数据库.
-
下载 MySql 8
下载地址 http://dev.mysql.com/downloads/mysql/, 需要登录.
MySql 8 新功能 -
解压 zip 到需要的目录, 如 e:\mysql
-
创建 my.ini 文件到你指定的目录, 如 d:\MysqlDb\my.ini , 并配置 MySql 参数
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106[client]port=3306[mysql][mysqld]port=3306#默认密码插件,8.0默认使用caching_sha2_password,为兼容老版本,改用mysql_native_passworddefault_authentication_plugin=mysql_native_passwordbasedir=E:/Developer Tools/MySqldatadir=D:/MySqlDB/Datatmpdir=D:/MySqlDB/Tempsecure-file-priv=D:/MySqlDB/Uploadsgeneral-log=0general_log_file=D:/MySqlDB/mysql-general.logslow-query-log=1slow_query_log_file=D:/MySqlDB/mysql-slow.loglog-error=D:/MySqlDB/mysql-error.logserver-id=1max_connections=151table_open_cache=2000tmp_table_size=16Mthread_cache_size=10# *** INNODB Specific options ***# 事务日志刷新(fsync)到磁盘的行为,1每次提交都写到磁盘,0约每秒写一次,2每次都写,但速度约每秒一次innodb_flush_log_at_trx_commit=1# 日志数据缓冲,大了没有意义innodb_log_buffer_size=1M# 使用缓冲池来缓存索引和行数据innodb_buffer_pool_size=64M# 日志组中每个日志文件的大小。应该将日志文件的大小设置为 innodb_buffer_pool_size 的25%-100%,以避免日志文件覆盖时出现不必要的缓冲池刷新活动。innodb_log_file_size=48M# 内核允许的线程数, cpu核数*2+1innodb_thread_concurrency=9# 系统表空间文件变满时自动扩展的大小(in MB)innodb_autoextend_increment=32# 缓冲池划分的区域数量。 对于缓冲池在数GB范围内的系统,通过在不同线程读取和写入缓存页面时减少争用,将缓冲池划分为不同的实例可以提高并发性。innodb_buffer_pool_instances=8# 每个线程获得执行后的最大计数次数innodb_concurrency_tickets=5000# 指定插入到旧子列表中的块在移动到新子列表之前必须在其第一次访问后保留多长时间(以毫秒为单位)。innodb_old_blocks_time=1000# 一次可以保持打开的.ibd文件的最大数量,最小为10innodb_open_files=300# 启用时,InnoDB会在元数据语句中更新统计信息innodb_stats_on_metadata=0# 当启用时,InnoDB将每个新创建的表的数据和索引存储在单独的.ibd文件中,而不是存储在系统表空间中。innodb_file_per_table=1# 校验和算法,0表示crc32,1表示strict_crc32,1表示innodb,3表示strict_innodb,4表示无,5表示strict_none。innodb_checksum_algorithm=0# 表示在MySQL短暂停止回答新请求之前的这段短时间内可以堆叠多少个请求。back_log=80# 如果将其设置为非零值,则每flush_time关闭所有表以释放资源并将未刷新的数据同步到磁盘。flush_time=0# 用于普通索引扫描,范围索引扫描和不使用索引并因此执行全表扫描的连接的最小缓冲区大小。join_buffer_size=512K# 一个数据包或任何生成或中间字符串的最大大小max_allowed_packet=4M# 如果超过这个数量,来自主机的多个连续连接请求在没有成功连接的情况下被中断,则服务器阻止该主机执行进一步的连接。max_connect_errors=100# 打开文件数量,如遇到 "Too many open files" 错误,增大此值。open_files_limit=4161# 如果在SHOW GLOBAL STATUS输出中每秒看到多个sort_merge_passes,则可以考虑增加此值以加快ORDER BY或GROUP BY操作的速度,这些操作无法通过查询优化或索引编制得到改进。sort_buffer_size=512K# 可以存储在定义缓存中的表定义数(from .frm files)。与普通表缓存不同,表定义缓存占用更少的空间并且不使用文件描述符。 最小值和默认值都是400table_definition_cache=1400# 指定基于行的二进制日志事件的最大大小(以字节为单位)。 如果可能的话,行被分成小于这个尺寸的事件。 该值应该是256的倍数。binlog_row_event_max_size=8K# 如值大于0,将 master.info 文件同步到磁盘(在每个sync_master_info事件之后使用 fdatasync())sync_master_info=10000# 如值大于0,将其中继日志同步到磁盘(在每个sync_relay_log写入中继日志后使用 fdatasync())sync_relay_log=10000# 如值大于0,将 relay-log.info 文件同步到磁盘(在每个sync_relay_log_info事务之后使用 fdatasync())sync_relay_log_info=10000[mysqld-8.0]sql_mode=TRADITIONAL保存配置文件 , 然后按照配置文件里的设置创建目录
123D:\MySqlDb\DataD:\MySqlDb\TempD:\MySQLDb\Uploads -
以管理员权限运行 cmd, 并进入 e:\Mysql\bin 目录, 执行初始化命令, 创建数据库.
12cd /d e:\mysql\binmysqld --defaults-file=d:/mysqldb/my.ini --initialize-insecure --console–defaults-file 参数指定要使用的配置文件位置
–initialize-insecure 参数是 MySql 5.7.7 新加入的初始化数据库参数, 这个参数表示初始化数据库的同时创建一个不带密码的 root 用户.
–console 参数表示将日志输出到命令行界面 -
添加 Windows 服务, 以便自动运行 MySql.
以管理员权限运行 cmd, 并进入 e:\mysql\bin 目录, 执行以下命令.
1234567cd /d e:\mysql\binmysqld --install MYSQL8 --defaults-file=d:/mysqldb/my.ini#或者用sc命令创建新服务,这个方法可以解决用 mysqld --install 添加多个 mysql 实例时 mysqld 始终指向第一个mysql目录的问题sc create MYSQL8 binpath= "\"e:/mysql/bin/mysqld.exe\" --defaults-file=d:/mysqldb/my.ini MYSQL8" start= auto#修改描述内容sc description MYSQL8 "Mysql 8.0"创建名为 MYSQL8 的 Windows 服务
删除服务
1234cd /d e:\mysql\binmysqld --remove MYSQL8#或者sc delete MYSQL8 -
修改root用户权限,允许远程连接
1234567891011#在本地登录mysql, 提示输入密码直接回车mysql -u root -p#变更当前数据库为mysql库use mysql;#添加root用户,允许远程访问,设置密码为 rootcreate user 'root'@'%' identified by 'root';#赋予管理权限grant all privileges on *.* to 'root'@'%' with grant option;#如果是8.0之前的版本,使用下面的语句,它隐式创建 'root'@'%' 用户。grant all on *.* to root@'%' identified by "root"; -
Mysql 优化
由于 mysql 配置参数非常多,每个人的需求又不同,具体的优化请根据自身需求设置。官网的选项表及说明: 服务器命令选项(Server Command Options)
感谢教程
啊,第二次来了
谢谢! 这个教程很不错, 简洁, 有效.