1. 程式人生 > >Linux之MariaDB基礎總結(一)

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

wKiom1Y--RSzd8hZAAP55LRzNxY071.jpg

二、MariaDB安裝(yum安裝)

    按照之前準備工作,這裡測試安裝的作業系統為CentOS Linux release 7.1.1503,預設啟用了firewall防火牆和SELINUX防火牆,這裡先做關閉。注意使用centos7和centos7以下的版本使用的命令有所不同。

    關閉firewall:

    [[email protected] ~]#systemctl stop firewalld.service #停止firewall

    [[email protected] ~]#systemctl disable firewalld.service #禁止firewall開機啟動

    關閉SELINUX:

    [[email protected] ~]#vi /etc/selinux/config

    #SELINUX=enforcing #註釋掉

    #SELINUXTYPE=targeted #註釋掉

    SELINUX=disabled #增加

    :wq! #儲存退出

    [[email protected] ~]#setenforce 0 #使配置立即生效

    1、yum安裝MariaDB

    [[email protected] ~]#yum install mariadb mariadb-server

wKioL1Y--H6j6stSAAMPENUlCPY926.jpg

wKiom1Y--DvS-LltAAHqaKcPwls791.jpg

    2、啟用MariaDB服務,覆蓋my.cnfw檔案並檢視監聽埠是否正常

    [[email protected] ~]#systemctl start mariadb.service

    [[email protected] ~]#cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

    注意:如果/etc目錄下面預設有一個my.cnf,直接覆蓋即可

wKioL1Y--K2ySnlDAAFB-HSnxdI662.jpg

    3、設定ROOT密碼(注:如果不設定密碼預設密碼為空)

    [[email protected] ~]# mysqladmin -u root password "root"

    4、登陸mysql

    [[email protected] ~]# 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資料庫

wKiom1Y--ULxXUv3AAJnYxyEwY4906.jpg

    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

wKiom1Y--V_Tw1tRAAEfuHZRNq0039.jpg

wKioL1Y--aXQBINoAAF6uTm2gy0590.jpg

    查詢資料: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}]

wKiom1Y--XWzBgU2AAEYCOkTZ7Y954.jpg

    更新資料: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限制要修改的行數。

wKiom1Y--Yaw0ESYAAHE9SB_hW0301.jpg

    刪除資料: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name

               [WHERE where_condition]

                   [ORDER BY ...] 

                   [LIMIT row_count] 

