mariadb(一)基础
一、数据库介绍

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。

- sql语句主要分为:
- DQL:数据查询语言,用于对数据进行查询,如select
- DML:数据库操作语言,对数据库进行增删改查,如:insert,update,delete
- TPL:事物处理语言,对事物进行处理,包括begin,transaction,commit,rollback
- DCL:数据控制语言,如grant,revoke #权限管理
- DDL:数据定义语言:进行数据库,表的管理等,如create,drop #
- CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
- sql是一门特殊的语言,专门用来操作关系型数据库
- 不区分大小写
5. 表:
特定类型数据的结构性列表
表是结构化的文件,用来存储特定类型的数据,表可能存储客户清单,产品目录,或者其他信息列表。
存储在表中的数据是一种类型的数据或一个列表,绝对不应该将顾客的列表信息和订单的列表信息存储到同一个数据库表中,
这样做会使随后的数据检索和访问变得困难,代替的解决方案是创建两个表,在每个表中存储其相应的列表信息。
数据库中每个表都有一个名字来标识它,
并且在一个数据库中表名是唯一的
[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=
yum -y install mariadb-server 下载并安装10.3版本的服务端
2)重启并自启mariadb
systemctl restart mariadb && systemctl enable mariadb
3)进行简单配置:
mysql_secure_installation
Enter current password for root (enter for none):<–初次运行直接回车 设置密码 Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码 其他配置 Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车 Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车, Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车 Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车 初始化MariaDB完成,接下来测试登录
4)mysql -uroot -ppassword (root:用户名 password:密码)
成功则进入mariadb界面。
*如果忘记密码怎么办?
vim /etc/my.cnf.d/server.cnf
将skip-grant-tables 添加到【server】下或者其他模块下。保存退出
mysql -uroot -p 或 mysql -uroot
**库
create database 库名; #自定义库名
use 库名; #进入指定库
show create database mysql; #查看字符集
mysql | CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET latin1 */ | alter database mysql default character set=utf8; #将字符类型从拉丁文改为utf-8
show create database mysql; #再次执行查看发现字符类型已经更改
drop database 库名; #删除库
show databases; #默认和创建的数据库全部显示
**表
create table schools; #创建shcool(表结构) 注意table不能加s,组成部分为(字段,数据类型,以及约束)
create table students (id int unsigned not null auto_increment primary key, name varchar(20),
age tinyint unsigned default 0,high decimal(5,2),gender enum('man','women','secreate'));
MariaDB [mysql]> desc students;
+--------+--------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | NULL | |
| gender | enum('man','women','secreate') | YES | | NULL | |
+--------+--------------------------------+------+-----+---------+----------------+
desc school; #查看表的结构(数据类型、结构等)
show create table 表名; 查看表的信息,和结构不同。注意后面没有 from 数据库 这一选项。
drop table school; 删除表(如果是在自己创建的用户下,得要有drop得权限)
drop 字段名; 删除字段
show tables from 库名; #查看库下的所有表(不指定则显示当前库的表)
select * from 数据库.表名; #查看表的所有字段(注意表的字段内容如果为空则不会显示创建的字段) *可以根据自己需要查看不同字段
**用户
select user(); #查看当前用户,()不能少
create user mama@'localhost' identified by '123'; #创建用户mama并设置密码和只允许在这台主机上登陆。
grant all on *.* to mama@'%' identified by '123'; #授予mama所有数据库下的所有表的所有权限,并且允许第三方登陆。/all指代所有权限,*.*前面的*代表所有数据库,后面的*代表所有表,'%'表示允许第三方登陆
例:
grant select,delete on mysql.user to mama@'localhost' identified by '123'; #授予mama用户在mysql数据库的user表上的删除和查看的权限,并且只能当前主机登陆。
show grants for mama; #查看mama的权限
如果出现报错:
#The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
MariaDB [zz]> show grants for mama;Ctrl-C -- exit!
#这是因为设置了免密登陆,注释skip-grant-tables并且重启则可以查看了。或者登陆root用户去查看mama的权限。
+--------------------------------------------------------------------------------------------------------------+
| Grants for mama@% |
+--------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, DELETE ON *.* TO 'mama'@'%' IDENTIFIED BY PASSWORD '*E6CC90B878B948C35E92B003C792C46C58C4AF40' |
revoke select on *.* from mama; #s收回mama用户的select权限
drop user 用户名; #删除用户名,或者
Delete FROM user Where User='test' and Host='localhost';
如果报错:Access denied for user 'mama'@'localhost' (using password: YES),则是因为在mama用户下无法查看和收回、授权给自己,只能通过root办到。
#如果需要重新设置密码?
vim /etc/my.cnf.d/server.cnf
将skip-grant-tables 添加到【mysql】模块下。保存退出,重启
免密进入mysql数据库,然后
mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root"; #密码和用户自己根据需求设置
mysql> flush privileges;
mysql> quit
****有时候会出现重置密码也无法登陆的情况,并且不用密码却可以登陆,这是因为数据库里存在空用户。这样解决:
select * from mysql.user where user='';
查询如果有,然后通过
use mysql;
delete from user where user = '';
删除了多余的空白账户, 然后,通过
flush privileges;
重载一次权限表,最后用
service mysqld restart
重启mysql服务,问题得到解决,至此mark一下!
Tip:
、一定要记住重启mysql服务,否则不会生效,自己就是因为没有重启msyql导致一直得不到解决!
、msyql的用户表在mysql数据库中的user表中,主要字段有host,user,password等,作为mysql用的管理的主要表。
注意:表结构数据库结构的修改都用alter。
三、mariadb数据类型
MariaDB数据类型可以分为数字,日期和时间以及字符串值。
使用数据类型的原则:够用就行,尽量使用范围小的,而不用大的
- 常用的数据类型
- 整数:int, bit
- 小数:decimal #decimal(5,2),五位小数取两位
- 字符串:varchar, char #varchar是动态
- 日期时间:date, time, datetime
- 枚举类型(enum) #
- 约束
- 主键primary key:物理上存储的顺序
- 非空not null:此字段不能为空
- 唯一unique:此字段不允许重复
- 默认default:当不填写此值时会使用默认值,如果填写则已填写为准
- 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
mariadb(一)基础的更多相关文章
- MariaDB——数据库基础与sql语句
数据库介绍 什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据 ...
- Spring Boot 2 + MariaDB + HikariCP基础实例
在已有SpringBoot工程中基于MariaDB驱动使用HikariCP 连接池 环境:SpringBoot2.0.2 .MariaDB驱动版本2.2.3.HikariCP2.7.8 1.在Spri ...
- mariadb数据库基础知识及备份
数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理 ...
- mariadb数据库基础
1.数据库介绍 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据 ...
- Centos 7.2天兔(Lepus 3.8)数据库监控系统部署
天兔(Lepus 3.8)数据库监控系统部署 转载自:https://blog.csdn.net/m0_38039437/article/details/79613260 一.安装LAMP基础环境 首 ...
- CentOS7.2下部署zabbix4.0
整体部署采用centos7+php+apache+mariadb 基础环境配置优化 1. 关闭防火墙 [root@monitor_53 ~]$ systemctl stop firewalld [ro ...
- CentOS7通过YUM安装MySQL5.6
检查系统中的 MySQL,并删除现有的 Mysql 软件包. $ rpm -qa | grep mysql 这里如果没有返回任何东西证明没有安装任何 MySQL 相关的应用.如下图: 由于 cento ...
- Mysql的基础使用之MariaDB安装
初学mysql的小白,首次写博客,为了能让自己记得更加深刻,也是以一种小白的角度交代初学者的经历和困难,也算是记录自己成长的步伐吧 我首次用mysql是在ubuntu上 ,现在用的是linux 中的R ...
- MariaDB基础详解
数据库结构模型分类 1.层次模型 2.网状模型 3.关系模型 关系模型的组成部分 二维关系 表 row column 索引 index 视图 view (只包含固定字段,不包含其他字段) 关系型数据库 ...
随机推荐
- Nginx环境下设置zblog伪静态方法
Apache的环境非常简单.可以点击创建 .htaccess就可以了 Nginx环境下设置伪静态,并没有那个一键创建的按钮.只看到了这样的一个提示. 别的环境未测试.宝塔面板中 反正我是没找到. 宝塔 ...
- [APIO2019] [LOJ 3145] 桥梁(分块+并查集)(有详细注释)
[APIO2019] [LOJ 3145] 桥梁(分块+并查集)(有详细注释) 题面 略 分析 考试的时候就感觉子任务4是突破口,结果却写了个Kruskal重构树,然后一直想怎么在线用数据结构维护 实 ...
- ./configure 配置文件时出错checking for g++... no
checking for g++... no checking for c++... no checking for gpp... no checking for aCC... no 缺少C++编译器 ...
- CentOS 5.5编译安装lnmp
如果是安装Centos6.5记得Perl是必选的,否则无法安装VMWare Tools!!!!切记 如果出现make错误需要安装其他软件,装好后 make clean make install ...
- 在学习linux磁盘管理期间学习的逻辑卷管理笔记
LVM(逻辑分区)的创建顺序:物理分区-物理卷-卷组-逻辑卷-挂载. 物理卷(Physical Volume,PV):就是指硬盘分区,也可以是整个硬盘或已创建的软RAID,是LVM的基本存储设备. 卷 ...
- jmeter 线程数—请求数详解
一个性能测试请求负载是基于一个线程组完成的.一个测试计划必须有一个线程组.测试计划添加线程组非常简单.在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选 ...
- HTML5-video(播放暂停视频;打开关闭声音;进度条)
<!DOCTYPE html> <html> <head> <title>HTML5-video(播放暂停视频:打开关闭声音:进度条)</titl ...
- javascript基础总汇
## javaScript是什么:1.JavaScript 运行在客户端(浏览器)的编程语言2.用来给HTML网页增加动态功能3.用来给HTML网页增加动态功能.4.Netscape在最初将其脚本语言 ...
- Java中的集合详解及代码测试
1:对象数组 (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. 2:集合(Collection) (1)集合的由来 我们学习的是Java -- 面向对象 ...
- 一些关于C#发送邮件的代码
1.命名空间 using System.Net.Mail; 2.创建一个MailMessage类的对象 MailMessage mail = new MailMessage(); MailMessag ...