008 便携版mysql安装配置

安装环境

  • Windows 版本:Windows 10 专业版 64bit
  • MySQL 版本:MySQL 5.7.29

Tip

在安装 MySQL 前请务必确认自己电脑的 net 指令是正常工作的。有些 Windows 系统会丢失 net 指令(环境变量缺失),解决方法请自行搜索一下。

配置过程

  1. 下载 MySQL Community Server 下载链接

    • 选择合适自己操作系统的版本,通常使用 Windows (x86, 64-bit), ZIP Archive

      image

    • 点击 Download 后,会提示用户登陆 / 注册,可以在下方选择 “No thanks, just start my download.” 跳过登陆 / 注册步骤。

      image

  2. 解压并“合理安放” MySQL Server

    • 将下载好的mysql-5.7.29-winx64.zip解压,并将解压好的文件夹妥善放置(比如放置在 Program FIles 文件夹内)。
    • 本教程中 MySQL 被放置在了D:\

    image.png

  3. 为 MySQL Server 配置环境变量

    • 右击开始菜单按钮,选择“系统”选项。
    • 在“系统”界面左侧,选择“高级系统设置”。
    • 在打开的“系统属性”对话框中的“高级”选项卡页面的下方,选择“环境变量”。

      image

  4. 在“用户变量”区块中,选择“新建”

  5. 输入变量值:D:\mysql-5.7.29-winx64\bin
  6. 注册 MySQL 服务

    • 右击开始菜单按钮,选择“命令提示符(管理员)”选项。
    • 输入盘符 + “:” 指令,进入MySQL文件夹所在的磁盘(本教程是 D 盘)。再使用 cd指令进入MySQL Server所在文件夹的bin文件夹中。这一步非常重要,如果不在这个目录下,无法正确注册 MySQL 服务。

    image.png

    • 执行mysqld -install指令,注册 MySQL 服务。

      image

    • 执行完毕后,请不要退出“命令提示符”。

    • 配置 my.ini
    • 进入 MySQL 所在的文件夹 (本教程为D:\mysql-5.7.29-winx64
    • 新建my.ini (千万不要使用记事本,用notpad++或者是sublime等都可以)
      • 在该文件中,#是注释标记。
      • 我的配置文件如下
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
[client] 
port= 3306
socket= /tmp/mysql.sock
default-character-set= utf8

[mysqld]
port= 3306

# 设置mysql的安装目录
basedir= "D:\mysql-5.7.29-winx64"

# 设置mysql数据库的数据的存放目录
datadir= "D:\mysql-5.7.29-winx64\data"

# tmpdir= "C:\Apps\mysql\tempData"

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB



socket = /tmp/mysql.sock

# 设置mysql服务器的字符集 
#default-character-set=utf8


# 服务端使用的字符集默认为8比特编码的latin1字符集

#character-set-server=utf8 

# mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现“Too many connections”错误。
max_connections=100 


# 查询缓存大小,用于缓存SELECT查询结果。如果有许多返回相同查询结果的SELECT查询,并且很少改变表,可以设置query_cache_size大于0,可以极大改善查询效率。而如果表数据频繁变化,就不要使用这个,会适得其反
query_cache_size=0 

# 这个参数在5.1.3之后的版本中叫做table_open_cache,用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与       max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。
#table_cache=256 


# 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表(Disk Based Table)。
tmp_table_size=34M 


# 缓存的最大线程数。当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高。
thread_cache_size=8 

skip-grant-tables

#------------------------------MyISAM相关参数    begin--------------------------------

# mysql重建索引时允许使用的临时文件最大大小
myisam_max_sort_file_size=100G



myisam_sort_buffer_size=68M

# Key Buffer大小,用于缓存MyISAM表的索引块。决定数据库索引处理的速度(尤其是索引读)
key_buffer_size=54M 


# 用于对MyISAM表全表扫描时使用的缓冲区大小。针对每个线程进行分配(前提是进行了全表扫描)。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
read_buffer_size=64K 



read_rnd_buffer_size=256K
# connection级参数(为每个线程配置),500个线程将消耗500*256K的sort_buffer_size。
sort_buffer_size=256K 




# InnoDB用于存储元数据信息的内存池大小,一般不需修改

# 事务相关参数,如果值为1,则InnoDB在每次commit都会将事务日志写入磁盘(磁盘IO消耗较大),这样保证了完全的ACID特性。而如果设置为0,则表示事务日志写入内存log和内存log写入磁盘的频率都为1次/秒。如果设为2则表示事务日志在每次commit都写入内存log,但内存log写入磁盘的频率为1次/秒。
innodb_flush_log_at_trx_commit =1


# InnoDB日志数据缓冲大小,如果缓冲满了,就会将缓冲中的日志数据写入磁盘(flush)。由于一般至少都1秒钟会写一次磁盘,所以没必要设置过大,即使是长事务。
innodb_log_buffer_size=2M


# InnoDB使用缓冲池来缓存索引和行数据。该值设置的越大,则磁盘IO越少。一般将该值设为物理内存的80%。
innodb_buffer_pool_size=105M


# 每一个InnoDB事务日志的大小。一般设为innodb_buffer_pool_size的25%到100%
innodb_log_file_size=53M


# InnoDB内核最大并发线程数
innodb_thread_concurrency=9 



#-------------------------------# InnoDB相关参数  end -------------------------------
  • 切记不要手动创建 data 文件夹!
  • 在刚才的“命令提示符”中,执行mysqld --initialize(可能会假死,等一分钟手动关闭就好)。
  • 开启 MySQL Server

    • 在“命令提示符”中执行net start mysql,开启 MySQL Server。

      image

  • 配置 MySQL root 账户。

    • 在“命令提示符”中,执行net stop mysql关闭 MySQL Server。
    • 再执行mysqld --skip-grant-tables开启无密码的 MySQL Server。

      image

    • 打开一个新的“命令提示符”,执行mysql -u root登陆 MySQL Server。

    • 执行flush privileges;刷新权限。
    • 执行grant all privileges on *.* to 'root'@'localhost' identified by '你想设置的密码' with grant option;
    • 执行flush privileges;刷新新的 root 用户密码。
    • 执行exit退出 MySQL。

      image

    • 在任务管理器下手动结束mysqld.exe

      image

    • 在“命令提示符”下执行net start mysql重新开启MySQL Server,再次使用mysql -u root -p 你设置的密码即可安全登陆 MySQL。

      image

本教程中所有的“命令提示符”,一定要运行在 管理员模式下,否则会出现“拒绝访问”的问题。