1.什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的,可以理解为是建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。所谓“数据库”也就是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

常用的数据库模型有:层次型数据库、网状型数据库、关系型数据库、对象型数据库等;关系型数据库在我们的日常生活中最为常见。

**关系型数据库:**即建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加•科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。

mariadb 常见命令 mariadb如何使用_mariadb 常见命令


关系型数据库一般包括:数据库名、数据表名、表结构、表数据等等;
关系型数据库数据的特点:一一对应。

2.了解数据库中的结构化查询语言及一些简单的语句结构:

DML(Data Manipulation Language)数据操纵语言:就是我们经常用到的SELECT、UPDATE、INSERT、DELETE等,主要是用来对数据表中的数据进行一些操作。
 例如:
 SELECT 列名称 FROM 表名称;
 UPDATE 表名 SET 属性 WHERE 条件;
 INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…);
 DELETE FROM 表名称 WHERE 列名称 = 值;
 DDL(Data Definition Language)数据库定义语言:其语句包括动词create、alter和drop,在数据库中创建、修改和删除数据库对象。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上。
 例如:
 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, … );
 ALTER TABLE table_name; ALTER COLUMN column_name datatype;
 DROP TABLE 表名称; DROP DATABASE 数据库名称;
 DCL(Data Control Language)数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括grant和revoke等语句,grant语句用来给用户获取权限许可,revoke语句用来撤销用户的权限许可。3.了解MariaDB:

mariadb 常见命令 mariadb如何使用_mariadb 常见命令_02


MariaDB数据库是MySQL的一个分支,成立于2009年,它是由MySQL的创始人Michael Widenius主导开发,MariaDB名称来自Michael Widenius的女儿Maria的名字,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN公司,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品,主要由开源社区在维护,采用GPL授权许可,MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:
1)数据和表定义文件(.frm)是二进制兼容的;
2)所有客户端API、协议和结构都是完全一致的;
3)所有文件名、二进制、路径、端口等都是一致的;
4)所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变;
5)mysql-client包在MariaDB服务器中也能够正常运行;
6)共享的客户端库与MySQL也是二进制兼容的。

也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。

与 MySQL 相比较,MariaDB 更强的地方在于:Maria 存储引擎、PBXT 存储引擎、XtraDB存储引擎、FederatedX 存储引擎、更快的复制查询处理、线程池、更少的警告和bug、运行速度更快、更多的 Extensions(More index parts, new startup optionsetc)、更好的功能测试、数据表消除、慢查询日志的扩展统计、支持对 Unicode 的排序。

4.Linux操作系统下MariaDB的部署:
4.1系统默认已经安装该数据库,如果没有安装,使用以下命令进行安装:

[root@localhost ~]# yum install mariadb -y

4.2启动数据库服务:

[root@localhost ~]# systemctl restart mariadb.service

4.3如果启动数据库服务时出现问题,通过以下命令查看服务状态并查找错误:

[root@localhost ~]# systemctl status mariadb –l

4.4添加防火墙允许策略:

[root@localhost ~]# firewall-cmd --permanent --add-service=mysql
Success

4.5重新加载防火墙的配置:

[root@localhost ~]# firewall-cmd --reload 
Success

4.6初始化数据库:

[root@localhost ~]# mysql_secure_installation 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):               //输入root用户当前的密码,初次初始化的情况下直接回车进行下一步
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y                               //是否改变root用户的密码
New password:                                                   //输入新密码
Re-enter new password:                                          //再次输入新密码
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y                                 //是否删除匿名用户,生产环境中一般建议删除
 ... Success!   

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y                          //是否禁止root用户远程登录
 ... Success!  

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y                 //是否删除测试数据库
 - Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y                          //是否现在重新加载权限表
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

4.7登录数据库系统(下边列出三种方式进行登录):

