初识数据库MySQL+安装5.7

数据库基础知识

Mysql是⼀个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发、发布并⽀持的。Mysql是⼀个跨平台的开源关系数据库管理系统,⼴泛地应⽤在Internet上的中⼩型⽹站公司开发中。那么本章主要介绍数据库的基础知识,通过本章的学习,我们可以了解数据库的基本概念,数据库的构成和Mysql的基础知识。
数据库是由⼀批数据构成的有序的集合。这些数据被存放在结构化的数据表⾥。数据表之间互相关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。本节将介绍数据库中的⼀些基本概念,包括:数据库的定义、数据表的定义和数据类型等。

1.什么是数据库

数据库的概念诞⽣于60年前,随着信息技术和市场的快速发展,数据库技术层出不穷,随着应⽤的扩展和深⼊,数据库的数量和规模越来越⼤,其诞⽣和发展给计算机信息管理带来了⼀场巨⼤的⾰命。数据库的发展⼤致划分为以下⼏个阶段:⼈⼯管理阶段、⽂件系统阶段、数据库系统阶段、⾼级数据库阶段。其种类⼤概有3种:层次式数据库、⽹络式数据库和关系式数据库。不同种类的数据库按不同的数据结构来联系和组织。对于数据库的概念,没有⼀个完全固定的定义,随着数据库历史的发展,定义的内容也有很⼤的差异,其中⼀种⽐较普遍的观点认为,数据库(DataBase,DB)是⼀个⻓期存储在计算机内的、有组织的、有共享的、统⼀管理的数据集合。它是⼀
个按数据结构来存储和管理数据的计算机软件系统。即数据库包含两层含义:保管数据的“仓库”,以及数据管理的⽅法和技术。数据库的特点包括:实现数据共享,减少数据冗余;采⽤特定的数据类型;具有较⾼的数据独⽴性;具有统⼀的数据控制功能。

2.表

表在关系数据库中,数据库的表是⼀系列⼆维数组的集合,⽤来存储数据和操作数据的逻辑结构。它是由纵向的列和横向的⾏组成,⾏被称为记录,是组织数据的单位;列被称为字段,每⼀列表示记录的⼀个属性,都有相应的描述信息,如数据类型、数据宽度等。 例如⼀个有关作者信息的名为authors的表中,每个列包含所有作者的某个特定类型的信息,⽐如“姓名”,⽽每⾏则包含了某个特定作者的所有信息:编号、姓名、性别、专业,如图1.1所示

编号姓名性别专业
100张三n计算机
101李四f会计
103王五m石油

3.数据类型

数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常⽤的数据类型有:整数数据类型、浮点数数据类型、精确⼩数类型、⼆进制数据类型、⽇期/时间数据类型、字符串数据类型。表中的每⼀个字段就是某种指定数据类型,例如图1.1中“编号”字段为整数数据,“性别”字段为字符型数据。

4.主键

主键(Primary Key)⽤于唯⼀地标识表中的每⼀条记录。可以定义表中的⼀列或者多列为主键。主键列上不能有两⾏相同的值,也不能为空值。

数据库技术构成

数据库系统由硬件部分和软件部分共同构成,硬件主要⽤于存储数据库中的数据,包括计算机、存储设备等。软件部分则主要包括DBMS、⽀持DBMS运⾏的操作系统,以及⽀持多种语⾔进⾏应⽤开发的访问技术等。

1.数据库系统

数据库系统有3个主要的组成部分:
数据库:⽤于存储数据的地⽅。
数据库管理系统:⽤于管理数据库的软件。
数据库应⽤程序:为了提⾼数据库系统的处理能⼒所使⽤的管理数据库的软件补充。

数据库(Database System)提供了⼀个存储空间以存储各种数据,可以将数据库视为⼀个存储数据的容器。⼀个数据库可能包含许多⽂件,⼀个数据库系统中通常包含许多数据库。

数据库管理系统(Database Management System,DBMS)是⽤户创建、管理和维护数据库时所使⽤的软件,位于⽤户与操作系统之间,对数据库进⾏统⼀管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。

