linux自带mariadb初始密码,Linux之MariaDB基础总结(一)

news/2024/7/3 8:52:41

Linux之MariaDB基础总结(一)

一、MariaDB简介

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,被视为开源数据库MySQL的替代品。MariaDB名称来自Michael Widenius的女儿Maria的名字。

MariaDB 是一个采用 Maria 存储引擎的MySQL分支版本,提供一些新的特性或对MySQL一些功能增强:Maria存储引擎、PBXT存储引擎、XtraDB存储引擎、FederatedX存储引擎、更快的复制查询处理、线程池、更少的警告和bug、运行速度更快、更多的 Extensions (More index parts, new startup optionsetc)、更好的功能测试、数据表消除、慢查询日志的扩展统计、支持对 Unicode 的排序

简要概述SQL核心组件作用

连接池:认证、线程重用、连接数限制、内存检查、缓存

SQL接口:DDL, DML, 关系型数据库的基本抽象

parser: 查询转换、对象权限检查

优化器:访问路径,性能相关的统计数据

caches和buffers:与存储引擎自身相关的I/O性能提升工具

存储引擎:MyISAM、InnoDB(变种:XtraDB)、Memory、Merge、Federated、CSV、Archive、Blackholl、Aria、SphinxSE、TokuDB

4a8deffe4ac8d236800c7e29954eb152.png

二、MariaDB安装(yum安装)

按照之前准备工作,这里测试安装的操作系统为CentOS Linux release 7.1.1503,默认启用了firewall防火墙和SELINUX防火墙,这里先做关闭。注意使用centos7和centos7以下的版本使用的命令有所不同。

关闭firewall:

[root@localhost ~]#systemctl stop firewalld.service #停止firewall

[root@localhost ~]#systemctl disable firewalld.service #禁止firewall开机启动

关闭SELINUX:

[root@localhost ~]#vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

[root@localhost ~]#setenforce 0 #使配置立即生效

1、yum安装MariaDB

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

ec6194b9302b2c899d99be80074dbd79.png

05d009dd3df45e254e023875e4e3be67.png

2、启用MariaDB服务,覆盖my.cnfw文件并查看监听端口是否正常

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

[root@localhost ~]#cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可

69607f44ea0b7e77a4fa716c35d9edfa.png

3、设置ROOT密码(注:如果不设置密码默认密码为空)

[root@localhost ~]# mysqladmin -u root password "root"

4、登陆mysql

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

三、MariaDB程序类别及命令选项(注:命令使用几乎和MySql一致)

客户端程序常用选项

-u:指定登陆用户

-h:指定登陆主机

-p:指定登陆密码

-P:指定端口,默认监听端口:tcp/3306

-D:指定连接后默认使用的数据库

-H:指定产生html输出

-X:指定产生xml输出

客户端交互模式下常用命令

MariaDB [(none)]> help #列出所有命令

MariaDB [(none)]> \? #相当于help

MariaDB [(none)]> \c #取消命令执行

MariaDB [(none)]> \q #退出

MariaDB [(none)]> \! #运行shell命令

MariaDB [(none)]> \s #显示服务器端状态信息

命令行快捷键编辑

Ctrl+a: 快速移动光标至行首

Ctrl+e: 快速移动光标至行尾

Ctrl+w: 删除光标之前的单词

Ctrl+u: 删除行首至光标处的所有内容

Ctrl+y: 粘贴使用Ctrl+w或Ctrl+u删除的内容

四、MariaDB数据类型及属性修饰符

常见数据类型

字符型:CHAR、VARCARH、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOG、LONGBLOB

修饰符:NULL(允许为空)、NOT NULL(不允许为空)、DEFAULT 'string'(默认值,不适用于TEXT)、CHARACTER SET 'set'(设定字符集)、COLLATION 'collation'(设定字符集排序规则)、SHOW COLLATION(查看可用排序规则)、DEFAULT(不用于BLOB类型)

字符有通配符: %(匹配任意长度的任意字符)、_(匹配任意单个字符)

整型:TINYINT、SMALLINT、MEDIUMINT 、INT、BININT

修饰符:UNSIGNED(无符号)、NULL、NOT NULL、DEFAULT、AUTO_INCREMENT(自动增长)

特殊要求:非空,且必须是主键或惟一键

浮点型:FLOAT、DOUBLE

修饰符:NOT NULL、NULL、DEFAULT、UNSIGNED

