MySQL的最初的核心思想,主要是开源、简便易用。其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年。到1998年,MySQL已经可以支持10中操作系统了,其中就包括win平台。但依然问题多多,如不支持事务操作、子查询 、外键、存储过程和视图等功能。由于MySQL的早期定位,其主要应用场景就是互联网开发。基本上,互联网的爆发成就了MySQL,LAMP架构风靡天下。而由于MySQL更多的的追求轻量、易用,以及早期的事物操作及复杂查询优化的缺失,在传统的数据库应用场景中,份额极少。
MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向,MySQL的高并发存取能力并不比大型数据库差,同时价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。并且由于MySQL的开源特性,针对一些对数据库有特别要求的应用,可以通过修改代码来实现定向优化,例如SNS、LBS等互联网业务。
MySQL:最大的一个特色,就是自由选择存储引擎。每个表都是一个文件,都可以选择合适的存储引擎。常见的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由于这种开放插件式的存储引擎,比如要求数据库与引擎之间的松耦合关系。从而导致文件的一致性大大降低。在SQL执行优化方面,也就有着一些不可避免的瓶颈。在多表关联、子查询优化、统计函数等方面是软肋,而且只支持极简单的HINT。
MySQL 的下载网站:MySQL官网https://www.mysql.com
MySQL Community Server下载网站:https://dev.mysql.com/downloads/mysql
现以64位windows环境,社区版mysql为例:
如下图,直接安装可以下载.msi格式(红色标记处),此处以.zip格式为例(黄色标记处),下载的为最新版8.0.12版本,因电脑64位因此下载64位的安装包。
点击下图黄色标记,直接下载即可。
下载后如下图的.zip安装包:mysql-8.0.12-winx64.zip,并解压,将解压后的文件夹放到常用目录下,此处为D:\mysql目录中。
Step1:配置环境变量,详见关键点2,主要涉及bin目录。
变量名:MYSQL_HOME
变量值:D:\mysql\mysql-8.0.12-winx64\mysql-8.0.12-winx64
path里添加:%MYSQL_HOME%\bin;
Step2:新建my.ini文本文件,详见关键点1。
Step3:菜单栏-Windows系统-命令提示符(右击)-更多-以管理员身份运行(以防安装时权限不够),先进入bin目录,在输入命令mysqld -install。
提示安装成功后,在MySQL安装目录的 bin 目录下执行命令mysqld -initialize,在Mysql安装目录下生成data文件夹(详见关键点3)。之后通过net start mysql,启动服务器,之后在MySQL安装目录的 bin 目录下执行命令:mysql -u root -p,第一次登录,可不用输入密码,直接按enter进入。
关键点1:先新建一个文件my.ini,内容如下,其中绿色部分修改为安装包文件所在位置:
[mysqld]
#绑定IPv4和3306端口
bind-address = 0.0.0.0
port = 3306
# 设置mysql的安装目录
basedir=D:\mysql\mysql-8.0.12-winx64\mysql-8.0.12-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-8.0.12-winx64\mysql-8.0.12-winx64\data
# 允许最大连接数
max_connections=200
关键点2:配置环境变量:点击我的电脑-属性-高级系统设置-环境变量,在系统变量中双击Path变量,新建环境变量:
关键点3:新建的配置文件my.ini中D:\mysql\mysql-8.0.12-winx64\mysql-8.0.12-winx64\data,一般新下载的压缩包是没有data目录的,安装时需要新建一个(通过DOS命令在bin目录下执行 mysqld --initialize-insecure命令),否则可能会导致提示服务器启动失败。
命令解析:mysqld --initialize-insecure --user=mysql,使用-initialize生成随机密码,使用-initialize-insecure生成空密码。默认帐号root,后面的-user=mysql不更改,到时就可以使用命令:mysql.exe -hlocalhost -P3306 -uroot -p,进行登录,默认密码为空,即输密码时直接回车键
新下载的压缩包目录:
执行mysqld -initialize命令后: