数据库介绍与linux下MariaDB安装及基础命令

数据库介绍

1.什么是数据库?
简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据
更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只是存放的东西不通,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有一个初步了解了。
数据库诞生于1950年,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

数据库的种类
按照早起的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库,网络式数据库和关系型数据库,而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库
关系型数据库
(1)关系型数据库的由来
虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺,用户在对这两种数据库进行存取时,仍然需要明确数据库的存储结构,支出存取路径,而关系型数据库就可以很好的解决这些问题
(2)关系型数据库介绍
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(既二维格式表)。例如宏福教育某一期的学生关系就是一个二元关系,在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表上,通过对这些关联表格分类,合并,连接或选取等运算来实现数据的管理。
关系型数据库诞生距今已经有40多年了,从理论产生发展到现实产品,例如:大家最常见的mysql和oracle数据库,oracle在数据库领域里上升到了霸主的地位,形成每年高达数百亿美元的庞大产业市场,而mysql也是不容忽视的数据库,以至于被oracle中心收购了。
(3)关系型数据库表之间的关系列举

非关系型数据库(nosql)
非关系型数据库也称之为nosql数据库,请注意,nosql的本意是“not only SQL”,指的是非关系型数据库,而不是“no SQL”的意思,因此nosql的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
随着互联网的兴起,超大规模和高并发量的微博,微信,SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据库IO瓶颈,性能瓶颈都难以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的的功能特异化的数据库产品,NoSQL类的数据库就是在这样的情景中诞生并得到了非常迅速的发展
NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面,NoSQL数据存储不需要固定的表结构,通常也不存在连接操作,在大数据存取上具备关系型数据库无法比拟的性能优势,该术语(NoSQL)在2009年初得到了广泛的认同
google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL,一些开源的NoSQL体系,如
Redis, mongodb也逐渐的越来越受到各大中小型企业的欢迎和追捧
非关系型数据库的种类
键值(key-value)存储数据
键值数据库就类似传统语言中使用的哈希表,可以通过key来添加,查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性
键值(key-value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据,key/value模型对于IT系统来说的优势在于简单,易部署,高并发
#重点

常见的数据库
非关系型数据库(nosql):mongodb,redias
关系型数据库:oracle,db2,sqlserver,mysql,mariadb

Mariadb发源
MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。
MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
在Oracle控制下的MySQL开发,有两个主要问题:1. MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。2. MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。Widenius有一个ppt,用数据比较了收购之前和之后新版本的发布速度。有很多bugfix和新的feature,都没有及时加入到发布版本之中。

表(Table) 特定类型数据的结构化列表
表是结构化的文件,用来存储特定类型的数据,表可能存储客户清单,产品目录,或者其他信息列表。
存储在表中的数据是一种类型的数据或一个列表,绝对不应该将顾客的列表信息和订单的列表信息存储到同一个数据库表中,
这样做会使随后的数据检索和访问变得困难,代替的解决方案是创建两个表,在每个表中存储其相应的列表信息。
数据库中每个表都有一个名字来标识它,
并且在一个数据库中表名是唯一的

列( Column): 表中的一个字段,表由一列或多列构成,列中存储表的一部分信息
每一列存储一条特定信息。例如在客户表中,一列存储客户编号,另一列存储客户姓名,
而地址,城 市,州,邮政编码存储在各自的列中。数据库中每一列都有相应的数据类型,
数据类型定义了该列可以存储哪种类型的数据。例如,如果某列要存储数字,就应该使用numeric数据类型。
如果某列存储日期,文本,提示,金额等 就需要用恰当的数据类型来指定。
行( Row):表中的一条记录
表中的数据存储在行里,把表当做类似电子表格的网格,在网格中垂直的列就是表的列 ,水平的行就是表的行。
例如,客户表可能在每一行存储一个客户,表中行的数量也就是表中记录的条数。
注: NULL 在SQL中NULL用来指代空值( no value),如果一列被定义为允许为NULL,
当插入或者更新行时,可以忽略该列的数据。

mariadb安装
[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
Gpgkey = http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

忘记mysql的root密码
vim /etc/my.conf.d/server.conf
添加skip-grant-tables
mysql -uroot | mysql -u root -p

查看数据库信息
show databases;
#查看数据库

mysqladmin --version
#查看数据库版本

show create database mysql;
#查看创建数据库状态

use db_name
#使用哪个库

修改数据库
create database test03
#创建数据库

drop database test03
#删除数据库

alter database 库名 default character set=utf8;
#修改数据库默认字符集

用户管理
select user();
#查看当前用户

grant select,create,update,delete on test03.grade to ‘aaa’@’%’;
#给aaa添加查询,创建,更新,删除的权限(在任意主机上)

grant all privileges on test03.grade to ‘aaa’@’%’;
#给aaa赋予test03数据库的grade表最高权限(在任意主机上)

show grants for ‘aaa’;
#查看aaa用户的权限(root用户)

revoke all privileges on . from ‘aaa’@’%’;
#收回aaa在任意数据库的任意表的最高权限

show grants
#查看权限

详解过程:
1、查询安装的yum源
cd /etc/yum.repos.d/

2、创建一个源,名为mariadb.repo,里面内容直接拷贝。

vim /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

3、安装MariaDB源,记得大写,小写就会安装以前版本。189M有点大。
装完之后,自动添加环境变量,命令就可以用了。

yum install MariaDB

4、格式化,用于生产环境设置。
先设置密码,然后一路回车。
(创建输入数据库密码)

mysql_secure_installation

下方提示为成功。

首先是设置密码,会提示先输入密码
Enter current password for root (enter for none):<–初次运行直接回车
设置密码
Set root password? [Y/n] <– 初次运行直接回车
New password: <– 是否设置root用户密码,输入y并回车或直接回车
Re-enter new password: <– 设置root用户的密码
其他配置
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <是否禁止root远程登录,回车
Remove test database and access to it? [Y/n] <–是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
初始化MariaDB完成,接下来测试登录
mysql -uroot -ppassword
完成。

5、登录数据库

mysql -uroot -proot 这个直接把密码输入了root

或者

mysql -uroot -p这个在下面输入密码

6、看看有什么数据库
show databases;

7、创建数据库test
create database test;

8、查看数据库属性(Latin1 */)指拉丁文,一会要改成utf8
show create database test;

9、查看数据库,数据库里面的表都不同
show databases;

10、none是没有在任何数据库,用use加数据库名进入到数据库
use test

11、更改字符集
alter database test character set utf8;

show create database test;用这个命令再次查看下有没有改过来。

12、连接第三方软件Navicat(给用户%的权限即可连接)
use mysql
select user,password,host from user;
update user set host=’%’ where host=‘127.0.0.1’; (修改用户远程登陆权限)
flush privileges;
select user,password,host from user;

12、test数据库创建一个表
create table students (name varchar(20), age int);

在第三方工具里面在表里输入信息,点击下方的对号

select * from students;
添加并更新成功。

13、查看数据库
show databases;

14、直接创建一个数据库,并编辑为utf8字符格式
create database test1 charset utf8;

改变字符集
show create database test1;用这个命令再次查看下有没有改过来。

15、删除数据库
删除之前查看一下
show databases;
删除命令
drop database test1;
删除之后再看一下有没有
show databases;

16、查看当前用户
select user();

17、查看用户权限
use mysql 进MySQL数据库
查看这个表,
select host,user,password from user;
宿主机,数据库寄生在这个主机上。宿主机登录就是本地登录。

host:%允许用第三方登录和本地登录。root用户的host不是%的话,第三方软件无法登录。
user:用户名
password:密码

18、创建数据库新用户
create user user2 identified by ‘user2’;
创建一个用户叫 user2 它的密码是‘user2’

19、登录新用户
mysql -uuser2 -puser2
退出用户
exit

20、在新用户里查看,缺少数据库,因为没有权限
show databases;

21、查看当前用户,现在是最高权限root用户
select user();

22、用户权限设置
grant all privileges on . to user2;(给用户user2所有权限)
grant all privileges on test.* to user2;(*换成test单独设置权限)
privileges权限的意思
on是在哪个数据库的权限
. 所有数据库的所有表, *左边的库名,*右边的是表

23、回收权限
revoke回收的意思
revoke all privileges on . from user2;(所有表的所有权限被回收)

show databases;查询,没有权限了
(需在新创建的用户环境查询)

24、root用户查看别的用户的权限。
show grants for user2;

25、查看自己权限
show grants;

grant select,create,update,delete on test03.grade to ‘aaa’@’%’;
#给aaa添加查询,创建,更新,删除的权限(在任意主机上)
test03.grade 和*.* 一个意思
@’%'带不带都一样

grant all privileges on test03.grade to ‘aaa’@’%’;
#给aaa赋予test03数据库的grade表最高权限(在任意主机上)

show grants for ‘aaa’;
#查看aaa用户的权限(root用户)

revoke all on . from ‘aaa’@’%’;
#收回aaa在任意数据库的任意表的最高权限

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值