数据库应⽤程序(Database Application)虽然已经有了DBMS,但是在很多情况下,DBMS⽆法满⾜对数据管理的要求。数据库应⽤程序的使⽤可以满⾜对数据管理的更⾼要,还可以使数据管理过程更加直观。数据库应⽤程序负责与DBMS进⾏通信,访问和管理DBMS中存储的数据,允许⽤户插⼊、修改、删除DB中的数据。

2.SQL语⾔

对数据库进⾏查询和修改操作的语⾔叫SQL。SQL的含义是结构化查询语句(Structured Query Languate)。SQL有许多不同的类型,有3个主要的标准:
ANSI(美国国家标准机构)SQL,对ANSI SQL修改后在1992年采纳的标准,称为SQL-92或SQL2。最近的SQL-99标准,SQL-99标准从SQL2扩充⽽来并添加了对象关系特征和许多其他新的功能。其次,各⼤数据库⼚商提供不同版本的SQL,这些版本的SQL不但能包括原始的ANSI标准,⽽且在很⼤程度上⽀持新退出的SQL-92标准。

SQL语⾔包含以下4个部分:

K. 数据定义语⾔(DDL):DROP、CREATE、ALTER等语句。
Q. 数据操作语⾔(DML):INSERT、UPDATE、DELETE语句。
S. 数据查询语⾔(DQL):SELECT语句。
T. 数据控制语⾔(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。
mysql> CREATE TABLE student
 -> (
 -> student_id INT UNSIGNED,
 -> name VARCHAR(30),
 -> sex CHAR(1),
 -> birth DATE,
 -> PRIMARY KEY(student_id)
 -> );
Query OK, 0 rows affected (0.10 sec)

上表包含4个字段,分别为student_id、name、sex、birth,其中student_id定义为表的主键。现在只是定义了⼀张表格,但并没有任何数据,接下来这条SQL声明语句,将在student表中插⼊⼀条记录:

mysql> INSERT INTO student(student_id,name,sex,birth)
VALUES(1,'JACK','m','1999-09-19');
Query OK, 1 row affected (0.01 sec)

执⾏完上⾯的SQL语句之后,student表中就会增加⼀⾏新记录,该记录中student_id为1,姓名为JACK,性别为男,⽣⽇为1999.9,19. 那么我们在使⽤SELECT查询语句获取刚才插⼊的数据。

mysql> SELECT name FROM student WHERE student_id=1;
+------+
| name |
+------+
| JACK |
+------+
1 row in set (0.06 sec)

3.数据库访问技术

不同的程度设计语⾔会有各⾃不同的数据库访问技术,程序语⾔通过这些技术,执⾏SQL语句,进⾏数据库管理。主要的数据库访问技术有:

1.ODBC Open

Database Connectivity(开放数据库互联)技术为访问不同的SQL数据库提供了⼀个共同的接⼝。ODBC使⽤SQL作为访问数据的标准。这⼀接⼝提供了最⼤限度的互操作性;⼀个应⽤程序可以通过共同的⼀组代码访问不同的SQL数据库管理系统DBMS。

2.JDBC Java Data Base Connectivity(java数据库连接)

⽤于java应⽤程序连接数据库的标准⽅法,是⼀种⽤于执⾏SQL语句的Java API,可以为多种关系
数据库提供统⼀访问,它由⼀组⽤java语⾔编写的类和接⼝组成。

3.ADO.NET ADO.NET

是微软在.NET框架下开发设计的⼀组⽤于和数据源进⾏交互的⾯向对象类库。ADO.NET提供了对关系数据、XML和应⽤程序的访问,允许和不同类型的数据源以及数据库进⾏交互。

4.PDO PDO(PHP Data Object)

为PHP访问数据定义了⼀个轻量级的、⼀致性的接⼝,它提供了⼀个数据访问抽象层,这样,⽆论使⽤什么数据库,都可以通过⼀致的函数执⾏查询和获取数据。PDO是PHP 5新加⼊的⼀个重⼤功能。

什么是Mysql

SQL Server等相⽐,Mysql规模⼩,功能有限,但是体积⼩、速度快、成本低,且它提供的功能对稍微复杂的应⽤来说已经够⽤了,这些特性使得Mysql成为世界上最受欢迎的开放源代码数据库。

1.客户机-服务器软件

主从式架构(Client-server model)或客户端-服务器(Client/Server)结构简称C/S架构,是⼀种⽹络架构,通常在该⽹络架构下软件分为客户端(Client)和服务端(Server) 服务器是整个应⽤系统资源的存储于管理中⼼,多个客户端则各⾃处理相应的功能,共同实现完整的应⽤。在客户/服务器结构中,客户端⽤户的请求被传送到数据库服务器,数据库服务器进⾏处理后,将结果返回给⽤户,从⽽减少了⽹络数据传输量。 ⽤户使⽤应⽤程序时,⾸先启动客户端通过有关命令告知服务器进⾏连接以完成各种操作,⽽服务器则按照此请求提供相应的服务。每⼀个客户端软件的实例都可以向⼀个服务器或应⽤程序服务器发出请求。这种系统的特点就是,客户端和服务器程序不在同⼀台计算机上运⾏,这些客户端和服务器程序通常归属不同的计算机。

2.Mysql版本

针对不同⽤户,Mysql分为2个不同的版本: MySQL Community Server(社区
版):该版本完全免费,但是官⽅不提供技术⽀持MySQL Enterprise Server(企业版服务器):它能够以很⾼的性价⽐为企业提供数据仓库应⽤,⽀持ACID事务处理,提供完整的提交、回滚、崩溃恢复和⾏级锁定功能。但是该版本需付费使⽤,官⽅提供电话技术⽀持。MySQL的命名机制由3个数字和1个后缀组成,例如mysql-5.5.13.

1. 第⼀个数字(5)是主版本号,描述了⽂件格式,所有版本5的发⾏版都有相同的⽂件格式。
2. 第⼆个数字(5)是发⾏级别,主版本号和发⾏级别组合在⼀起便构成了发⾏序列号
3. 第三个数字(13)是在此发⾏系列的版本号,随每次新发布版本递增。通常选择已经发⾏的最新版本。

3.MySQL的优势

MySQL的主要优势如下:

K. 速度:运⾏速度快。
Q. 价格:MySQL对多数个⼈⽤来说是免费的。
S. 容易使⽤:与其他⼤型数据库的设置和管理相⽐,其复杂程度较低,易于学习。
T. 可移植性:能够⼯作在众多不同的系统平台上,例如:Windows、Linux、Unix等
a. 丰富的接⼝:提供了⽤于C、C++、Eiffel、Java、Perl、PHP、Ruby、Python等语⾔的API
c. ⽀持查询语⾔:MySQL可以利⽤标准SQL语法和⽀持ODBC(开放式数据库连接)的应⽤程序
d. 安全性和连续性:⼗分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采⽤加密形式,从⽽保证了密码安全。并且由于Mysql是⽹络化的,因此可以在因特⽹上的任何地⽅访问,提⾼数据共享的效率。

4.MySQL⼯具

MySQL数据库管理系统提供了许多命令⾏⼯具,这些⼯具可以⽤来管理MySQL服务器、对数据库进⾏访问控制、管理MySQL⽤户以及数据库备份和恢复⼯具等。⽽且MySQL提供图形化的管理⼯具,这使得对数据库的操作更加简单。1.4.1 MySQL命令⾏实⽤程序MySQL服务器端实⽤⼯具程序如下:

1. mysqld:SQL后台程序。该程序必须运⾏之后,客户端才能通过连接服务器来访问数据库。
2. mysqld_safe:服务器启动脚本。在Unix和Net Ware中使⽤mysqld_safe来启动mysqld服务器。
3. mysql.server:服务器启动脚本。该脚本⽤于使⽤包含为特定级别的、运⾏启动服务的脚本、运⾏⽬录的系统。它调⽤mysqld_safe来启动MySQL服务器。
4. mysqld_multi:服务器启动脚本,可以启动或停⽌系统上安装的多个服务器。
5. myisamchk:⽤来描述、检查、优化和维护MyISAM表的实⽤⼯具。
6. mysqlbug:MySQL缺陷报告脚本。它可以⽤来向MySQL邮件系统发送缺陷报告。
7. mysql_install_db:该脚本⽤默认权限创建MySQL授权表。通常只是在系统上⾸次安装MySQL时执⾏⼀次。

MySQL客户端实⽤⼯具程序如下:

1. myisampack:压缩MyISAM表以产⽣更⼩的只读表的⼀个⼯具。
2. mysql:交互式输⼊SQL语句或从⽂件以批处理模式执⾏它们的命令⾏⼯具。
3. mysqlaccess:检查访问主机名、⽤户名和数据库组合的权限的脚本。
4. mysqladmin:执⾏管理操作的客户程序,例如创建或删除数据库,重载授权表,将表刷新到硬盘上,以及重新打开⽇志⽂件。mysqladmin还可以⽤来检索版本、进程,以及服务器的状态信息。
5. mysqlbinlog:从⼆进制⽇志读取语句的⼯具。在⼆进制⽇志⽂件中包含执⾏过的语句,可⽤来帮助系统从崩溃中恢复。
6. mysqlcheck:检查、修复、分析以及优化表的表维护客户程序。
7. mysqldump:将MySQL数据库转储到⼀个⽂件(例如SQL语句或tab分隔符⽂本⽂件)的客户程序
8. mysqlhotcopy:当服务器在运⾏时,快速备份MyISAM或ISAM表的⼯具。
9. mysql import:使⽤LOAD DATA INFILE将⽂本⽂件导⼊相关表的客户程序。
10. mysqlshow:显示数据库、表、列以及索引相关信息的客户程序。
11. perror:显示系统或MySQL错误代码含义的⼯具

安装mysql5.7

软件地址:https://downloads.mysql.com/archives/community/

====================================================
安装和基本配置,使用二进制包进行安装

下载和上传软件到/usr/src
在这之前可以先装个raid5

1解压

[root@mysql ~]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C /usr/local
[root@mysql ~]# cd /usr/local
[root@mysql local]# mv mysql-5.7.20-linux-glibc2.12-x86_64/  mysql

2.修改环境变量及生效

添加

[root@mysql ~]# vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH

刷新环境变量&&查看版本

[root@mysql ~]# source /etc/profile
[root@mysql ~]# mysql -V

3.清理历史软件包

[root@mysql ~]# yum remove -y mariadb-libs

4.创建默认用户,创建数据目录,修改权限

[root@mysql ~]# useradd  mysql
[root@mysql ~]# mkdir -p /usr/local/mysql/data
[root@mysql ~]# chown -R mysql.mysql /usr/local/mysql/data

5.初始化数据

5.6 版本的初始化程序:
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

5.7 版本的初始化程序:
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

initialize参数解释:
初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)密码复杂度:长度:超过12位 复杂度:字符混乱组合密码过期时间180天

6.准备启动脚本和基础配置文件

1 准备sys-v启动脚本

[root@mysql ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

2 准备配置文件

[root@mysql ~]# cat /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock

3 启动数据库

[root@mysql ~]# service mysqld start

4 systemctl管理数据库

[root@mysql ~]# cat /etc/systemd/system/mysqld.service 
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

这时就可以用systemctl restart mysqld来启动了

5 连接数据库

[root@mysql ~]# mysql 

6 设置root的初始密码

mysqladmin -uroot -p password 123

===========================================

忘记数据库密码,破解

先关闭数据库然后输入一条跳过登录密码权限的表进入数据库修改root密码后重启数据库就修改了密码

[root@mysql ~]# systemctl stop mysqld
[root@mysql ~]# mysqld_safe --skip-grant-tables & 
#跳过权限表
[root@mysql ~]# mysql
mysql> flush privileges;	
#刷新权限表
mysql> grant all on *.* to root@localhost identified by '123456';
#重新修改密码
[root@mysql ~]# systemctl restart mysqld
[root@mysql ~]# mysql -uroot -p123456
mysql>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马总123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值