安装:yum -y install maridb-server maridb
查看是否开启
代码:[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# systemctl status mariadb
#查看端口
代码:[root@localhost ~]# netstat -utnlp
#查看进程
[root@localhost ~]# ps -aux | grep mariadb
mysql 2149 0.1 4.5 968920 84572 ? Sl 11:09 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root 2190 0.0 0.0 112824 980 pts/0 S+ 11:14 0:00 grep --color=auto mariadb
MariaDB配置文件路径
主配置文件:/etc/my.cnf
#MySQL也是这个,所以说MariaDB完全兼容性!
[root@localhost ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
客户端的连接
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
授权
MariaDB [(none)]> grant all privileges on *.* to 'root'@'%'identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)刷新一下
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
数据库之间的区别
数据库有多种类型,常见的有关系型数据库、非关系型数据库(如文档型、键值对型、列存储型、图数据库等),它们之间的区别如下:
数据模型
- 关系型数据库:以表格形式存储数据,由行和列组成,支持事务处理和复杂的 SQL 查询,如 MySQL、Oracle 等。
- 非关系型数据库
- 文档型数据库:以文档形式存储数据,如 JSON 或 BSON 格式,数据结构较为灵活,适合存储半结构化数据,如 MongoDB。
- 键值对数据库:通过键值对来存储和检索数据,具有极高的读写性能,常用于缓存和实时数据处理,如 Redis。
- 列存储数据库:将数据按列存储,而不是按行存储,适合处理大规模的数据分析和数据仓库应用,如 Cassandra。
- 图数据库:以图结构来存储和表示数据,由节点、边和属性组成,用于处理复杂的关系和图形数据,如 Neo4j。
数据一致性
- 关系型数据库:遵循 ACID 原则(原子性、一致性、隔离性、持久性),确保数据在事务处理中的一致性和完整性。
- 非关系型数据库:一些非关系型数据库更注重数据的高可用性和分布式处理,采用最终一致性模型,如 Cassandra、DynamoDB 等。在这种模型下,数据在分布式系统中可能会存在短暂的不一致,但最终会达到一致状态。
扩展性
- 关系型数据库:传统的关系型数据库在扩展性方面存在一定的限制,尤其是在处理大规模数据和高并发场景时。扩展往往意味着升级硬件,如增加 CPU、内存或存储容量,即纵向扩展(Scale Up)。虽然也有分布式关系型数据库解决方案,但实现和管理相对复杂。
- 非关系型数据库:非关系型数据库通常具有更好的扩展性,能够轻松地通过添加更多的节点来处理增长的数据量和并发请求,即横向扩展(Scale Out)。例如,MongoDB 可以通过添加副本集和分片来实现水平扩展,Cassandra 也支持自动的数据分布和扩展。
查询能力
- 关系型数据库:支持强大的 SQL 查询语言,能够进行复杂的关联查询、聚合查询等,对于处理结构化数据和复杂的业务逻辑非常有效。
- 非关系型数据库
- 文档型数据库:查询能力相对灵活,支持基于文档结构的查询,但通常不如关系型数据库的 SQL 查询强大和复杂。例如,MongoDB 提供了丰富的查询操作符,可以根据文档的字段和值进行查询。
- 键值对数据库:查询主要基于键进行,非常快速和简单,但对于复杂的查询支持有限。
- 列存储数据库:支持对列数据的高效查询和聚合操作,适用于数据分析场景,但对于复杂的关联查询支持不如关系型数据库。
- 图数据库:拥有专门的图查询语言,如 Cypher(Neo4j),用于处理复杂的图结构查询,能够高效地查询节点之间的关系和路径。
应用场景
- 关系型数据库:适用于对数据一致性要求高、有复杂事务处理需求、结构化数据存储和查询的场景,如银行系统、电子商务订单处理、企业资源规划(ERP)系统等。
- 非关系型数据库
- 文档型数据库:常用于内容管理系统、博客平台、移动应用后端等,存储和处理半结构化数据,数据结构灵活多变。
- 键值对数据库:适用于缓存、实时数据处理、分布式锁、消息队列等场景,能够快速读写数据。
- 列存储数据库:主要用于大数据分析、数据仓库、实时数据处理等场景,能够高效处理大规模的列数据。
- 图数据库:用于社交网络分析、知识图谱、推荐系统、网络拓扑分析等领域,处理复杂的关系数据。
关系型数据库
- 优点
- 数据一致性高:严格遵循 ACID 原则,确保事务的原子性、一致性、隔离性和持久性,能有效保证数据的准确性和完整性,适用于对数据一致性要求极高的场景,如金融交易系统。
- 强大的查询功能:支持 SQL 语言,可进行复杂的关联查询、嵌套查询、聚合查询等,能方便地对数据进行各种操作和分析,满足多样化的查询需求。
- 数据结构规范:以表格形式存储数据,由行和列组成,数据结构清晰、规范,易于理解和管理,适合存储结构化程度高的数据。
- 事务处理能力强:能够很好地支持事务处理,确保一系列操作要么全部成功,要么全部失败,避免数据出现部分更新的不一致情况。
- 缺点
- 扩展性有限:在处理大规模数据和高并发请求时,扩展能力相对较弱,通常需要通过升级硬件来提升性能,即纵向扩展,成本较高且扩展能力有上限。
- 数据模型不够灵活:数据结构一旦确定,修改结构可能会比较复杂,需要进行繁琐的表结构修改和数据迁移操作,不适合数据结构频繁变化的场景。
- 不适合非结构化数据存储:对于非结构化或半结构化数据,如文本、图片、视频等,存储和处理效率较低,需要进行额外的处理和转换。
非关系型数据库
- 优点
- 高扩展性:能够轻松实现横向扩展,通过添加更多的节点来处理不断增长的数据量和并发请求,具有良好的可扩展性和弹性,能适应大规模分布式系统。
- 数据模型灵活:数据格式多样,如文档型、键值对型等,数据结构不固定,可根据实际需求灵活调整,便于存储和处理半结构化或非结构化数据。
- 高并发读写性能好:一些非关系型数据库如键值对数据库 Redis,在处理高并发的读写请求时表现出色,能快速响应大量的并发操作,适用于实时性要求高的场景。
- 易于部署和维护:架构相对简单,部署和维护成本较低,不需要像关系型数据库那样进行复杂的配置和管理,能降低运维难度和成本。
- 缺点
- 数据一致性难以保证:部分非关系型数据库采用最终一致性模型,在数据分布和复制过程中可能会出现短暂的不一致,对于一些对数据一致性要求严格的场景不太适用。
- 查询能力相对较弱:虽然一些非关系型数据库提供了特定的查询语言或操作符,但总体而言,查询功能不如关系型数据库的 SQL 强大和灵活,对于复杂的关联查询和多条件查询支持有限。
- 事务支持有限:大多数非关系型数据库对事务的支持不如关系型数据库完善,不适合需要大量复杂事务处理的场景。