MYSQL数据库基本介绍

数据库

数据库管理系统
  • Database:数据库数据的汇聚,以一定的组织形式存在介质中
  • DBMS:管理数据库的软件,实现数据库的功能
  • DBA:负责数据库的规划设置管理
  • Application:应用程序,以数据库为核心的管理程序
基本功能
  • 数据定义
  • 数据处理
  • 数据安全
  • 数据备份
架构
  • 单机架构
  • 大型数据
  • C/S架构
  • 分布式
数据库管理系统
层次数据库

树状结构,一对多的关系。

网状数据库

多对多的关系,可能会比较乱。

RDBMS关系型数据库
关系统型数据库相关概念
  • 关系:二维表包括行列。
  • 行row:称之为记录
  • 列column:表的列,称之属性,字段,域。
  • 主键Primary key:PK 有复合主键,或者单列主键,唯一确定一个记录的字段,一张表只能有一个主键,且不能为空。
  • 唯一键:一个或多个字段的组合,用于唯一确定一个记录的字段可以有多个也可以为空。
  • 域:属性的取值范围。
关系型数据库理论
E-R图实体-联系模型
  • 实体:客观存在的事务
  • 属性:实体拥有的特征或者性质
  • 联系:数据之间的关联集合,客观存在的。
    • 实体内部的联系:组成实体实体之间的联系。
    • 实体之间的联系,不同实体之间的联系
联系类型
  • 一对一联系
  • 一对多联系:外键的存在
  • 多对多联系:通常增加第三张表
操作

增删改查(CURD)

数据库的规范化

数据库的规范化减少数据库的冗余,增加数据的一致性,范式级别越高冗余越低。
常用的范式:第一范式、第二范式、第三范式
遵循范式要求看业务是否需要,也不一定遵循
第一范式:1NF
没有重复的列出现,且一列中不能有多个值。
基础范式
第二范式:2NF
第二范式必须先满足第一范式,除主键外的所有属性必须依赖于主键,要求每个行且被区分,当主键为复合主键的时候必须依赖于所有的,不能是部分主键。
第三范式:3NF
必须满足第二范式,非主键属性不依赖其他非主键属性。非主键属性之间不能有从属关系。

SQL结构查询

SQL:解释器:将SQL语句解释机器语言

基本概念
  • 约束:表中的数据遵循的限制
  • 主键:一个或者多个字段的组合,填入的数据能在表中唯一标识,一个表只能有一个,不能为NULL。
  • 唯一键:一个或者多个字段的组合,且有唯一记录,允许为NULL一个表可以存在多个。
  • 外键:一个表中的数据取决于另一个表的主键或者已存在的数据
  • 检查:字段值在一定范围内
  • 索引:将表中的一个或者多个字段数据复制一份,按照特定排序存储

MYSQL

分支
  • mysql
  • mariadb
  • percona Server
特性
  • 开源免费
  • 插件式存储引擎:
    MyISAM ==> Aria
    InnoDB ==> XtraDB
  • 单进程,多线程
  • 诸多扩展和新特性
  • 提供了较多的测试组件
安装方法
  • 安装包程序包管理器
  • 源代码编译安装
  • 二进制格式的程序包,展开特定路径,简单配置后使用
RPM包安装Mysql

步骤
1、修改yum仓库

[ 12:16:03 root@CentOS7zhangbo ~]#vim /etc/yum.repos.d/mysql.repo 
[mysql]
name=mysql5.7                                                                                                                                      
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0

2、然后查看安装的包

[ 12:21:05 root@CentOS7zhangbo ~]#yum list|grep mysql

3、安装包

[ 12:23:22 root@CentOS7zhangbo ~]#yum -y install mysql-community-server

4、启动mysql

[ 12:24:41 root@CentOS7zhangbo ~]#systemctl enable --now mysqld

5、查看端口号

[ 12:25:40 root@CentOS7zhangbo ~]#ss -ntl
LISTEN      0      80                                         [::]:3306                                                   [::]:*   #3306端口打开

6、连接数据库5.7版本会生成一个随机密码,mysql8.0以上为空密码,再5.7中再日志中生成随机密码。
查找随机密码

