MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB之于MySQL,类似于CentOS之于Redhat。由于Oracle拥有MySQL的名字和海豚商标,基于此如果各公司继续用Mysql可能存在法律纠纷,于是纷纷开始选择兼容性好而且研发力量强大的MariaDB。
一、数据库中的数据结构 与SQL语言
1、数据库简介及数据结构
数据库系统是一个用于数据查询管理的软件,数据库系统查询的是以特定格式存储数据的数据库。所以数据库系统可以操作的数据库并不止一个。数据库下的数据整合单位为表,表中每行为一个元组,也就是一个实体属性的集合,表中每一列为每个实例的形同属性值的集合。
MariaDB属于关系型数据库系统(RDBS),即用实体的一些属性信息,构成一个集合(元组),多个实体的具有相同属性集元组构成一张列表,表内在通过域,键,属性和元组上的约束条件与其他表建立关联关系。
数据要遵守的约束 constraint:
●主键:在众多列中有一个列(或多个列)被标识为特殊列,此列中属性的值在众多实体相同的属性中具有唯一性,该列中的值被称为主键。主键的值不能为空。且一张表中只能有一个主键。
●唯一键:在众多列中有一个(或多个列),每个值都能表示出该元组,也就是说该列的值具有唯一性。该列中的元素可以成为唯一键
●外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
●检查:字段值在一定范围内
2、 SQL语言:
SQL语言可以理解成向服务端提问的语言,SQL语言按照功能可以分为几种子语言:
数据定义语言(DDL):创建和管理数据库,包括创建修改表,定义索引,管理约束条件。DDL操作对象为数据库内部的对象。
数据操纵语言(DML):查询和更新数据库中的数据,用于添加,删除,更新,查询。DML的操作对象是表的内部数据。而不会涉及到表的定义,结构的修改。
数据控制语言(DCL) :对用户的权限控制
数据查询语言(dql):对数据库查询
SQL语言查询的的操作可以分为:
限制(选择):挑选出符合条件的行。返回与查询语句中的条件(断言相匹配的元组)
投影:只返回元组中相关的列,即返回元组中相关的属性
联结:返回与联结条件相匹配的元组,
联结条件可以分为:
有条件联结(条件联结)
无需满足任何条件(笛卡尔积)
二、MariaDB安装及初始化配置
1、安装:
Centos 7 yum仓库默认就有mariadb安装包直接安装即可。
yum groupinstall mariadb mariadb-server -y
#安装mariadb客户端和服务端程序
systemctl start mariadb
#启动程序
systemctl
enable
mariadb
#设为开机自启动
|
安装完成后需进行初始化设置:
1
2
3
4
5
6
7
8
|
mysql_secure_installation
#直接执行初始化命令,会弹出交互配置信息
Enter current password
for
root (enter
for
none):
#初次进入密码为空,直接回车
New password:
#输入要为root用户设置的数据库密码。
Re-enter new password:
#重复再输入一次密码。
Remove anonymous
users
? [Y
/n
] y
#删除匿名帐号
Disallow root login remotely? [Y
/n
] n
#是否禁止root用户从远程登录,安全起见应禁止,这里为做实验方便这里不禁止。
Remove
test
database and access to it? [Y
/n
] y
#是否删除test数据库,想留着也随意
Reload privilege tables now? [Y
/n
] y
#刷新授权表,让初始化后的设定立即生效
|
使用mysql -u “用户名” -p 指明用密码登录,回车输入密码即可。可输入help;查看使用帮助。
tips:-u用用户名之间可用空格也可不用空格。
-p不指定密码可回车输入密文密码,如想明文输入与密码间不能用空格。
例如:
mysql -uroot -p12345678
|
使用set password = password('密码') ; 设定密码
使用select user(); 查看当前登录用户 tips:① mariadb中命令都要以";" 结尾,表示命令输入完毕。
三、管理用户及授权
生产中数据库管理系统需要多部门协同管理数据库内容,所以需要创建出多个数据库专用的帐户,然后再进行合理的权限分配,以达到提升工作效率的目的。
1、创建用户的语法为:CREATE USER 用户名@主机名 IDENTIFIED BY '密码';
tips: 数据库中用户名全称由两部分组成,"用户名"@"登陆终端(可以是IP地址)"。
2、给用户授权使用GRANT命令,授权命令常用格式如下:
命令 | 作用 |
GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名 | 对某个特定数据库中的特定表单给予授权。 |
GRANT 权限 ON 数据库.* TO 用户名@主机名 | 对某个特定数据库中的所有表单给予授权。 |
GRANT 权限 ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予授权。 |
GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名 | 对某个数据库中的所有表单给予多个授权。 |
GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予全部授权,(谨慎操作)。 |
权限管理
mysql对于权限这块有以下限制:
all privileges:除grant外的所有权限 select:仅查权限 select,insert:查和插入权限 ... usage:无访问权限 alter:使用alter table alter routine:使用alter procedure和drop procedure create:使用create table create routine:使用create procedure create temporary tables:使用create temporary tables create user:使用create user、drop user、rename user和revoke all privileges create view:使用create view delete:使用delete drop:使用drop table execute:使用call和存储过程 file:使用select into outfile 和 load data infile grant option:使用grant 和 revoke index:使用index insert:使用insert lock tables:使用lock table process:使用show full processlist select:使用select show databases:使用show databases show view:使用show view update:使用update reload:使用flush shutdown:使用mysqladmin shutdown(关闭MySQL) super:使用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆 replication client:服务器位置的访问 replication slave:由复制从属使用
对于数据库及内部其他权限如下:
数据库名.* 数据库中的所有 数据库名.表 指定数据库中的某张表 数据库名.存储过程 指定数据库中的存储过程 *.* 所有数据库
对于用户和IP的权限如下:
用户名@IP地址 用户只能在改IP下才能访问 用户名@192.168.1.% 用户只能在改IP段下才能访问(通配符%表示任意) 用户名@% 用户可以再任意IP下访问(默认IP地址为%)
1、查看权限:
show grants for '用户'@'IP地址'
2、授权
grant 权限 on 数据库.表 to '用户'@'IP地址'
3、取消授权
revoke 权限 on 数据库.表 from '用户名'@'IP地址'
授权实例如下:
grant all privileges on db1.tb1 TO '用户名'@'IP' grant select on db1.* TO '用户名'@'IP' grant select,insert on *.* TO '用户名'@'IP' revoke select on db1.tb1 from '用户名'@'IP'
四、创建及管理数据库、表单
MariaDB数据库管理系统最重要的作用之一就是能够管理数据库及表单内容,一个数据库中可以存放多个数据表,数据表是数据库中最实质的内容。
常用管理数据库及表单命令:
用法 | 作用 |
CREATE database 数据库名称。 | 创建新的数据库。 |
DESCRIBE 表单名称; | 描述表单。 |
UPDATE 表单名称 SET attribute=新值 WHERE attribute > 原始值; | 更新表单中的数据。 |
USE 数据库名称; | 指定使用的数据库。 |
SHOW databases; | 显示当前已有的数据库。 |
SHOW tables; | 显示当前数据库中的表单。 |
SELECT * FROM 表单名称; | 从表单中选中某个记录值。 |
DELETE FROM 表单名 WHERE attribute=值; | 从表单中删除某个记录值。 |
五、数据库备份与恢复
1、数据库备份
mysqldump命令用于备份数据库数据,格式为:“mysqldump [参数] [数据库名称],其中参数与mysql命令大致相同,-u参数用于定义登陆数据库的用户名称,而-p参数代表密码提示符。例如接下来把linuxprobe数据库内容导出成一个文件保存到root管理员用户的家目录中
2、数据库恢复
上一步中已将数据库备份,这次我们来尝试删除数据库并恢复
数据恢复方法如下:
1
|
mysql -u root -p linuxprobe <
/root/linuxprobeDB
.dump
|