wKiom1Y--Z2A5kzjAAFwY1UiM2M074.jpg

    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 [email protected] [IDENTIFIED BY 'password'], [[email protected] [],...]

        [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,授權該使用者對該表為插入許可權,插入一行資料測試,並且查詢驗證是否有許可權

wKiom1Y--ciiUA7RAAB0ptB_eXg684.jpg

wKioL1Y--g2Al7N-AACo7H6khnI713.jpg

wKiom1Y--crSLJcQAAHw8Q4nq8k306.jpg

wKioL1Y--g-j-MbCAAJHVDwYyKk556.jpg

    注:授權某使用者許可權需要在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插入許可權

相關推薦

LinuxMariaDB基礎總結

一、MariaDB簡介     MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社群在維護,被視為開源資料庫MySQL的替代品。MariaDB名稱來自Michael Widenius的女兒Maria的名字。     MariaDB 是一個採用 Maria

LinuxUbuntu環境配置

sogou home ade -- linux下 安裝 linux64 x64 inux Linux下的搜狗輸入法安裝: 1.搜狗官網下載Linux64bit版本文件,默認在/home/username/Downloads目錄下。 2.cd /home/username/D

python初步——基礎總結

python 自動化運維一. 第一個HelloWorld 1. 在linux 執行 (python2.7)[[email protected]/* */ ~]# vim test.py #!/usr/bin/env python

謝煙客---------LinuxBash基礎特性2

linux總結Linux之哲學思想 一切皆文件 避免交互,實現Bash編程 文本編程命令實現配置 組合小程序完成復雜任務總結 過程式編程 解釋執行 字符和數值存儲的區別 shebang -> cpu ->解釋器 數據類型 變量類型

ArcGIS Engine開發基礎總結

目錄 reader style mov 空間 圖層 不能添加 頁面 制圖 標準Engine功能 地圖瀏覽 地圖制作 數據查詢 數據分析 及 所有的開發控件 —MapControl, PageLayout, Toolbar, TOC, ArcRea

Java 面試基礎總結

tor rac 時有 線程安全 lec getclass ron 接口 add 1、九種基本數據類型的大小以及它們的封裝類 java提供的九種基本數據類型:boolean、byte(1)、char(2)、short(2)、int(4)、long(8)、float(4)、do

linux菜鳥基礎學習

導致 erp redhat ado water 切換用戶 學習 方法 x86 熟悉linux環境 1.虛擬機的控制虛擬機是在真機上建立的,為何要建立虛擬機,主要是防止由於錯誤操作導致不可挽回的結果。[kiosk@foundation0 Desktop]$ rht-vmctl

Js基礎總結

JavaScript中的變數型別有哪些? 一. 值型別(原始型別),值型別是儲存再棧中的簡單資料。也就是說,它們的值直接儲存在變數訪問的位置。一共包含6種,分別是:字串(String) 數值(number)布林值(boolean) null undefined Symbol(ES6新增)

自學Linux系統的小總結

Iinux命令組成:命令字,命令選項引數(選項),命令操作引數(引數) 命令格式: Command 【option】  【arguments】 Command :命令名  命令程式名   command不可獲取  其他可省略

AndroidActivity系列總結--Activity概述

本文內容建立 Activity實現使用者介面在清單檔案中宣告 Activity啟動 Activity啟動 Activity 以獲得結果結束 Activity管理 Activity 生命週期實現生命週期回撥儲存 Activity 狀態處理配置變更協調 Activity 是一個應用元件,使用者可與其提供的螢幕進行

c#WPF基礎知識點

X名稱空間詳解 X是指對映到xml名稱空間時給它取的名字,(如果用的是字母y,那就是“y名稱空間”) X名稱空間的成員(x:Class,x:Name) X名稱空間中包含這解析xaml語言相關的類 x:Name frameworkElement是所有的wpf控制元件的基

Java基礎總結物件,類,屬性,方法

物件,類,屬性,方法的解析: 以人為例。 類:人可以看作一個類。 物件:具體到什麼人(黃種人,白種人,黑種人,中國人等等)這就可以看作是物件,可以根據需求繼續往下區分,比如 男人 女人。 屬性:比如說黃種人的特點:黃面板,黑頭髮,黑眼睛等等,這些就是黃

linuxshell指令碼學習

#!/bin/bash echo 'hello' your_name='longxiong' echo $your_name echo ${your_name} for i in `ls /opt`; do echo ${i} done str="1234" echo ${#str} unset s

Web前端H5HTML標籤總結

1、Web標準介紹 * web應用領域: PC端 移動端 * 網頁介紹 ** 組成:文字、圖片、按鈕、視訊、音訊。。。。這些元素組成

JavaScript基礎總結

1.簡介       js是一種基於物件和事件驅動的並具有相對安全性的客戶端指令碼語言。也是一種廣泛用於web客戶端開發的指令碼語言,常用來給html網頁新增動態功能,如響應使用者的各種操作。       主要的目的是為了解決伺服器端語言遺留的速度問題,為客戶提供更流暢的瀏覽

linuxmakefile的學習

為什麼要學習makefile 在linux下開發專案,如果想要完成一個大型專案的開發,可能在windows環境下,有許多編譯器就已經替代了makefile功能,但在linux下想要合理管理程式碼,學會編寫makefile就非常重要了。 makefile 關係

複習MyBatis基礎用法——XML對映檔案

簡介 什麼是 MyBatis ? MyBatis 是支援定製化 SQL、儲存過程以及高階對映的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 程式碼和手工設定引數以及抽取結果集。MyBatis 使用簡單的 XML 或註解來配置和對映基本體,將介面和

JAVA工程師成神路--基礎目錄

在網上看到一篇文章“java成神之路”,按照上面的要求大幹一番,看看能不能成神。 具體指標 一、基礎篇 1-1 JVM     1.1.1  JAVA記憶體           1.1.1.1  JAVA記憶體模型           1.1.1.2 JAVA記憶體管理  

WEB應用httpd基礎入門

  前文我們聊了下http協議web服務的一些常識和httpd伺服器軟體三種響應模型的簡單介紹,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/12515075.html;今天我們來聊一聊httpd的一些常用配置;   httpd是一款歷史悠久的web伺服器軟體,現如今比

WEB快取系統varnish基礎入門

  前文我們聊了下http協議裡的快取控制機制以及varnish架構元件介紹,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/12620538.html;今天我們來聊一下怎樣配置使用varnish;   前邊我們說到過varnish有兩個配置檔案,一個是/etc/varn