布尔型:没有专用布尔型,其是TINYINT(1)的别名

日期时间型:DATE、TIME、DATETIME、TIMESTAMP、YEAR(2)、YEAR(4)

修饰符:NULL、NOT NULL、DEFAULT VALUE

内建类型:ENUM(枚举,表示仅能从给出的选项选择其中一个);如:ENUM('string1','string2'),SET(集合, 表示能使用给出的元素组合成字符串),如:SET('a','b','c')

修饰符:NULL、NOT NULL、DEFAULT ''

五、SQL(Structure Query Language)结构查询语言组成部分

DDL(Data Definition Language,数据定义语言:定义或改变表的结构、数据类型、表之间的链接和约束等):CREATE, DROP, ALTER

DML(Data Manipulation Language,数据操纵语言:数据库里的数据进行操作):SELECT, INSERT, UPDATE,DELETE

DCL(Data Control Language,数据控制语言:用来设置或更改数据库用户或角色权限的语句):GRANT, REVOKE,DENY

1)DDL操作

创建数据库:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name

删除数据库:DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

修改数据库:ALTER {DATABASE | SCHEMA} [IF EXISTS] db_name

练习:创建数据库mydb01,删除该mydb01数据库

d94b36258701e5ac4e19f01d4014e07f.png

2)DML操作

插入数据:INSERT INTO

第一种:INSERT INTO tb_name [(clo1,col2……)] {VALUES|VALUE} (val1,val2)

第二种:INSERT INTO tb_name SET col1=val1,col2=val2,……

第三种:INSERT INTO tb_name SELECT clause

30e0f6a8fa44c7de3b44d215839b17de.png

98c4858d6bce85a1e5bbc976b1560e1a.png

查询数据:SELECT [ALL | DISTINCT | DISTINCTROW ]

[FROM table_references

[WHERE where_condition]

[GROUP BY {col_name | expr | position}

[ASC | DESC], ... [WITH ROLLUP]]

[ORDER BY {col_name | expr | position}

[ASC | DESC], ...]

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

a0d5b46962ebd375af31ae886eff0b0b.png

更新数据:UPDATE tb_name SET col_name1=val1,col_name2=val2,……

UPDATE [LOW_PRIORITY] [IGNORE] table_reference

SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...

[WHERE where_condition]

[ORDER BY ...] :在限定所修改的行数前先做下排序

[LIMIT row_count] :限定所修改的行数据

注:UPDATE通常情况下,必须要使用WHERE子句,或者使用LIMIT限制要修改的行数。

e8b8495d215d5c340e7341a17be3c82e.png

删除数据: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name

[WHERE where_condition]

[ORDER BY ...]

[LIMIT row_count]

83d13ebd7e312c0a8611302cc63794d8.png

3)进行DCL操作,先了解一下权限相关基础内容

A、权限类别分类:库级别、表级别、字段级别、管理类、程序类

B、管理类权限关键字

CREATE TEMPORARY TABLES:创建临时表,该表保存在内存中

CREATE USER:创建用户

FILE:在服务器上能够读取和写入文件

SUPER:杂项管理类的命令

SHOW DATABASES:用户是否能执行SHOW DATABASES命令,默认就赋予了

RELOAD:能够使用FLUSH和RESET命令

SHUTDOWN:关闭服务器

REPLICATION SLAVE:授权用户能够有复制的权限

REPLICATION CLIENT:向服务器查询该主机有哪些客户端

LOCK TABLES:显示施加表锁

PROCESS:查看线程列表,命令为SHOW PROCESSLIST;

C、库级别和表级别权限关键字

ALTER:修改表

ALTER ROUTINE:修改存储历程,包括存储过程和存储函数

CREATE:创建表和库

CREATE ROUTINE:创建存储过程和存储函数

CREATE VIEW:创建视图

DROP:删除表和库

EXECUTE:执行存储过程和存储函数

GRNAT OPTION:把自己获得的权限转赠给他人

INDEX:创建和删除索引

SHOW VIEW:查看一个视图是怎么被创建的

D、数据操作(表级别)权限关键字

SELECT:查询

INSERT:插入

UPDATE:更改

DELETE:删除

E、字段级别权限关键字:

SELECT(col1,...)

UPDATE(col1,...)

INSERT(col1,...)

F、所有权限:

ALL [PRIVILEGES]

DCL操作命令

GRANT:授权命令

