在上文菜鸟崛起 DB Chapter 1 数据库概述我们初步认识了数据库,也知道市面上常见的几种数据库,下面我们就针对常见的MySQL数据库展开对DataBase的探讨。
2.1 MySQL介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
2.1.1 MySQL的版本
- MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
- MySQL Enterprise Edition 企业版本,需付费,可以试用30天。
- MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
- MySQL Cluster CGE 高级集群版,需付费。
- MySQL Workbench(GUI TOOL)一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。
MySQL的命名机制由3个数字和一个后缀组成:如mysql-5.6.10
第一个数字5是主版本号,描述了文件格式,所有版本5的发行版都有相同的文件格式。
第二个数字6是发行级别,主版本号和发行级别组合在一起就构成了发行序列号
第三个数字10是此发行系列的版本号
2.1.2 MySQL的优劣
2.1.2.1 MySQL的优点
1.它使用的核心线程是完全多线程,支持多处理器。
2.有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。
3.它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。
4.全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。
5.支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
6.所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的缺省值。
7.MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。
2.1.2.2 MySQL的缺点
1、 MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变。
2、 MySQL的另一个主要的缺陷之一是缺乏标准的RI(Referential Integrity-RI)机制;Rl限制的缺乏(在给定字段域上的一种固定的范围限制)可以通过大量的数据类型来补偿。
3、 MySQL没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制。
4、 MySQL不支持热备份。
l 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。即热备份是系统处于正常运转状态下的备份。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog()方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。
l 冷备份(cold backup),也被称为离线备份,是指在关闭数据库并且数据库不能更新的状况下进行的数据库完整备份。
5、 MySQL的价格随平台和安装方式变化。Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix或Linux 自行安装 免费 、Unix或Linux 第三方安装 200美元,
2.2 MySQL 5.6的新功能
我们用惯了MySQL5.5,那么陡然更换到高版本的MySQL上,是不是应该了解一下MySQL高版本的新功能呢?MySQL5.6在原有5.5的基础上新增加了如下几个功能:
l 子查询最佳化:通过优化子查询,可以提高执行效率,主要表现在查询的结果集合、分类和返回的执行次数上。
l 强化Optimizer Diagnostics功能:运用EXPLAIN执行INSERT、UPDATE和DELETE,EXPLAIN以JSON格式输出,提供更精确的最佳化指标和绝佳的可读性,Optimizer Traces功能更可追踪最佳化决策过程。
l 通过强化InnoDB储存引擎,提升效能处理量和应用软件的可用性:提升处理和只读量高达230%,InnoDB重构得以尽量减少传统执行绪、冲洗和净化互斥的冲突和瓶颈,在高负载的OLTP系统展现更优异的数据同步性,显著提升只读和交易工作负载的处理量。
l 大幅度提升可用性:数据库管理员运用在线数据定义语言作业,可执行新增索引和窗体变更功能。并同时更新应用程序。
l 新增Index Condition Pushdown(ICP)和Batch Key Access(BKA)功能,提升特定查询量高达280倍。
l InnoDB全文检索功能:开发人员可以在InnoDB窗体上就建立全文索引功能,以呈现文字搜寻结果,加快搜寻单字和语句。
l 自我修复复制丛集:新增的Global Transatction Identifiers and Utilities简化自动侦测和复原功能。当数据库发生损毁时,数据库管理员无需介入,即可运用Crash-Safe Replication功能,自动将二进制记录和备份数据恢复至正确位置。Checksums可透过自动侦测和警示错误的功能,跨丛集保持数据的完整性。
l 高效能复制丛集:通过Multi-Threaded Slaves,Binlog Group and Optimized Row-Based Replication提高复制能力高达5倍之多,用户向外扩充其跨商品系统的工作负载时,得以大幅提升复制的效能和效率。
l 时间延长复制:防止主计算机的作业失误,例如意外删除窗体。
l 强化的PERFORMANCE_SCHEMA:协助用户得以监控使用最多资源的密集查询指令、对象、用户和应用程序,并可总集查询、执行绪、用户、主机和对象的统计数据汇整成新的摘要页面,新增功能能让预设配置更加简易,而且耗费不到5%的成本。
l MySQL5.6纳入的新功能包括精确空间操作的地理信息系统(Geographic Information System)、强化的IPv6设备以及最佳化的服务器默认值。
2.3 MySQL的安装
https://wenku.baidu.com/view/5c0cb65ddf80d4d8d15abe23482fb4daa58d1dea.html
MySQL的下载
我们从官网下载最新的MySQL5.6进行安装:
根据计算机版本下载MySQL,这里下载是免安装版:
MySQL免安装版的配置
解压下载的MySQL:解压后如下图
将解压目录下默认文件my-default.ini 拷贝一份,改名my.ini 复制下面的配置信息到my.ini 保存,如果没有my-default.ini,可自己新建my.ini或者从其他地方中获取
[client] port=3306 default-character-set=utf8 [mysqld] port=3306 character_set_server=utf8 basedir=D:\Database\mysql-5.6.38-winx64 #解压目录
datadir=D:\Database\mysql-5.6.38-winx64\data #解压目录下data目录
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [WinMySQLAdmin] D:\Database\mysql-5.6.38-winx64\bin\mysqld.exe |
添加环境变量
1)右键单击我的电脑->属性->高级系统设置(高级)->环境变量点击系统变量下的新建按钮
输入变量名:MYSQL_HOME
输入变量值:D:\Database\mysql-5.6.38-winx64 即为mysql的自定义解压目录。
2)选择系统变量中的Path 点击编辑按钮在变量值中添加变量值:%MYSQL_HOME%\bin
注意是在原有变量值后面加上这个变量,;隔开,不能删除原来的变量值,
将MySQL注册为windows系统服务
1)从控制台进入到MySQL解压目录下的bin 目录下:
2)输入服务安装命令:
mysqld install MySQL --defaults-file="D:\Database\mysql-5.6.38-winx64\my.ini"
#解压目录下修改的my.ini文件
安装成功后会提示服务安装成功。
#注:my.ini文件放在MySQL解压后的根目录下
此处配置服务命令:配置服务mysqld --install
#移除服务命令为:mysqld remove
启动MySQL服务
方法一:启动服务命令为:net start mysql
方法二:打开管理工具服务,找到MySQL服务。
通过右键选择启动或者直接点击左边的启动来启动服务。
修改root账号的密码
有问题的修改:
错误解决:
我们在上面修改完密码后,我们进行登录发现提示如下错误:
我们姑且不论为何出现这个错误,先来介绍该如何解决:
解决方案:
1、 停止服务:停止MySQL服务;
2、 跳过验证:修改MySQL安装目录下的my.ini配置文件,使登录时跳过权限检查;
3、 修改密码:启动MySQL服务,登录MySQL,此时提示输入密码,输入任意密码回车即可进入MySQL。然后通过SQL语句修改root用户的密码;
4、 重启服务:将my.ini文件中加入的跳过权限语句删除或加#号注释。重启服务,使用修改后的密码登录即可。
Windows系统具体操作:
1、 停止服务:
方法1:使用dos命令net stop mysql即可;使用这种方式MySQL服务必须为安装的服务,否则会出现服务名无效,这时可以使用第二种方法。
方法2:进入【控制面板】-->【管理工具】 -->【服务】,找到MySQL服务,点击左边的停止。
2、 跳过验证:进入MySQL的安装路径(以默认安装路径为例)C:\Program Files\MySQL\MySQL Server 5.1\,找到my.ini配置文件(些文件记录MySQL的常规参数,每次启动服务都会先加载此文件),在my.ini配置文件的最后一行加入skip_grant_tables,此语句可以忽略登录检查。
3、 修改密码:启动MySQL服务,进入dos环境,输入mysql -u root -p登录MySQL(如果安装时没有勾选添加环境变量,需要先使用cd命令进入MySQL安装目录),此时提示输入密码,输入任意密码回车即可进入MySQL,出现mysql>控制符,此时表示已经成功登录MySQL;mysql> USEmysql (将数据库切换至mysql库中)
mysql> UPDATE user SET password=PASSWORD(‘newpswd’)WHERE user=’root’ (修改密码)
password函数为MySQL内部函数,其中newpswd为修改后的新密码。
4、 重启服务:
将my.ini文件中加入的跳过权限语句删除或加#号注释。重启服务,使用修改后的密码登录即可。
经过上面的解决我们可以通过用户名密码来进行登录了,实际上我们问题的出现就在于我们初始设置密码的操作错误了,所以使用我们认识正确的密码登录,却一直不能获取权限;正确的设置方法是:
UPDATE user SET password=PASSWORD(‘123’)WHERE user=’root’
其中123是我们的新密码,PASSWORD是一个关键字不用搭理;