一、数据库简介
1.数据库的特点
- 存储大量信息,方便检索和访问。
- 保持数据的完整性,一致性,降低数据冗余。
- 应用共享和安全。
2.数据库的基本概念
数据:描述事物的符号记录,包括数字,文字,图形,图像,声音,档案记录。以“记录”的形式按照统一格式进行存储。
表:不同记录组织在一起,形成数据库的表,用来存储具体数据。
数据库:不同表组合形成的数据仓库,数据库是表的集合。
数据库管理系统(database management system ,DBMS):实现对数据库资源有效组织,管理和存取的系统软件。
数据库系统(database system ,DBS),一般有硬件,操作系统,数据库,DBMS,应用软件和数据库用户组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。
数据库管理员:负责数据库的更新于备份,维护系统,保证系统的正常运行。
3.数据库的发展史
(1)初级阶段——第一代数据库
20世纪60年代,第一代数据库出现,是层次模型与网状模型数据库系统,为统一管理和共享数据提供支撑,代表公司IBM公司提出研制层次模型数据库管理系统——IMS。
(2)中级阶段——第二代数据库
20世纪70年代,第二代数据库是关系数据库,20世纪80年代,IBM关系数据库系统DB2出现,Oracle公司将Oracle移植到桌面计算机上,二代数据库系统的关系数据库,逐步开始取代层次模型与网状模型数据库。
(3)高级阶段——第三代数据库
20世纪90年代,形成了多种数据系统共同支撑应用的局面。当然,在商务应用山还是关系数据库是主流。新的元素加入商务数据库系统中。例如:“关系——对象”数据库模型。
4.MySQL简介
MySQL是一个关系型数据库管理系统,现被Oracle公司收购。MySQL运行于Linux操作系统之上,Apache和Nginx作为Web服务器,MySQL作为后台数据库,PHP/Perl/Python作为脚本解释器,组合成“LAMP”。
5.主键和外键
(1)主键
数据表中每一行记录都必须是唯一性,通过定义主键(主关键字,Primary Key)保证数据的唯一性。
主键唯一标识表中的数据,一个主键对应一行数据,逐渐由一个或多个字段组成,具有唯一性。一个表中只有一个主键。一个属性集能唯一的表示一行而不含多余的属性,被称为候选键。可以有多个候选键,但是只有有一个候选键可以作为表的主键。如图:可以将编号定义为主键;编号,身份证号,姓名,专业编号定义为候选键。
(2)外键
一个数据库包含多个表,通过外键将表连接起来。外键用于建立和加强两个表中的连接。通过表中主键一列或多列添加到另一个表中,创建两个表中的链接,这个列称为第二个表的外键。
6.数据完整性规则
(1)实体完整性
(2)域完整性
(3)引用完整性
(4)用户定义完整性
二、MySQL二进制安装
<安装mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz>
[root@localhost ~]# tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@localhost ~]# yum -y install gcc libaio
备注:
libaio是linux版本的aio库,aio指的是异步io
创建运行用户
[root@localhost ~]# useradd -M -s /sbin/nologin mysql
关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/selinux/
[root@localhost ~]# vim /etc/selinux/config
[root@localhost ~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql
[root@localhost mysql]# mkdir data (创建数据文件)
[root@localhost mysql]# chown -R mysql:mysql data/
数据初始化
[root@localhost bin]# ./mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
备注:
--user=mysql 指定程序用户
--basedir=/usr/local/mysql 安装目录
--datadir=/usr/local/mysql/data 数据文件
--initialize 初始化
初始化完成之后会形成一个初始化密码。妥善保管,稍后使用
设置配置文件
[root@localhost ~]# vim /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock
[mysqld]
socket=/usr/local/mysql/data/mysql.sock
bind-address=0.0.0. 绑定监听地址 0.0.0.0
port=3306 设置 3306 端口
skip-name-resolve 跳过名称解析
max_connections=2048 允许最大连接数
character-set-server=utf8 服务端使用的字符集默认为 utf8
default-storage-engine=INNODB 创建新表时将使用的默认存储引擎
lower_case_table_names=1 大小写不敏感
[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
[root@localhost ~]# cd /usr/local/mysql/support-files/
[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld
备注:
将mysql.server服务控制脚本cp到/etc/init.d/重命名为mysqld
[root@localhost ~]#vim /lib/systemd/system/mysqld.service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
ExecStop=/etc/init.d/mysqld stop
ExecReload=/etc/init.d/mysqld reload
PrivateTmp=true
[install]
WantedBy=multi-user.target
[root@localhost ~]#systemctl daemon-reload
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# netstat -anpt | grep 3306
[root@localhost mysql]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
[root@localhost mysql]# mysql -uroot -p
Enter password: (初始密码)
mysql> set password=password('pwd123'); 设置新的密码