mariadb
- 数据库的种类
比较流行的数据库模型有三种,分别为层次式数据库,网络式数据库和关系型数据库,而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库
- 关系型数据库
虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺,用户在对这两种数据库进行存取时,仍然需要明确数据库的存储结构,支出存取路径,而关系型数据库就可以很好的解决这些问题
- 关系型数据库介绍
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(既二维格式表)。例如宏福教育某一期的学生关系就是一个二元关系,在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表上,通过对这些关联表格分类,合并,连接或选取等运算来实现数据的管理。
关系型数据库诞生距今已经有40多年了,从理论产生发展到现实产品,例如:大家最常见的mysql和oracle数据库,oracle在数据库领域里上升到了霸主的地位,形成每年高达数百亿美元的庞大产业市场,而mysql也是不容忽视的数据库,以至于被oracle中心收购了。
- 非关系型数据库(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(基于Windows),mysql,mariadb
mariadb数据库
mariadb安装(这种安装方式可以安装最新版本的mariadb,yum直接安装可能安装到较低版本的mariadb)
# cd /etc/yum.repos.d/ 然后新建一个repo文件 # vim 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 #yum clean all #yum makecache #yum -y install MariDB-server(注意:此处需要大写)
#systemctl start mariadb
#mysql -uroot|mysql -u root -p #进入mysql 如果有密码在-p后输入
注;进入数据库mysql后输入命令后都要加‘;’
查看数据库:
#mysqladmin --version #查看数据库版本
1 show databases; #查看数据库 2 show create database db_name; #查看某个数据库创建时的状态 3 alter database db_name default character set=utf8; #修改数据库默认字符集 4 use db_name; #选择要使用的数据库名字 5 show tables; #查看表 6 create database db_name; #新建一个数据库 7 drop database db_name; #删除数据库 8 show create table table_name; #查看创建表的状态
用户管理(以下前边带#的命令是在linux命令行下执行)
select user(); #查看当前用户
当忘记mysql的root密码 #vim /etc/my.cnf.d/server.cnf 添加skip-grant-tables #跳过密码 #systemctl restart mariadb #重启服务 #mysql -uroot use mysql; update user set password=password('root') where user='root'; #将root的密码改为root flush privileges; #刷新更改的密码 然后使用quit退出到linux命令行模式,vim进入到配置文件中,将之前加的skip-grant-tables注释掉,然后重启服务。 #mysqladmin -uroot -proot password 123 #修改密码,将刚设置的root修改 #mysql -uroot -p123 #此种方法改密码后无法在mysql环境中改密码
create user cjk identified by 'cjk'; #新建一个用户为cjk密码为cjk #如果新建用户无法登陆可能的原因是默认的两个localhost用户是空的,删除两个用户后重启服务,然后登陆新用户。新建用户,用户名有特殊符号时使用反撇号。 select host,user,password from mysql.user; #查看用户信息 delete from user where user=''; 删除用户,单引号之间输入要删除的用户名 grant select,create,update,delete on test03.grade to 'aaa'@'%'; #给aaa添加查询,创建,更新,删除的权限,此处权限根据需要设定为其中一种或几种(在任意主机上),在赋予权限之前用户的权限为最低。 grant all privileges on *.* to 'aaa'@'%'; #第一个*表数据库名字,第二个*表所有权限,to给哪个用户,%表示两种登录模式都行,登录模式包括mysql主机localhost(本地登录)和第三方登录。 第三方登录是在Windows上使用工具Navicat Premium通过ip登录主机 flush pricileges; #刷新权限 grant all privileges on test03.grade to 'aaa'@'%'; #给aaa用户赋予test03数据库的grade表最高权限(在任意主机上) show grants for 'aaa'; #查看aaa用户的权限(root用户) revoke all on *.* from 'aaa'@'%'; #收回aaa在任意数据库的任意表的最高权限 show rants; #查看权限(用root查看)
revoke all on *.* from 'aaa'@'%';
#收回aaa在任意数据库的任意表的最高权限