GRANT priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [TABLE|FUNCTION|PROCEDURE] priv_level

TO username@hostname [IDENTIFIED BY 'password'], [username@hostname [],...]

[REQUIRE SSL]   //必须基于SSL连接访问

[WITH with_option ...]

priv_level:

*     //所有

| *.*   //所有库的所有对象

| db_name.*   //指定库的所有对象

| db_name.tbl_name  //指定库的指定表

| tbl_name  //指定表

| db_name.routine_name  //指定库的存储历程,包括存储过程和存储函数

with_option:

GRANT OPTION  //将自己的权限转赠给别人

| MAX_QUERIES_PER_HOUR count   //每小时执行最多查询请求的个数

| MAX_UPDATES_PER_HOUR count  //每小时执行最多更新的个数

| MAX_CONNECTIONS_PER_HOUR count  //每小时最多建立连接次数

| MAX_USER_CONNECTIONS count   //使用同一个帐号同时最多连接几个窗口

练习:添加用户bobo,密码为bobo,在test数据库中新建表SOO,授权该用户对该表为插入权限,插入一行数据测试,并且查询验证是否有权限

abe58c33de03d0578f4736409f93844a.png

ddaf65a4dfed764ca22c1d18513c5641.png

4078133212e75cc5cd1a95bdcfa7a0df.png

4992e83e56ed04aad5d4c332800e31d7.png

注:授权某用户权限需要在root用户权限

REVOKE:收回授权

REVOKE priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [object_type] priv_level

FROM user [, user] ...

REVOKE ALL PRIVILEGES, GRANT OPTION

FROM user [, user] ...

练习:收回test数据库表SOO插入权限

86a97dbe831aac89506d9fd289a758c9.png

注:取消指定的权限,若想取消bobo用户的所有权限可以使用ALL选项:

MariaDB [(none)]> REVOKE ALL  ON test.* FROM 'bobo'@'192.168.%.%';

Query OK, 0 rows affected (0.00 sec)


http://www.niftyadmin.cn/n/1998689.html

相关文章

爸爸的一句话:你能有多少东西沉淀下来

1987年,我大学毕业就进了出版社。开始的两三年,算是混日子,因为工作量太少了,完全缺乏刺激,所以就花了大量的时间去学习太极拳和八卦掌等,因为非常投入,也算小有功底。在练拳上,算是…

稳定的软件

软件的复杂度发展到今天的程度,每个参与软件生产的人对自己产品的质量可能多少都会有些担心。至今还没有理论能够系统的预估和保证软件产品的质量(可能永远不会发展出这样的理论,因为软件作为人类思想的固定形式,对其质量的系统化…

Jmeter之乱码 (一)

Jmeter历史版本下载: http://archive.apache.org/dist/jmeter/binaries/ Jmeter3.0接口测试脚本POST请求主体中的中文无法正确显示,现象如下: 解决方案: 修改{JMETER_HOME}\bin\jmeter.properties文件中的默认显示字体&#xff0c…

解决Vue axios post请求,后台获取不到数据问题

最近做项目,需要用到vue,后台是php,第一次使用axios进行请求,本以为同ajax一样,会很简单,但是结果往往不让人满意啊,get请求很简单,这里就不说了,主要说下 post请求方式。 使用axios进行post请求…

当爱情沉淀的时候

当爱情沉淀的时候,轻轻地摇一摇相信,我们永远都不会后悔,选择了彼此作为自己生命中最真诚的爱人。 相信,我们谁都不会忘记,我们邂逅时的美丽,约会时的浪漫,拥抱时的甜蜜。可是,生活…

长大

偶尔看到一篇文章,想起了自己的成长过程中的感受,于是就写下了这篇随感 很多的时候,因为我们还很年轻所以我们总是显得非常的高傲。很多的时候觉得自己可以傲视一切,觉得自己空前绝后。可是,一个不经意的挫折…

COMMON INTERVIEW QUESTIONS

1. What do you see yourself doing five years from now? 2. What motivates you to put forth your greatest effort? 3. In what ways do you think you can make a contribution to this company? 4. In what kind of a work environment are you most comfortable? 5.…

浮躁与静心

看到一篇文章让我想起了“浮躁和静心”,而这些让我想起了我在昌平园生活。那是我的本科“黄金时代”。 其实,以前我一直都感觉自己是一个比较的浮躁的人,我深深的记得2002年来到北京的时候,我感觉了我一身的疲惫&…