理论多,命令多
问的都是理论知识
1.什么是数据库
存储数据的仓库,
2.主流的三款数据库 mysql redis mongodb
3.数据库的模型
4.常见的数据服务软件和厂商
5.mysql 的简介和发展过程
一。mysql数据库
搭建数据库服务器 mysql的数据库类型
部署一台数据库,提供数据库存储的服务?
生产环境下是用硬件主机和云主机
服务器的主流的操作系统 unix linux Windows
安装软件包
软件包来源, 官网下载
最新的稳定版,主版本和次版本
偶数和奇数 修改次数 操作系统自带的软件
软件包的封包类型(RPM 源码)
源码是可以自定义配置和安装 ,安装卸载方便 rpm -ivh rpm -e ,但是钥解决依赖关系
RPM是封装好的,不能定义
开源软件和商业软件 使用的软件版本
开源不等于免费,开源软件可以进行二次开发。一般公司都是使用开源软件
提供数据库服务的软件,apache tomcat nginx mysql SQL.server DB2 Oracle 是关系型数据库RDBMS
按照一定的规则进行存储数据
Redis Mongodb Memcached 是非关系型数据库 NOSQL
不需要按照一定的规则进行存储数据
商业软件是要付费
mysql 的特点————用c语言开放
开源并能够跨平台 ——
unix linux Windows
支持主流的编程语言————unix linux windows
可移植好——系统只有c的运行环境就可以运行 LNMP LAMP Mysql Mongodb
数据库的服务通常都是跟网站的服务一起使用
数据库都是存储什么样的数据??
现在主流网站 购物网站 游戏网站 视频网站 论坛网站 金融网站
一。安装mysql
mysql 和mraidb 是同一款数据库软件 请看mysql的起源和发展
如果安装了mariadb 就不能安装mysql 就会出现冲突 都是提供mysql 服务的 ,配置文件和存储数据目录都是一样
如果mariadb-server 应该先把服务给先停了服务,才可以进行卸载操作
[root@host50 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@host50 ~]# yum list | grep -i mariadb
mariadb-libs.x86_64 1:5.5.56-2.el7 @anaconda/7.4
mariadb.x86_64 1:5.5.56-2.el7 dev
mariadb-bench.x86_64 1:5.5.56-2.el7 dev
mariadb-devel.i686 1:5.5.56-2.el7 dev
mariadb-devel.x86_64 1:5.5.56-2.el7 dev
mariadb-libs.i686 1:5.5.56-2.el7 dev
mariadb-server.x86_64 1:5.5.56-2.el7 dev
mariadb-test.x86_64 1:5.5.56-2.el7 dev
tar -xf 和 tar -xvf 的区别 就是后者可以显示解包的过程
[root@host50 ~]# rpm -e --nodeps Cariadb-server
————强制卸载软件以及依赖包
安装装不上的原因
配置文件和参数 数据存储目录??
[root@host50 ~]# rm -rf /etc/my.cnf
[root@host50 ~]# rm -rf /var/lib/mysql
[root@host50 ~]# rpm -e --nodeps mariadb-server
[root@host50 ~]# rpm -e --nodeps mariadb-libs
警告:文件 /etc/my.cnf: 移除失败: 没有那个文件或目录
[root@host50 ~]# rpm -qa | grep -i mariadb
安装mysql 软件包的步骤
[root@host50 ~]# rpm -Uvh mysql-community-*.rpm
————U是升级安装
警告:mysql-community-client-5.7.17-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
perl(JSON) 被 mysql-community-test-5.7.17-1.el7.x86_64
需要————提示依赖关系
[root@host50 ~]# rpm -q perl-JSON
未安装软件包 perl-JSON
[root@host50 ~]# yum -y install perl-JSON
[root@host50 ~]# rpm -Uvh mysql-community-*.rpm ————U是升级安装。
警告:mysql-community-client-5.7.17-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-common-5.7.17-1.e################################# [ 9%]
2:mysql-community-libs-5.7.17-1.el7################################# [ 18%]
3:mysql-community-client-5.7.17-1.e################################# [ 27%]
4:mysql-community-server-5.7.17-1.e################################# [ 36%]
5:mysql-community-devel-5.7.17-1.el################################# [ 45%]
6:mysql-community-embedded-5.7.17-1################################# [ 55%]
7:mysql-community-embedded-devel-5.################################# [ 64%]
8:mysql-community-test-5.7.17-1.el7################################# [ 73%]
9:mysql-community-libs-compat-5.7.1################################# [ 82%]
10:mysql-community-embedded-compat-5################################# [ 91%]
11:mysql-community-minimal-debuginfo################################# [100%]
这个百分比是前面的已经完成了一部分
升级安装的好处??
1.可以增加新功能 2.解决旧版本的漏洞的问题和BUG 3.增加稳定性和对系统的支持 4.安装的体积更大,需要更多的磁盘 5.运行时需要暂用更多的CPU和内存
[root@host50 ~]# rpm -qa | grep mysql
————查看已经安装的软件清单
mysql-community-client-5.7.17-1.el7.x86_64
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64
mysql-community-test-5.7.17-1.el7.x86_64
mysql-community-common-5.7.17-1.el7.x86_64
mysql-community-devel-5.7.17-1.el7.x86_64
mysql-community-libs-compat-5.7.17-1.el7.x86_64
mysql-community-libs-5.7.17-1.el7.x86_64
mysql-community-embedded-5.7.17-1.el7.x86_64
mysql-community-embedded-compat-5.7.17-1.el7.x86_64
mysql-community-embedded-devel-5.7.17-1.el7.x86_64
mysql-community-server-5.7.17-1.el7.x86_64
修改配置文件
[root@host50 ~]# ls /var/lib/mysql——默认的数据存储的目录
没有启动,目录为空
启动服务
root@host50 ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
[root@host50 ~]# systemctl start mysqld————启动速度比较慢,因为要创建目录
[root@host50 ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active
(running) since 二 2018-07-10 10:45:58 CST; 24s ago
Docs: man:mysqld(8)
[root@host50 ~]# ls /var/lib/mysql ————首次创建就会创建这些目录
auto.cnf ib_buffer_pool mysql public_key.pem
ca-key.pem ibdata1 mysql.sock server-cert.pem
ca.pem ib_logfile0 mysql.sock.lock server-key.pem
client-cert.pem ib_logfile1 performance_schema sys
client-key.pem ibtmp1 private_key.pem
[root@host50 ~]# systemctl enable mysqld————开机自动开起
继续安装下一台服务器
查看服务信息
端口信息————3306
进程信息——mysqld
ps aux | grep httpd???
[root@host50 ~]# ps -C mysqld————查看进程
PID TTY TIME CMD
4240 ? 00:00:00 mysqld
[root@host50 ~]# systemctl stop mysqld——停掉服务
[root@host50 ~]# ps -C mysqld————再次查看进程
PID TTY TIME CMD
[root@host50 ~]# ss -ntulp | grep mysqld ————查看端口状态
tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=4529,fd=18))
mysql 的相关的参数
1.主配置文件 /etc/my.cnf
2.数据目录
/var/log/mysql
3.端口 3306
4.进程 mysqld
5.传输协议 tcp
6.所属者 mysql
7.所属组 mysql
把数据存储到数据库服务器上的过程
1.连接数据库服务器
1.1用命令行来连接 mysql -u用户名 -h ip -p 密码
第一次是用初始密码连接
[root@host50 ~]# ls /var/log/mysqld.log
/var/log/mysqld.log
[root@host50 ~]# grep password /var/log/mysqld.log
————首次创建数据库的密码保存在日志上
2018-07-10T02:45:38.706224Z 1 [Note] A temporary password is generated for root@localhost:
*-ZPqB
密码都是随机生成
[root@host50 ~]# mysql -hlocalhost -uroot -p'*-ZPqB
没有创建用户时,只能通过本机进入数据库,只有root用户
连接数据库的工具
1.mysql 指令 : 环境切换 看状态 退出控制
2.sql指令 : 数据库的定义 查询 操纵 授权语句
注意事项
指令不区分字母大少写 (密码 变量值除外)
每一条的SQL指令是以;进行结束或者分割
不支持Tab键 ,纯手打输入
\c可以废除当前操作错误的命令
常用的SQL环境管理命令
DDL 的数据定义语句:creat alter drop
DML的数据操作语句 : insert update dalete
DCL的数据控制语句 : grant revoke
DTL 的数据事物语句 : commit rollback sovepoint
库管理命令
show databases; 展示库
creat database 库名; 创建库
use 库名; 进入库
select database (); 展示所在的当前库
show tables; 显示已有的表
drop database 库名; 删除库
数据库的命名规则
可以使用数字 字母 下划线
但是不可以使用纯数字
区分大小写,具有唯一性
不可以使用指令关键字 和特殊字符
表的管理命令
新建指定名称的表
-CREATE TABLE 库名。表名
字段名1 字段类型(宽度) 约束条件;
字段名2字段类型(宽度) 约束条件;
.......
字段名N字段类型(宽度) 约束条件;