在日常的生活中,你們有沒有這種感受,當咱們的文檔或者數據越來多時,是否是感受管理起來特別特別的麻煩?我是遇到過這樣的問題,不過有前人的開拓,幫咱們解決了這個問題,那就是數據庫。給你舉個例子你就立刻懂了。你有沒有看過阿里巴巴的天貓超時,他們就是將每個貨物分類,恆行中列,而後集中管理,這樣就大大提升了工做效率。在linux中比較流行的mysql、mariadb、oracle等數據庫。那麼久進入咱們的主體吧。mysql
數據庫(Database)是按照數據結構來組織、存儲和管理數據的創建在計算機存儲設備上的倉庫;它以必定的組織形式存於存儲介質上。linux
一種操縱和管理數據庫的大型軟件,用於創建、使用和維護數據庫,簡稱DBMS。它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。用戶經過DBMS訪問數據庫中的數據,數據庫管理員也經過dbms進行數據庫的維護工做。它可以使多個應用程序和用戶用不一樣的方法在同時或不一樣時刻去創建,修改和詢問數據庫。大部分DBMS提供數據定義語言DDL(Data Definition Language)和數據操做語言DML(Data Manipulation Language),供用戶定義數據庫的模式結構與權限約束,實現對數據的追加、刪除等操做。 <摘自:百度>sql
編寫應用程序不方便 | 編寫應用程序方便,好管理 |
數據冗餘不可避免 | 較少的數據冗餘 |
應用程序依賴性 | 程序與數據相互獨立 |
不支持對文件併發訪問 | 數據能夠被併發訪問;並保證一致性 |
數據之間聯繫弱 | 相互關聯的數據集合 |
難以按用戶要求使用視圖表示 | 能夠按用戶的需求使用視圖表示 |
無安全控制功能 | 能夠保證數據的安全性、可靠性 |
建立在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。現實世界中的各類實體以及實體之間的各類聯繫均用關係模型來表示。標準數據查詢語言SQL就是一種基於關係數據庫的語言。這種語言執行對關係數據中數據的檢索和操做。關係模型由關係數據結構、關係操做集合和關係完整性約束三部分組成。數據庫
數據結構 包括兩類:一類是與數據類型、內容和性質有關的對象,好比關係型中的域、屬性和關係等;另外一類是與數據之間有關的對象,它從數據組織層表達數據記錄於字段的結構。express
數據的操做集合 數據提取,在數據集合中提取感興趣的內容。(SELECT);數據更新,更改數據庫中的數據(INSERT、DELETE和UPDATE)。編程
數據完整性約束 是一組完整性規則的集合。如實體完整性(Entity Integrity)、域完整性(Doamin Integrity)和參考完整性(Referential Integrity)。vim
注:安全
矩形表明實體數據結構
橢圓表明關係併發
菱形表明關係
實體表示一個離散對象。客觀存在並能夠相互區分的客觀事物或抽象時間被稱爲實體(Entity);每一個實體必須有一個惟一表示的最小化集合。這個集合叫實體的主鍵。
關係 描述了兩個或多個實體之間是如何關聯。若有關兩個實體
①收集數據,獲得字段
②字段分類,納入表並創建表的關聯
③規範化數據庫
設計關係數據庫時,聽從不一樣的規範要求,設計出合理的關係型數據庫,這些不一樣的規範要求被稱爲範式。各類範式呈遞次規範,越高的範式數據庫冗餘越小。目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、Boyce-Codd範式(BCNF)、第四範式(4NF)和第五範式(5NF)
1NF:無重複的列,每一列都是不可分割的基本數據項;同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。除去同類型的字段,簡言之:無重複的列。
2NF:要求實體的屬性徹底依賴於關鍵字。所謂徹底依賴是指不能存在僅依賴主關鍵字一部分的屬性。若是存在這個屬性和主關鍵字的這一部分應該分離出來造成一個新的實體。新實體與原來實體之間是一對多關係。爲實現區分一般須要爲表加上一個列,以存儲各個實體的惟一標識(primary key)。簡言之,非主屬性分非部分依賴於主關鍵字。
3NF:屬性不依賴於其餘非主屬性。簡言之,要求一個數據庫不包含已在其餘表中已包含的非主關鍵字信息。非PK(primary key)的字段不能有從屬關係。
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統;同時也是數據庫腳本文件的擴展名。 結構化查詢語言是高級的非過程化編程語言,容許用戶在高層數據結構上工做。它不要求用戶指定對數據的存放方法,也不須要用戶瞭解具體的數據存放方式,因此具備徹底不一樣底層結構的不一樣數據庫系統, 可使用相同的結構化查詢語言做爲數據輸入與管理的接口。結構化查詢語言語句能夠嵌套,這使它具備極大的靈活性和強大的功能。
數據庫:數據庫是一些關聯表的集合。
數據表:表示數據的矩陣。在一個數據庫中的表開起來像一個簡單的電子表格。
列(column):一列包含了相同的數據,又稱爲屬性,字段。
行(row):是一組相關的數據,又稱爲一條記錄record。
域(domain):屬性的取值範圍。
主鍵(Primary Key):一個或多個字段的組合,填入的數據必須能在本表中惟一表示本行;必須提供數據,即NOT NULL。一個表中有且只有一個主鍵。
惟一鍵:一個或多個字段的組合,填入的數據必須能在本表中惟一表示本行;容許爲NULL。一個表中能夠存在多個。
外鍵(foreign key):一個表中的某字段可填入的數據取決於另外一個表中的主鍵或惟一鍵已有的數據。即用於關聯兩個表。
檢查(check):字段在必定範圍內。
索引:將表中的一個或多個字段中的數據複製一份另存,而且這些須要按特定次序排序存儲。至關於咱們一個書前面的目錄做用。
複合件:兩個或多個字段組成,至關於主鍵的做用。
SQL處理過程
數值型
類型 | 大小(字節) | 範圍(有符號) | 範圍(UNSIGNED) | 用途 |
TINYINT | 1 | -128,127 | 0,255 | 小整數值 |
SMALLINT | 2 | -32768,32767 | 大整數值 | |
MEDINUMINT | 3 | -8388608,8388607 | 0,16777215 | 大整數值 |
INT或INTEGER | 4 | -2^4,2^4-1 | 0,2^4*2 | 大整數值 |
BIGINT | 8 | -2^8,2^8-1 | 0,2^8*2 | 極大整數值 |
FLOAT(m,d) | 4 | 單精度,浮點數值 | ||
DOUBLE(m,d) | 8 | 多精度浮點數值 | ||
DECIMAL | 小數值 |
DECIMAL的解釋:Decimal(n,m)表示數值中共有n位數,其中整數n-m位,小數m位。例:decimal(10,6),數值中共有10位數,其中整數佔4位,小數佔6位。
日期和時間類型
類型 | 大小(字節) | 範圍 | 格式 | 用途 |
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59/838:59:59 | HH:MM:SS | 時間值或持續時間 |
YEAR | 1 | 1901/2155 | YYYY | 年份 |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS | 混合日期和時間值 | |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2037年某時 | YYYYMMDDHHMMSS | 時間戳 |
若一個字段定義爲timestamp,這個字段的時間數據隨其餘字段修改的時候自動更新,這個數據的字段能夠存放這條記錄最後被修改的時間。
字符串類型
類型 | 大小(字節) | 用途 |
CHAR | 0-255 | 定長字符串 |
VARCHAR | 0-65535 | 變長字符串 |
TINYBLOB | 0-255 | 不超過255個字符的二進制字符串 |
TINYTEXT | 0-255 | 短文本字符串,可變長度 |
BLOB(binary large object | 0-65535 | 二進制形式的長文本數據,可變長度 |
TEXT | 0-65535 | 場文本數據可變長度 |
MEDIUMBLOB | 0,2^24-1 | 二進制中等長度文本數據,可變長度 |
BINARY(M) | 0,M | 固定長度,可存二進制或字符, |
VARBINARY(M) | 0,M | 可變長度,可存二進制或字符 |
char和varchar區別
char(n)若存入字符數小於n,則以空格補充其後,查詢之時再將空格去掉。因此char類型存儲的字符末尾不能有空格。
char(n)固定長度,無論存入幾個字符,都將佔用n個字節;varchar(n)是存入的實際字符數+1個字節。真正存入的數據位實際字節-1。會使用1-2個字節來存儲值長度。 -char類型的字符串檢索速度比varchar速度快
varchar和text區別
varchar可指定n,text不能指定n;內部存儲varchar是存入的實際字節數+1個字節,text是實際字節數+2的字節。
text類型不能有默認值
varchar可直接建立索引;text建立索引要指定前多少個字符。varchar查詢速度比text快。
BOLB與TEXT區別
TEXT以文本方式存儲,英文存儲區分大小寫;而BLOB是以二進制方式存儲,不分大小寫。
BLOB存儲的數據只能總體讀出。
TEXT能夠指定字符集;BLOB不用指定字符集。
如何正確的數據類型?
①儘可能使用可正確存儲數據的最小數據類型
②簡單數據類型的操做一般須要更少的CPU週期
③儘可能避免NULL,包含NULL的列對MySQL更難優化
修飾符類型
類型 | 解釋 |
NULL | 空 |
NOT NULL | 確保不能有NULL值 |
DEFAULT | 提供未指定時爲列的默認值 |
PRIMARY KEY | 惟一表示數據庫表中的每一行 |
FOREIGN KEY | 惟一表示熱河其餘數據庫表中的行 |
UNIQUE KEY | 確保在一列中全部的值是惟一的 |
CHARACTER SET name | 指定一個字符集 |
ATUO_INCREMENT | 自動遞增,適用於整數類型 |
UNSIGNED | 無符號 |
CHECK | 確保列中的全部值知足必定的條件 |
刪除約束的方法 ALTER TABLE column_name DROP CONSTRAINT PK;
通配符 | 描述 |
% | 替代一個或多個字符 |
_ | 僅替代一個字符 |
[] | 中括號中任意單一字符 |
[^]或[!] | 除中括號中任意單一字符 |
注意:SQL通配符必須跟LIKE運算符一塊兒使用
運算符 | 描述 |
+ | 加法 |
- | 減法 |
* | 乘法 |
/ | 除法 |
% | 取模,至關於取餘數 |
=、!=、 <>、 >、 <、 >=、 <=、 !<、 !>
操做符 | 描述 |
ALL | 用來在另外一個值設定比較值的全部值 |
AND | 運行多個條件在SQL語句中,存在WHERE子句中 |
ANY | 用於根據條件在列表中的值進行標膠的任何應用值 |
BETWEEN...AND | 用於搜索是在一組的那個值,給定最小值和最大值 |
EXISTS | 用於搜索中指定的表,以知足某些標準的存在 |
IN | 用於一個值進行比較,以已被指定的文字值的列表 |
LIKE | 用來標膠使用通配符運算符類似的值 |
NOT | 取反 |
OR | 用來多個條件子句結合起來的SQL語句 |
IS NULL | 用來比較一個NULL的值 |
UNIQUE | 搜索指定表的每一行的惟一性 |
格式:SELECT column_names FROM table_name AS alias_name
SQL 布爾表達式
語法:SELECT column_name1 column_name2 column_name3 FROM table_name WHERER SINGLE VALUE MATCHTING EXPRESSION;
SQL 數字表達式
語法:SELECT numerical_expression as OPERATION_NAME [FROM table_name WHERE CONDITION];
SQL 日期表達式
SELECT CURRENT_TIMESTAMP; #顯示當前系統的時間值
SELECT GETDATE(); #顯示時間
索引是數據庫的搜索引擎使用,以加快數據檢索特定的查找表,是一個指向表中的數據。至關於一本書的目錄,便於快速查找,對數據沒有影響。缺點:若是UPDATE和INSERT會減慢數據的輸入。
注意:索引是惟一的,索引防止在列或者有一個索引重複條目。
語法:CREATE INDEX index_name ON table_name;
單列索引:是一個基於只有建立表列。
語法:CREATE INDEX index_name ON table_name (colum_name);
惟一索引:不只用於性能,並且要求數據的完整性。
語法:CREATE UNIQUE INDEX index_name ON table_name (column_name);
組合索引:兩個或多個索引
語法:CREATE INDEX index_name ON table_name (column_name1,column_name2..);
SQL視圖(View)是SQL語句結果集的可視化表。視圖中的字段是來自一個或多個數據庫中真實表中的字段。
注意:數據庫的設計不會受到視圖中的函數、where或join語句的影響。
語法:CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE [CONDITION];
WHIT CHECK OPTION 是CREATE VIEW 語句選項。目的是爲了確保全部更新和插入知足視圖定義的條件。
示例:CREATE VIEW testView AS SELECT name,age FROM testtable WHERE age IS NOT NULL WITH CHECK OPTION; #WITH CHECK OPTION 拒絕任何age爲NULL值的行。
那麼是否是這樣咱們就能夠隨便更新視圖了呢?那可不必定哦,更新視圖是有必定條件的:
SELECT子句不包含關鍵字DISTINCT.
SELECT子句不包含彙總函數。
SELECT子句不包含集合函數。
SELECT子句不能包含集合運算符
SELECT子句不能包含一個ORDER BY 子句。
FROM子句中不能包含多個表。
WHERE子句中不能包含子查詢。
查詢不包含GROUP BY 或HAVING.
計算列沒法更新
從基表中的全部NOT NULL 列必須包含在視圖。
看看是否是不是隨便能更新視圖能。好憂傷。。。
示例:UPDATE testView SET age = 20 WHERE name 'xiaomian' ;
語法:SELECT column-list FROM table_name [WHERE CONDITION] [ORDER BY column1,column2..][ASC|DESC];
事物就是對數據庫執行的工做單元。好比說,在人員管理系統中,你刪除一我的員,你即須要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操做語句就構成一個事務!
事物的特性 事務是必須知足4個條件(ACID): Atomicity(原子性)、Consistency(穩定性)、Isolation(隔離性)、Durability(可靠性)
事務的原子性:確保工做單元中的全部操做都成功完成。不然,該事物被終止的故障點,操做回滾到操做以前的狀態。
一致性:確保數據庫正確後成功提交事物更改狀態。
隔離性:事務獨立運行。一個事務處理後的結果,影響了其餘事務,那麼其餘事務會撤回。事務的100%隔離,須要犧牲速度。
可靠性:軟、硬件崩潰後,InnoDB數據表驅動會利用日誌文件重構修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 選項 決定何時把事務保存到日誌裏。
控制事物使用的命令: - COMMIT :保存修改 - ROLLBACK:回滾更改 - SAVEPOINT:回滾事物組建立點 - SET TRANSACTION:用來設置事物的隔離級別
DDL(Data Define Language)
命令 | 描述 |
CREATE | 建立一個表、數據庫、表的視圖 |
ALTER | 修改現有數據庫對象 |
DROP | 刪除整個表、數據庫中的表或其餘對象或視圖 |
DML(Data Manager Language)
命令 | 描述 |
INSERT | 插入記錄 |
UPDATE | 修改記錄 |
DELETE | 刪除記錄 |
DCL(Date Control Language)
命令 | 描述 |
GRANT | 授予用戶權限 |
REVOKE | 撤銷授予用戶的權限 |
DQL(Date Query Language)
命令 | 描述 |
SELECT | 從一張表或多張表中檢索特定的記錄 |
在數據庫系統中,SQL語句不區分大小寫(建議使用大寫),但在字符串中常量區分大小寫。
SQL語句中能夠單行書寫,並以「;」結尾。
在SQL中關鍵詞不能跨多行或簡寫。
子句一般獨立運行,便於管理,提升可讀性。
SQL註釋標準:/須要註釋的內容/ 或 --須要註釋的內容
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。
MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可 MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。 MariaDB由MySQL的創始人Michael Widenius(英語:Michael Widenius)主導開發,他早前曾以10億美圓的價格,將本身建立的公司MySQL AB賣給了SUN,此後,隨着SUN被甲骨文收購,MySQL的全部權也落入Oracle的手中。MariaDB名稱來自Michael Widenius的女兒Maria的名字。
以前咱們講過使用源碼編譯安裝DNS,其實編譯安裝的過程都是大同小異的,可是源碼編譯安裝會耗費咱們不少的時間,是否是若是有人把源碼編譯好咱們直接使用該如何呢?可是這種方式有一個缺點不能本身定製本身的需求,若是你想只針對本身的需求安裝那就只能使用源碼編譯安裝了。下面咱們就來看看二進制如何安裝mariadb
先從官網下載二進制包
https://downloads.mariadb.org/mariadb/10.2.8/
建立mysql用戶
[root@localhost mysql]# useradd -r -m -d /app/testdata -s /sbin/nologin mysql
解壓指定目錄並建立軟鏈接
[root@localhost ~]# tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local
[root@localhost local]# ln -sv mariadb-10.2.8-linux-x86_64/ mysql
#建立軟鏈接
準備配置文件
[root@localhost mysql]# mkdir /etc/mysql
#建立目錄[root@localhost mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
#複製模板文件[root@localhost mysql]# cd /etc/mysql/
[root@localhost mysql]# vim my.cnf
#修改配置文件
[mysqld] datadir = /app/testdata innodb_file_per_table = on skip-name_resolve = on port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M
如今咱們已經把主配置文件建立好了,可是若是如今啓動的話,會出現下面狀況
[root@localhost~]#service mysqld start
Redirecting to /bin/systemctl start mysqld.service Failed to start mysqld.service: Unit not found.
咱們尚未建立啓動腳本呢!!!
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
#將啓動腳本複製到啓動腳本目錄下[root@localhost mysql]# chkconfig --add mysqld
#添加服務
建立數據庫文件
[root@localhost/usr/local/mysql]#./scripts/mysql_install_db --datadir=/app/testdata --user=mysql
#初始化數據庫,可是這裏須要注意的是這個執行文件必須在文件父目錄上執行。
這是咱們嘗試去啓動mysqld,看看是否能夠啓動
[root@localhost/usr/local/mysql]#service mysqld start
出錯啦,出錯啦,是什麼緣由呢?使咱們的日誌文件沒有建立致使,如今咱們去解決這個問題。
[root@localhost/usr/local/mysql]#journalctl -xe
#查看日誌
Sep 25 15:07:28 localhost.localdomain mysqld[3756]: Starting MySQL.170925 15:07:28 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
如何解決這個問題呢?
[root@localhost/usr/local/mysql]#mkdir /var/log/mariadb
[root@localhost/usr/local/mysql]#touch /var/log/mariadb/mariadb.log
#建立日誌文件[root@localhost/usr/local/mysql]#setfacl -R -m u:mysql:rwx /var/log/mariadb/
#設置權限
如今咱們來再嘗試啓動,看看能不能成功呢?
[root@localhost/usr/local/mysql]#service mysqld start
Starting mysqld (via systemctl): [ OK ]
高興,終於啓動了,那讓咱們來盡情的享用吧?
初始化數據庫
[root@localhost/usr/local/mysql]#/usr/local/mysql/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): #輸入如今的密碼,新建立的密碼爲空,直接回車 OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y #詢問是否爲root建立密碼 New password: #輸入密碼 Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y #是否移除匿名用戶 ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y #是否遠程root 登陸 ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] N #是否移除test數據庫 ... skipping. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y #是否當即生效 ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
咦,有出錯了,先哭會,再解決;這個緣由是咱們沒有設置mysql路徑,那麼咱們來設置下嘍。
[root@localhost/usr/local/mysql]#vim /etc/profile.d/mysql.sh
#寫路徑
export PATH=/usr/local/mysql/bin:$PATH
[root@localhost/usr/local/mysql]#source /etc/profile.d/mysql.sh
#使其生效。
若是您出現上圖所示內容,說明你已經成功,來給本身鼓個掌。
安裝過程當中有沒有注意到,爲何咱們要建立/etc/mysql/目錄來建立配置文件呢?
在mysql中配置文件查找次序:後面的會覆蓋前面的配置文件
/etc/my.cnf-->/etc/mysql/my.cnf-->--default-extra-file=/PATH/TO/CONF_FILE-->/.my.cnf
建立兩張表一個學生基本信息如ID、姓名、性別、年齡。另外一張表爲學生的成績ID、姓名、成績
MariaDB [student]> CREATE TABLE information(ID TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,name VARCHAR(20) NOT NULL,age TINYINT UNSIGNED)
MariaDB [student]> CREATE TABLE score (ID TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,name VARCHAR(20) NOT NULL , scores INT NOT NULL);
MariaDB [mysql]> SELECT user,host,password FROM user;
如何給建立用戶並添加密碼呢?
MariaDB [(none)]> CREATE USER 'li'@'192.168.4.%' IDENTIFIED BY '123456';
MariaDB [(none)]> CREATE USER 'wang'@'localhost' IDENTIFIED BY '123456';
如何更改口令呢?
MariaDB [(none)]> UPDATE mysql.user SET PASSWORD = PASSWORD('123456') WHERE USER = 'li';
MariaDB [(none)]> SET PASSWORD FOR 'li'@'192.168.4.%' = PASSWORD('123456');
在一臺主機上遠程登陸,能夠登了,可是看不到數據庫
那麼如何纔可使其使用呢?那必須受權此用戶操做。
MariaDB [(none)]> GRANT SELECT,DELETE ON student.* TO 'li'@'192.168.4.%';
受權成功。噹噹噹!
MariaDB [(none)]> REVOKE ALL ON student.* FROM 'li'@'192.168.4.%';
#當有一天這我的離職了,須要收回特權。
**注意:mariadb服務進程啓動時會讀取mysql庫中的全部受權表至內存中。
(1)GRANT或REVOKE等執行權限操做會保存於系統表彙總,mariadb的服務進程一般自動重讀受權表,使其生效。 (2)對於不可以或不能及時重讀受權表的命令,可手動讓mariadb的服務進行重複受權表。
FLUSH PRIVILEGES