[ 12:29:39 root@CentOS7zhangbo ~]#grep password /var/log/mysqld.log 
2021-01-28T04:25:37.914943Z 1 [Note] A temporary password is generated for root@localhost: 8sgho:/q#%S4
2021-01-28T04:27:13.622039Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
2021-01-28T04:27:25.839556Z 3 [Note] Access denied for user 'root'@'localhost' (using password: YES)

7、登录用随机密码登录

#注意登录进去先要求改密码
[ 12:31:15 root@CentOS7zhangbo ~]#mysql -u root -p'8sgho:/q#%S4'
#修改密码,注意分号结尾
mysql> ALTER USER root@'localhost' identified by 'Zb739182.';
或者
[ 17:12:15 root@CentOS7zhangbo ~]#mysqladmin -uroot -p'Zb739182.' password 'Zb739182@'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
初始化脚本提高安全性

范例:针对mysql5.6之前版本的安全加固
运行脚本:mysql_secure_installation

设置数据库管理员root口令
禁止root远程登录
删除那些anonymous账号
删除test数据库
MySQL组成
  • 客户端程序
  • 服务器端程序
  • 用户账号
客户端程序
  • mysql:交互式或者非交互式
  • mysqldump:数据库备份工具
  • mysqladmin:管理工具
  • mysqlimport:数据导入工具
服务器端程序
  • mysql_safe
  • mysqld
  • mysqld_multi:多实例
用户账号

mysql的用户账号由用户和主机组成

'username'@'host'

host可以限制此用户可以通过那些远程主机登录mysql服务器,且支持通配符。

% 匹配任意长度的任意字符,相当于shell中的*,例如172.16.%.%或者172.16.0.0/16
_ 匹配任意单个字符相当于shell中的?
mysql的客户端命令
  • 客户端命令:本地执行,每个命令都完整或者简写。
  • 服务器端命令:通过mysql协议发送并得到结果,例如得到用户,但是每个命令末尾加上;

实例:修改命令提示符

#临时修改mysql提示符
[ 18:41:50 root@CentOS7zhangbo ~]#mysql -uroot -pzb739182 --prompt="\\r:\\m:\\s> " 

#持久修改提示符
#存到文件里面去/etc/my.cnf
[ 18:45:46 root@CentOS7zhangbo ~]#vim /etc/my.cnf
[mysql]
prompt=(\\u@\\h) [\\d]>\\_  

实例:免用户名密码登录

[ 18:46:31 root@CentOS7zhangbo ~]#vim /etc/my.cnf
#添加一下内容,只针对mysql如果相对所有客户端使用[client]
[mysql]
user=root
password=zb739182
prompt=(\\u@\\h) [\\d]>\\_

#针对有所客户端
[client]
user=root
password=zb739182
[mysql]
prompt=(\\u@\\h) [\\d]>\\_

支持标准输入,所有可以source文件
mysqladmin

#查看myql服务是否正常如果正提示alive
[ 18:55:41 root@CentOS7zhangbo ~]#mysqladmin -uroot -pzb739182 ping
Warning: Using a password on the command line interface can be insecure.
mysqld is alive

#关闭mysql服务,
[ 18:55:50 root@CentOS7zhangbo ~]#mysqladmin -uroot -pzb739182 shutdown

#创建数据库testdb
mysqladmin -uroot -pzb739182 creat testdb
#删除数据库testdb:drop
mysqladmin -uroot -pzb739182 drop testdb
#修改root密码
mysqladmin -uroot -pzb739182 password 'Zb739182'
#日志滚动,生成新的文件flush-logs
mysqladmin -uroot -pzb739182 flush-logs
服务器配置

服务器端工作特性配置方式
1、命令行选项
2、配置文件:集中式配置文件。
配置文件:

  • /etc/my.cnf #常用
  • /etc/mysql/my.cnf
  • ~/.my.cnf文件
    文件格式
    [mysqld]:服务器的配置
    [mysqld_safe]
    [mysql]:客户端的配置
    [mysqldump]
    [server]:所有服务器端
    [client]:所有客户端

格式:

parameter=value 

在配置文件中:

_和 - 相同
ON,TRUE 1 都是真
0,OFF,FALSE都是假意义相同,不区分大小写
关闭mysqld网络连接

实例:只能本地客户端连接,远程不等连接

[ 19:19:46 root@CentOS7zhangbo ~]#vim /etc/my.cnf
skip-networking=1
systemctl restart mysqld
源码编译安装过程
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值