1、什么是mysql?
MySQL(官方发音为英语发音:/maɪ ˌɛskjuːˈɛl/ My S-Q-L,但也经常读作英语发音:/maɪ ˈsiːkwəl/ My Sequel)原本是一个开放源代码的关系数据库管理系统(DBMS),原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。在本教程中,会让大家快速掌握MySQL的基本知识,并轻松使用MySQL数据库。
1.1 MySQL 介绍
MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中,是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。
但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,因此原先一些使用MySQL的开源软件逐渐转向其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库。MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。
1.2 MySQL 发展历史
很多人以为MySQL是最近15年内才出现的数据库,其实MySQL数据库的历史可以追溯到1979年,那时 Bill Gates 退学没多久,微软公司也才刚刚起步,而Larry的Oracle公司也才成立不久。那时有一个天才程序员 Monty Widenius 用 BASIC 设计了一个报表工具,过了不久,又将此工具使用 C 语言重写,移植到 UNIX 平台,当时只是一个底层的面向报表存储引擎名叫Unireg。
- 1985年,瑞典的几位志同道合小伙子(David Axmark、Allan Larsson 和Monty Widenius) 成立了一家公司,这就是MySQL AB 的前身。
- 1990年,TcX公司的客户中开始有人要求为他的API提供SQL支持。当时有人提议直接使用商用数据库,但是Monty觉得商用数据库的速度难以令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。令人失望的是,效果并不太令人满意,于是,Monty雄心大起,决心自己重写一个SQL支持。
- 1996年,MySQL 1.0发布,它只面向一小拨人,相当于内部发布。
- 1996年10月,MySQL 3.11.1发布(MySQL没有2.x版本),最开始只提供Solaris下的二进制版本。一个月后,Linux版本出现了。
- 1999~2000年,MySQL AB公司在瑞典成立。Monty雇了几个人与Sleepycat合作,开发出了Berkeley DB引擎,因为BDB支持事务处理,所以MySQL从此开始支持事务处理了。
- 2003年12月,MySQL 5.0版本发布,提供了视图、存储过程等功能。
- 2008年1月16日,Sun(太阳微系统)正式收购MySQL。
- 2009年4月20日,甲骨文公司宣布以每股9.50美元,74亿美元的总额收购Sun电脑公司。
- 2010年12月,MySQL 5.5发布,其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的支持,最重要的是InnoDB存储引擎终于变为当前MySQL的默认存储引擎。
- 2013年6月18日,甲骨文公司修改MySQL授权协议,移除了GPL。但随后有消息称这是一个bug。
1.3 MySQL 版本
MySQL针对不同的用户,分了社区版和企业服务器版,还提供一些其它版本,是属于MySQL相关工具。
- MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
- MySQL Enterprise Edition 企业版本,需付费,可以试用30天。
- MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
- MySQL Cluster CGE 高级集群版,需付费。
- MySQL Workbench(GUI TOOL)一款专为MySQL设计的ER/数据库建模工具。
- MySQL Workbench是著名的数据库设计工具DBDesigner4的继任者。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。
MySQL 版本命命机制由三个数字组成,例如mysql-5.6.33-osx10.11-x86_64.tar.gz
第一个数字(5)主版本号:当你做了不兼容的 API 修改,
第二个数字(7)次版本号:当你做了向下兼容的功能性新增,合计,主要和次要的数字构成发布系列号。该系列号描述了稳定的特征集。
第三个数字(1)修订号:当你做了向下兼容的问题修正。这是一个新的bugfix释放增加。在大多数情况下,在一系列最新版本是最好的选择。
Github 上面有语义化版本标准, 开源仓库mojombo/semver,上面的版本命名大致是跟语义化版本标准差不多,你可以看语义化版本标准来学习版本名机制。通过语义化版本标准来理解MySQL版本命命机制。
1.4 MySQL 的优势
- 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
- 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell NetWare、NetBSD、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
- 为多种编程语言提供了API。这些编程语言包括C、C++、C#、VB.NET、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
- 支持多线程,充分利用CPU资源,支持多用户。
- 优化的SQL查询算法,有效地提高查询速度。
- 既能够作为一个单独的应用程序在客户端服务器网络环境中运行,也能够作为一个程序库而嵌入到其他的软件中。
- 提供多语言支持,常见的编码如中文的GB 2312、BIG5、日文的Shift JIS等都可以用作数据表名和数据列名。
- 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
- 提供用于管理、检查、优化数据库操作的管理工具。
- 可以处理拥有上千万条记录的大型数据库。
2、为什么要使用mysql?
mysql数据库是国内互联网公司使用最多的数据库,所以我们要学习他,除了使用量大外,还有以下原因:
-
免费:MySQL是一个开源项目,只这一项就给很多中小微公司节省了大量的成本。
-
数据量支撑:MySQL具有强大的数据存储和处理能力。它支持大容量数据,并且具有高效的查询性能;虽然数据量级比不上Oracle,但是绝大多数公司的项目的数据量MySQL都能满足。
-
分库分表:MySQL提供了分库分表的功能。您可以通过增加更多的数据库服务器来分担数据负载,从而提高系统的性能和稳定性。MySQL还提供了数据分片的功能,可以根据不同的数据字段进行分区,进一步优化查询性能;这对于MySQL数据库量级的短板来说,算是“曲线救国”了。
-
可扩展性:MySQL具有出色的可扩展性,可以根据业务需求轻松地扩展数据库系统的规模。您可以通过增加更多的服务器、增加存储容量或升级硬件来满足更高的数据需求。
-
社区支持:MySQL拥有庞大的社区支持,这意味着您可以在线找到大量的教程、文档和示例代码,以便更好地了解和掌握MySQL的使用。
3、mysql的安装与配置
3.1 下载mysql安装文件
请在https://dev.mysql.com/downloads/mysql/ 下载mysql 5.6的安装文件,如果下载很慢,请联系我们发送离线安装文件。
3.2 安装
Windows 下安装 MySQL 有两种方式,一种是下载安装包,根据提示一路 next 安装,不需要什么配置,比较简单;另一种是下载压缩包,通过命令和配置来安装,因为实际工作中很少有图形界面,所以本篇就采用第二种方法安装。
本篇以5.6为主来讲,8.0、5.7与5.6基本相同,不同的地方会在相应的地方做说明。
- 解压下载下来的压宿包,然后把解压后的文件夹迁到想要安装的目录,如D:\Program Files下面为了方便我把文件夹重命名为 mysql-5.6
- 右击 我的电脑->属性->高级->环境变量,在系统变量里选择PATH,在其后面添加: mysql bin文件夹的路径 (如: D:\Program Files\mysql-5.6\bin ),注意是追加,不是覆盖
- 在mysql目录中找到 data 文件夹(如果不存在就新建一个 data 文件夹)
修改一下配置文件,拷贝 mysql 目录中的my-default.ini,重命名为my.ini(如果不存在my-default.ini,新建my.ini文档),打开my.ini,修改或添加配置,然后保存
basedir = D:/Program Files/mysql-5.6(mysql所在目录)
datadir = D:/Program Files/mysql-5.6/data(mysql所在目录\data)
在配置文件中我们还看到 port,为配置 mysql 端口,如果不想用 3306 默认端口,可以配置想要的端口
其他可选配置修改说明如下:
[mysql]
# 设置 mysql 客户端默认字符集,所谓客户端就是要连接mysql的数据库
default-character-set=utf8mb4
[mysqld]
#设置 3306 端口,不配置默认3306
port = 3306
# 设置 mysql 的安装目录
basedir=D:/Program Files/mysql-5.6
# 设置 mysql 数据库的数据的存放目录
datadir=D:/Program Files/mysql-5.6/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为 8 比特编码的 latin1 字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
- 以管理员身份运行cmd(一定要用管理员身份运行,不然权限不够),通过命令,进入mysql bin 目录
- 输入 mysqld –initialize-insecure –user=mysql 回车
- 输入 mysqld install 回车
- 启动 MySQL
输入 net start mysql 回车,启动mysql服务,start 启动,stop 停止
- 本地命令行连接MySQL
输入 mysql -u root -p ,回车,出现 Enter passwore: ,输入密码,由于刚安装,没有设置密码,直接回车 Enter 进入
注释:-u root表示用root用户连接mysql,root用户是mysql权限最高的用户, -p表示使用会密码连接,这里没有密码,所以-p参数后面为空
输入 show databases; 命令查看默认安装数据库
-
设置root密码
依次通过以下命令修改root用户名密码:mysql>use mysql; # 切换到mysql数据库,后面的所有操作都是针对mysql这个数据库的,每个mysql数据库都会有一个默认的mysql库,里面存储了mysql的原数据,比如权限、mysql中创建了哪些数据库,有哪些表等等 mysql>update user set password=password('your password') where user='root'; mysql>flush privileges; # 设置的密码在内存中,这名表示刷新内存中的数据到答个题,以使配置生效
-
允许远程登录
mysql默认只能本机登录,如果只是本机使用,就可以不用设置远程登录,使用 localhost 做为主机地址登录mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your password' WITH GRANT OPTION; # 请把这里的your password改成你的实际密码 mysql>flush privileges;
问题
- 尝试使用nivacat premium lite连接我们安装的mysql数据库,并在mysql里面创建一个叫mozhen的数据库
原创文章,转载请注明出处:http://b.nwumba.cn/article/111/