1、下载链接:https://downloads.mysql.com/archives/community/
2、版本可按需选择:此处选择下载版本5.7.36

3、下载完成后解压到自己想要存放mysql的目录,我放到了D:\mysql5.7.36(文件夹的名字可更改,)
1、击计算机图标,找到属性-高级系统设置

2、添加环境变量,path,添加mysql路径

免安装的mysql数据库是不带配置文件my.ini的,需要自己创建一个my.ini文件。
有些参数注释了,根据自己的需求配置。
- [client]
-
- # 设置mysql客户端连接服务端时默认使用的端口
- port=3319
-
-
-
- [mysql]
-
- # 设置mysql客户端默认字符集
- default-character-set=utf8
-
-
-
- [mysqld]
-
- # mysql服务端默认监听(listen on)的TCP/IP端口
- port=3319
-
- # MySQL的安装路径
- basedir=D:\mysql5.7.36
-
- # MySQL数据文件的存储位置,也是数据表的存放位置
- datadir=D:\mysql5.7.36\data
-
- # 服务端默认的字符集,安装时一般选择utf-8
- character-set-server=utf8
-
-
- # 创建数据表时,默认使用的存储引擎
- default-storage-engine=INNODB
-
- # 表示 SQL 模式的参数,通过这个参数可以设置检验 SQL 语句的严格程度
- sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
-
- # 表示允许同时访问 MySQL 服务器的最大连接数。其中一个连接是保留的,留给管理员专用的
- max_connections=1000
-
- # mysql服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小
- max_allowed_packet=500M
-
- # 查询时的缓存大小,缓存中可以存储以前通过 SELECT 语句查询过的信息,再次查询时就可以直接从缓存中拿出信息。
- # 如果有许多返回相同查询结果的SELECT查询,并且很少改变表,可以设置query_cache_size大于0,可以极大改善查询效率
- # 注意:如果您的表更改非常频繁,或者您的查询每次在文本上都不同,则查询缓存可能会导致速度变慢而不是性能提升。
- query_cache_size=0
-
- # 用于设置table高速缓存的数量。(这个参数在5.1.3之后的版本中叫做table_open_cache)
- # 由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。
- # 当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。
- # 如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。
- # 在执行缓存操作之前,table_cache用于限制缓存表的最大数目:
- # 如果当前已经缓存的表未达到table_cache,则会将新表添加进来;
- # 若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。
- table_open_cache=256
-
- # 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表(Disk Based Table)。
- tmp_table_size=5M
-
- # 缓存的最大线程数。
- # 当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。
- # 在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。
- # 一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高。
- thread_cache_size=8
-
- # mysql重建索引时允许使用的临时文件最大大小
- myisam_max_sort_file_size=100G
-
- # 批量插入数据缓存大小,能够有效提升插入效率,默认为8M。
- myisam_sort_buffer_size=8M
-
-
- # 一般用来缓存MyISAM表的主键,也用于临时的磁盘表缓存主键,
- # 上面多次出现临时磁盘表,所以就算不用MyISAM也最好为其设置一个不小的值,默认32M
- key_buffer_size=8M
-
-
- # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享
- read_buffer_size=64M
-
- # 设置进行随机读的时候所使用的缓冲区。
- # 此参数和read_buffer_size所设置的Buffer相反,一个是顺序读的时候使用,一个是随机读的时候使用。
- # 但是两者都是针对与线程的设置,每个线程都可以产生两种Buffer中的任何一个。默认值256KB,最大值4GB
- read_rnd_buffer_size=32M
-
-
- # 设置查询排序时所能使用的缓冲区大小,系统默认大小为2MB
- sort_buffer_size=16M
-
- # 慢查询开启状态
- slow_query_log = 1
-
- # 慢查询日志存放的位置
- slow_query_log_file = D:\mysql\log\docker_log\mysql\slow.log
-
-
-
- #*** INNODB Specific options ***
-
-
- # 开启下条将会禁用 INNODB
- #skip-innodb
-
- # 一般不用设置或者说设了也没多大用,InnoDB会自己与操作系统交互管理其附加内存池所使用InnoDB的存储数据的大小
- #innodb_additional_mem_pool_size = 16M
-
- # InnoDB的数据存储在一个或多个数据文件组成的表空间
- #innodb_data_file_path = ibdata1:10M:autoextend
-
- # 用于异步IO操作的线程数量,默认为 4 ,可适当提高
- #innodb_file_io_threads = 8
-
- # 默认为 1,InnoDB的事务日志快存行为,InnoDB 将在每次提交时将事务日志刷新(fsync)到磁盘
- # 值 0 表示仅将日志写入日志文件,并且日志文件大约每秒刷新一次到磁盘。
- # 值 2 表示在每次提交时将日志写入日志文件,但日志文件大约每秒刷新一次到磁盘
- innodb_flush_log_at_trx_commit = 1
-
- # InnoDB 用于缓冲日志数据的缓冲区大小。一旦它已满,InnoDB 将不得不将其刷新到磁盘
- innodb_log_buffer_size = 16M
-
- # innodb整体缓冲池大小,不宜过大,设为本地内存的 50%-75% 比较合适,在本机开发过程中可以设得较小一点如 64M,256M
- innodb_buffer_pool_size = 6G
-
- # InnoDB事务被回滚之前可以等待一个锁定的超时秒数。
- # InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。
- # InnoDB用locak tables 语句注意到锁定设置。默认值是50秒。
- # innodb_lock_wait_timeout = 120
-
- # 日志组中每个日志文件的大小。
- # 您应该将日志文件的组合大小设置为缓冲池大小的 25%-100% 左右,以避免日志文件覆盖时不必要的缓冲池刷新活动。
- # 修改此项要先删除datadir\ib_logfileXXX
- innodb_log_file_size = 512M
-
- # 线程数内允许的InnoDB内核,不宜太高,服务器有几个CPU就设置为几,建议用默认设置,一般设为8
- innodb_thread_concurrency=8
-
- # 为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
- #innodb_log_files_in_group = 3
-
- # InnoDB的日志文件位置。默认是MySQL的datadir
- #innodb_log_group_home_dir
-
- # InnoDB最大允许的脏页缓冲池的百分比,默认90
- #innodb_max_dirty_pages_pct = 90
-
- # back_log参数是指出在MySQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。
- # 如果系统在短时间内有很多连接,则需要增加该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。
- # 不同的操作系统在这个队列的大小上有自己的限制。
- # 如果试图将back_log设置得高于操作系统的限制将是无效的,其默认值为50.对于Linux系统而言,推荐设置为小于512的整数
- back_log=300
-
- # 服务器一次能处理最大的查询包的值,也是服务器程序能够处理的最大查询
- max_allowed_packet=512M
-
- # 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享
- join_buffer_size=128M
-
- # 设置查询排序时所能使用的缓冲区大小,系统默认大小为2MB
- sort_buffer_size=128M
-
- #skip_grant_tables
1、cmd命令行窗口以管理员身份运行,敲入下边命令:
mysqld --install 服务名
注意:如果添加了环境变量,则可以在任意目录运行,但是如果未添加mysql环境变量,则需要到mysql目录的bin文件夹下执行命令
提示service successfully installed,即表示安装成功。
2、运行窗口打开服务services.msc,发现安装的服务已经在服务列表里了(我安装时服务名自定义为MysqlCS)


3、运行下边的命令初始化mysql数据库,并且会自动产生一个随机密码。请记录这个密码。

4、开启mysql服务
net start 服务名

5、输入下边命令登录mysql服务,后按enter输入密码(注意随机密码可拷贝,拷贝时不要包含字符前的空格,否则会登陆失败)
mysql -uroot -p

6、由于初始化产生的密码太复杂,不便于登录,因此修改成自己能记录的密码。
修改密码:alter user ‘root’@‘localhost’ identified by ‘自己的密码’;

7、开启远程访问,这样其他ip也可访问此数据库,可指定其他机器访问(看个人需求)
- # 开启远程服务,%代表所有主机,也可以指定ip访问权限
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '刚才设置的root用户的密码' WITH GRANT OPTION;
-
- #刷新权限使生效
- flush privileges;
8、再次查看服务列表,可看到服务已经启动

此时,可以用数据库管理工具连接使用了。
在mysql的bin目录中添加2个文件bat脚本文件:InstallMysql.bat和RemoveMysql.bat
InstallMysql.bat
- cd /d %~dp0 # 进入当前目录下。我是把mysql目录放在d盘,所以cd后边是/d
- # 如果是其他盘,就按照实际的写
- # %~dp0 是批处理所在的盘符加路径
-
- net stop MysqlCS # 停止服务名为MysqlCS的服务
- mysqld -remove MysqlCS # 卸载服务名为MysqlCS的服务
-
- mysqld -install MysqlCS # 安装mysql服务,服务名设置为MysqlCS
- net start MysqlCS # 启动服务名为MysqlCS的服务
RemoveMysql.bat
- cd /d %~dp0
- net stop MysqlCS
- mysqld -remove MysqlCS
这样,如果想安装mysql服务,直接以管理员身份运行InstallMysql.bat
如果想卸载mysql服务,直接以管理员身份运行RemoveMysql.bat