MySql数据库
数据库是按照一定的结构来组织、存储和管理数据的仓库。为了方便数据的管理和存储,按照特定的规律存储在磁盘上。
常见的数据语言:
(1)DDL数据定义语言:对于数据库内部的对象进行创建、删除、修改等等。
(2)DML数据操纵语言:对于数据库当中的表记录操作,主要有表的插入、更新、删除、查询。
(3)DCL数据控制语言:用来去设置或者更改数据库用户或者角色权限语句,典型操作(grant\deny\revoke)。
MYSQL目前属于甲骨文公司旗下的产品。MYSQL是开源型、免费的、小型关系型数据库管理系统,是单进程、多线程、支持多用户,基于C/S的关系型数据库管理系统。
Centos7已经使用了mariadb替代了默认的Mysql,它是mysql的一个分支,主要是由开源社区来进行维护,完全兼容了Mysql。
[root@controller ~]# rpm -qa|grep mariadb
mariadb-libs-10.3.20-3.el7.0.0.rdo1.x86_64
mariadb-10.3.20-3.el7.0.0.rdo1.x86_64
mariadb-config-10.3.20-3.el7.0.0.rdo1.x86_64
mariadb-server-10.3.20-3.el7.0.0.rdo1.x86_64
mariadb-common-10.3.20-3.el7.0.0.rdo1.x86_64
mariadb-errmsg-10.3.20-3.el7.0.0.rdo1.x86_64
字符集,是系统支持多个字符的集合。常见的字符集ASCII、GBK等。
1.添加数据库的字符集
[root@controller ~]# vi /etc/my.cnf.d/mariadb-server.cnf
//找到[mysqld]字段
[mysqld]
character-set-server=utf8
character-set-server=utf8
collation-server=utf8
skip-character-set-client-handshake
init_connect=”SET collation_connection = utf_unicode_ci”
注意:如果在/etc/my.cnf.d/中没有mariadb-server.conf文件,我们可以去编辑/etc/my.cnf,并在[mysqld]字段下添加字符集内容。
[root@controller ~]# vi /etc/my.cnf.d/mysql-clients.cnf
[client] //如果没有client字段自行添加
default-character-set=utf8
[root@controller ~]# systemctl restart mariadb
[root@controller ~]# mysql -uroot -p000000
MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mariadb/charsets/ |
+--------------------------+------------------------------+
8 rows in set (0.103 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.001 sec)
- MySQL在OpenStack中的作用
Openstack中除了dashboard之外,都需要用到数据库环境,在搭建Openstack时系统会为每一个项目创建一个单独的数据库,包括一些独立的用户名和密码,各数据库之间没有任何联系,所以数据库服务是Openstack的基础公共组件。
(1)用户的管理
[root@controller ~]# mysql -uroot -p000000
MariaDB [(none)]> create user test@'localhost' identified by 'password'; //直接创建用户
MariaDB [(none)]> grant all on *.* to test1@'localhost' identified by 'password'; //直接创建一个用户test1并授权
MariaDB [(none)]> grant all on *.* to test2@'%' identified by 'password'; //创建用户test2,并且授予用户test2远程登陆权限
MariaDB [(none)]> grant all on *.* to test3@'localhost' identified by 'password' with grant option; //创建用户test3,授予用户超级管理员权限,此用户可以授权给其他的用户
[root@controller ~]# mysql -uroot -p000000
MariaDB [(none)]> select user(); //查看当前登录的用户
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
MariaDB [(none)]> drop database [DB Name]; //删除数据库
MariaDB [(none)]> show grants for 'test2'@'%'; //查询test2用户的远程访问权限
+---------------------------------------------------------------------------------------------------------------+
| Grants for test2@% |
+---------------------------------------------------------------------------------------------------------------+
GRANT ALL PRIVILEGES ON *.* TO 'test2'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
+---------------------------------------------------------------------------------------------------------------+
MariaDB [(none)]> revoke all on *.* from test2@'%'; //回收test2用户的所有权限
Query OK, 0 rows affected (0.000 sec)
3.表的基本操作
主要包括对表的增、删、改、查
(1)对表的增操作
添加一些数据。为表中所有的字段添加数据,语法:
INSERT INTO 表名(字段名1,字段名2,....)VALUES(值1,值2,......)
例: INSERT INTO user(host,user)values(“localhost”,”test”);
(2)对于表的删除操作
删除数据。语法:DELETE FROM 表名 WHERE条件表达式
删除部分数据:删除指定的部分数据,需要使用WHERE的字句来指定删除记录的条件。
举例:删除上一步骤向user表中插入的含test的一行记录
DELETE FROM user where user=”test”;
删除全部的数据:如果DELETE语句中没有使用WHERE的语句,则将会对表中所有的记录全部删除。语法:DELETE FROM 表名
(3)对于数据表的改操作
所谓的数据表的改操作,实际上就是对于数据表的更新.
语法:UPDATE 表名 SET 字段名1=值1,字段名2=值2,WHERE条件表达式
举例:将user表中user值为test的记录,将其host字段的值改为”%”
UPDATE user SET host=”%” WHERE user=”test”;
(4)对于数据表的查操作
数据的查询.SELECT语句是MYSQL中最基本的语句,主要的作用在与查询表中的数据.
语法1:SELECT 列名称 FROM表名称,作用:查询指定数据表中的指定字段.
语法2:SELECT * FROM 表名称,作用查询指定数据表中的所有字段.
4.数据库的其他常规操作
(1)查询系统当前的时间
MariaDB [(none)]> select now();
+---------------------+
| now() |
+---------------------+
| 2022-10-13 03:04:35 |
+---------------------+
MariaDB [(none)]> select sysdate();
+---------------------+
| sysdate() |
+---------------------+
| 2022-10-13 03:05:07 |
+---------------------+
(2)查看MySQL的默认的存储引擎信息
MariaDB [(none)]> show variables like "storage_engine";
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| storage_engine | InnoDB |
+----------------+--------+
(3)查看MySQL支持的存储引擎
MariaDB [(none)]> show variables like "have%";
+----------------------+----------+
| Variable_name | Value |
+----------------------+----------+
| have_compress | YES |
| have_crypt | YES |
| have_dynamic_loading | YES |
| have_geometry | YES |
| have_openssl | YES |
| have_profiling | YES |
| have_query_cache | YES |
| have_rtree_keys | YES |
| have_ssl | DISABLED |
| have_symlink | DISABLED |
+----------------------+----------+
MongoDB数据库
是C++语言编写的,基于分布式文件存储的开源的数据库系统.它跟MYSQL的区别在于,Mongodb中的一条记录就是一个文档,是一个数据结构,这个数据结构是由字段和值对组成的.它的文档与JSON对象比较类似.字段的值有可能包含其他文档,数组以及文档数组.
特性:易用性,易扩展性,除了扩展之外的独特功能,性能
(1)易用性
Mongodb是一个面向文档的数据库,而不是关系型数据库,不采用关系型的原因在于能够获得更好的扩展性..
(2)易扩展性
在目前的带宽增长和存储器价格下降的背景下,需要存储的数据量很大,甚至铲除了很多数据库的处理能力.由于需要存储的数据量不断增长,管理人员会面临一个问题:应该如何去扩展数据库,两大类的数据库扩展方式(横向扩展和纵向扩展).mongodb则采用了横向扩展,内置的面向文档的数据模型使它很容易的在多台服务器之间进行数据分割,它能够自动的处理跨集群的数据和负载,自动重新分配文档,将用户的请求路由到正确的机器上.
(3)独特的功能
除了能够创建\读取\更新和删除数据之外,它提供了不断扩展的功能.
索引\聚合\特殊的集合类型\文件存储
(4)性能
最大的目标就是提供卓越的性能,mongodb把尽可能多的内存用作缓存,视图为每次查询自动选择正确的索引,总而言之各方面的设计都在保持高性能.
使用场景:网站数据\缓存\大尺寸,低价值的数据\高伸缩的场景\用于对象以及JSON数据的存储.