[root@localhost ~]# mysql -uroot –predhat
[root@localhost ~]# mysql -uroot -p
Enter password:
[root@localhost ~]#mysql -u root -h localhost –p  [DATABASE NAME]    //通过指定用户登录到指定数据库

4.8查看当前系统上有多少个数据库:

MariaDB [(none)]> show databases;                    //注意MariaDB中的命令以;结束

mariadb 常见命令 mariadb如何使用_MySQL_03


4.9退出数据库系统:

MariaDB [(none)]> quit;                             //注意退出命令可以省略;结束标记
Bye
MariaDB [(none)]> exit
Bye

4.10创建一个数据库:

MariaDB [(none)]> create database luntan;
Query OK, 1 row affected (0.00 sec)

4.11使用某个数据库:

MariaDB [(none)]> use luntan;
Database changed
MariaDB [luntan]>

4.12查看当前数据库中有多少张数据表:

MariaDB [luntan]> show tables;

4.13查看数据表的表结构:

MariaDB [mysql]> desc user;

4.14查看某张表中有哪些数据:

MariaDB [mysql]> select * from user;

4.15当前数据库下创建数据表:

MariaDB [mysql]> create table person (
    -> number int(11),
    -> name varchar(20),
    -> birth DATE );
Query OK, 0 rows affected (0.01 sec)

4.16查询创建的数据表的表结构:

MariaDB [mysql]> desc person;

mariadb 常见命令 mariadb如何使用_MySQL_04


4.17数据表中插入相关数据:

MariaDB [mysql]> insert into person (number,name,birth) values (1,'likui',19700606);
Query OK, 1 row affected (0.00 sec)

4.18查询表内容:

MariaDB [mysql]> select *  from person;

mariadb 常见命令 mariadb如何使用_mysql_05


4.19修改数据表中的内容:

MariaDB [mysql]> update person set name='wusong' where number=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

4.20删除数据表中的内容:

MariaDB [mysql]> delete from person where number=1;
Query OK, 1 row affected (0.00 sec)

5.MariaDB中用户的管理和访问权限的控制:
5.1创建数据库登陆用户:

MariaDB [mysql]> create user haha@localhost identified by 'haha';

5.2查看当前使用哪个用户进行操作:

MariaDB [(none)]> select user();

5.3查看当前用户目前所使用的数据库:

MariaDB [(none)]> select database();

5.4退出重新使用haha用户登录数据库:

[root@mail ~]# mysql -u haha -phaha

5.5查看haha用户可以访问的数据库:

MariaDB [(none)]> show databases;

5.6给haha用户一张表的权限:

MariaDB [mysql]> grant select,update,insert,delete on mysql.person to haha@localhost;

5.7退出数据库系统,并使用haha用户重新登陆:

测试查询的权限:
MariaDB [mysql]> select * from person;
测试插入的权限:
MariaDB [mysql]> insert into person (number,name,birth) values (2,"luzhishen",19700606);
测试更新数据的权限:
MariaDB [mysql]> update person set name="gaoqiu" where number=2;
测试删除数据的权限:
MariaDB [mysql]> delete from person where number=2;

5.8使用root用户登录,改变haha用户的权限:

MariaDB [mysql]> revoke select on mysql.person from haha@localhost;
使用select语句进行查询表,确认权限已被禁用:
MariaDB [mysql]> select * from person;

6.数据库的备份与还原操作(最最最基础的备份还原方式):

[root@localhost ~]# mysqldump -u root -p mysql > /mysql_backup_20190226.dump  //-p用来指定要备份的数据库,通过>来将要备份的数据库定向输出到当前服务器的/目录下

使用root用户登录数据库,删除person表:

[root@localhost ~]# mysql -uroot -h localhost -p mysql

查询person表:

MariaDB [mysql]> select * from person;

删除person表:

MariaDB [mysql]> drop table person;

退出数据库,进行还原操作:

[root@localhost ~]# mysql -u root -p mysql < /mysql_backup_20190226.dump      //通过<反向输出来实现还原操作