1. 程式人生 > >一、MySQL的連線建立與許可權

一、MySQL的連線建立與許可權

1、Usage許可權
  連線登陸。新增的使用者預設賦予這個許可權,且此usage許可權不能被收回。
2、管理grant許可權   擁有grant option,就可以將自己擁有的許可權授予其他使用者(僅限於自己已經擁有的許可權)   mysql> grant Grant option on db.* to [email protected];   mysql> grant select on db.* to [email protected];   mysql>grant select *.* to ‘user’@’192.168.1.%’ identified by ‘pwd’;
3、管理許可權process   通過這個許可權,使用者可以執行SHOW PROCESSLIST和KILL命令。預設情況下,每個使用者都可以執行SHOW PROCESSLIST命令,但是隻能查詢本使用者的程序。kill命令殺死伺服器執行緒。你總是能顯示或殺死你自己的執行緒,
但是你需要PROCESS許可權來顯示或殺死其他使用者和SUPER許可權啟動的執行緒。 mysqld為有process許可權的使用者保留一個額外的連線, 以便一個MySQL root使用者能登入並檢查,即使所有的正常連線在使用。所以當連線數達到最大時,普通連線建立不了的時候,擁有process許可權的使用者還是可以連線的。 shell
>./mysqladmin –uroot –proot restart mysql>kill 3;//殺死id=3的程序。

4、管理許可權file   擁有file許可權才可以執行 select ..into outfile和load data infile…操作,但是不要把file, process, super許可權授予管理員以外的賬號,這樣存在嚴重的安全隱患。   管理許可權(如 super, process, file等)不能夠指定某個資料庫,on後面必須跟*.*。   mysql> grant file on *.* to [email protected]
;   mysql
> load data infile ‘/home/mysql/db.txt’ into table db;
5、管理許可權super   這個許可權允許使用者終止任何查詢;修改全域性變數的SET語句;使用CHANGE MASTER,PURGE MASTER LOGS。修改儲存過程需要super許可權():   mysql> grant super on *.* to 'ld'@'ip';   mysql> purge master logs before ‘mysql-bin.000006′;   管理許可權(如 super, process, file等)不能夠指定某個資料庫,on後面必須跟*.*
6、管理許可權Shutdown   shell>./mysqladmin –hip –uld –pld shutdown
7、管理許可權replication slave   擁有此許可權可以檢視從伺服器,從主伺服器讀取二進位制日誌。   mysql> grant replication slave on *.* to [email protected];   mysql> show slave hosts;   mysql>show binlog events;
8、 replication client   此許可權可以查詢master server、slave server狀態。   mysql> grant Replication client on *.* to [email protected];   或:mysql> grant super on *.* to [email protected];   mysql> show master status;
9、Reload許可權   必須擁有reload許可權,才可以執行   flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload命令。    MySQL的FLUSH句法,用於清除或者重新載入內部快取。而使用flush語句,你必須有reload許可權。 (1)flush hosts   清空hostname cache,hostname cache與連線時skip-name-resolve有關。   Flush logs: 關閉當前的二進位制日誌檔案並建立一個新檔案,新的二進位制日誌檔案的名字在當前的二進位制檔案的編號上加1。 (2)flush logs   關閉當前的二進位制日誌檔案並建立一個新檔案,新的二進位制日誌檔案的名字在當前的二進位制檔案的編號上加1。 (3)flush privileges   這個也是經常使用的,每當重新賦權後,為了以防萬一,讓新許可權立即生效,一般都執行一把,目地是從資料庫授權表中重新裝載許可權到快取中。 (4)flush tables   關閉所有開啟的表,同時該操作將會清空查詢快取中的內容。
(
5)flush tables with read lock   關閉所有開啟的表,同時對於所有資料庫中的表都加一個讀鎖,直到顯示地執行unlock tables,該操作常常用於資料備份的時候。 (6)flush STATUS   重置大多數狀態變數到0。 (7)flush MASTER    刪除所有的二進位制日誌索引檔案中的二進位制日誌檔案,重置二進位制日誌檔案的索引檔案為空,建立一個新的二進位制日誌檔案,不過這個已經不推薦使用,改成reset master 了。
(
8)flush QUERY CACHE   重整查詢快取,消除其中的碎片,提高效能,但是並不影響查詢快取中現有的資料,這點和Flush table 和Reset Query Cache(將會清空查詢快取的內容)不一樣的。 (9)flush slave   類似於重置複製吧,讓從資料庫忘記主資料庫的複製位置,同時也會刪除已經下載下來的relay log,與Master一樣,已經不推薦使用,改成Reset Slave了。這個也很有用的。   一般來講,Flush操作都會記錄在二進位制日誌檔案中,但是FLUSH LOGS、FLUSH MASTER、FLUSH SLAVE、FLUSH TABLES WITH READ LOCK不會記錄,因此上述操作如果記錄在二進位制日誌檔案中話,
會對從資料庫造成影響。注意:Reset操作其實扮演的是一個Flush操作的增強版的角色。
(10) references   有了REFERENCES許可權,使用者就可以將其它表的一個欄位作為某一個表的外來鍵約束。 11lock tables   必須擁有lock tables許可權,才可以使用lock tables   mysql> grant lock tables on ld.* to [email protected];   mysql> lock tables a1 read;   mysql> unlock tables;。 12、show view   必須擁有show view許可權,才能執行show create view。   mysql> grant show view on ld.* to [email protected];   mysql> show create view v_shop; 13、show database   通過show database只能看到你擁有的某些許可權的資料庫,除非你擁有全域性SHOW DATABASES許可權。   對於[email protected]使用者來說,沒有對mysql資料庫的許可權,所以以此身份登陸查詢時,無法看到mysql資料庫:   mysql> show databases; <1>skip_show_database   防止不具有SHOW DATABASES許可權的人們使用SHOW DATABASES語句。如果你擔心使用者能夠看見屬於其它使用者的資料庫,這樣設定可以提高安全性。其效果取決於SHOW DATABASES許可權:如果變數值為ON,只允許具有SHOW DATABASES許可權的人們使用SHOW DATABASES 語句,並且該語句將顯示所有資料庫名。如果值為OFF,允許所有使用者執行SHOW DATABASES,但只顯示使用者具有SHOW DATABASES或其它許可權的資料庫的名稱。 14. excute   檢視並執行存在的Functions,Procedures的許可權。   mysql> grant execute on ld.* to 'ld'@'192.168.1.1' identified by 'ld';   檢視並執行儲存過程的許可權。例如:執行完這句ld使用者就可以檢視到ld庫中的儲存過程名字,但開啟啥也沒有,也能執行,但是不能修改。   mysql> call pro_shop1(0001,@a);   mysql> select @a; 15、alter routine許可權   必須具有alter routine的許可權,才可以使用{alter |drop} {procedure|function}   mysql> grant alter routine on ld.* to 'ld'@'%' identified by 'ld';   mysql> drop procedure pro_shop; 16、create routine   建立儲存過程或函式。   mysql> grant create routine on zz4.* to 'ld'@'%' identified by 'ld';//賦予許可權   mysql> revoke create routine on zz4.* from 'ld'@'%' identified by 'ld';//收回許可權   只賦予create routine許可權後,修改儲存過程,報錯   mysql> grant select on ld.* from 'ld'@'192.168.1.1' identified by 'ld';   mysql> grant select routine on ld.* from '*'@'192.168.1.1' identified by 'ld'; 17. create temporary tables   (注意這裡是tables,不是table)   必須有create temporary tables的許可權,才可以使用create temporary tables.   mysql> grant create temporary tables on ld.* to ‘ld′@’localhost’;   [[email protected] ~]$ mysql -h localhost -u ld -p ld   mysql> create temporary table tt1(id int); 18. create view   必須有create view的許可權,才可以使用create view   mysql> grant create view on ld.* to ‘ld′@’localhost’;   mysql> create view v_shop as select price from shop; 19. create user   要使用CREATE USER,必須擁有mysql資料庫的全域性CREATE USER許可權,或擁有INSERT許可權。   mysql> grant create user on *.* to ‘ld′@’localhost’;   或:mysql> grant insert on *.* to [email protected]; 20. index   必須擁有index許可權,才能執行[create |drop] index 21、create許可權   資料庫、表或索引.   必須有create的許可權,才可以使用create table   mysql> grant create on ld.* to ‘ld′@’localhost’; 22、insert許可權 23、drop許可權 24、delete許可權 25、alter 修改表結構、資料庫屬性、儲存過程。 26、update許可權、 27、Select許可權 查詢資料庫、表或索引。 mysql> select * from cat; 另外,連線後,查詢只顯示有許可權的庫和表和欄位,新建的使用者預設有Usage許可權,和test庫的訪問許可權,可以對它查詢,修改,刪除等。
許可權補充:

【1】proxy user              

Mysql偽裝使用者,自從MySQL 5.5 釋出第一個版本以來,就在GRANT許可權列表裡面新增加了一條記錄: PROXY。 不要以為這個是以前的MySQL Proxy 哦。其實這個是用來給使用者做馬甲用的。

偽裝使用者方法:

步驟1:

mysql> select version();//確保版本是5.5以上

步驟2:

mysql> select * from mysql.plugin; //檢查是否已經載入test_plugin_server外掛,預設5.5和5.6版本的mysql,都沒有安裝。

+--------------------+----------------------+

| name               | dl                   |

+--------------------+----------------------+

| test_plugin_server | auth_test_plugin.dll |

+--------------------+----------------------+

步驟3:

//如果沒有安裝外掛,執行這句安裝;

mysql> install plugin test_plugin_server soname 'auth_test_plugin.dll';

步驟4:

mysql> create user 'pp_ext'@'%' identified with test_plugin_server as 'pp';

步驟5:

mysql> grant proxy on 'pp'@'%' to 'pp_ext'@'%';

步驟6:

mysql> flush privileges;

步驟7:

退出,用使用者名稱pp_ext密碼:pp登陸。

報錯:

1251-Client does not support authentication protocol requested by server;consider upgrading MySQL client

@@proxy_user 這個只讀變數為NULL。沒有偽裝成功。得升級客戶端版本。我用的是navicat.

更新完客戶端後,檢視一下偽裝使用者的許可權

Mysql>show grants for ‘pp’@’%’;

操作更正常使用者沒什麼區別。

<1> proxy_user 

【2】Mysqlaccess命令

使用者許可權檢查程式

【3】mysql_setpermission

 用於管理使用者許可權資訊的互動式perl指令碼。

相關推薦

MySQL連線建立許可權

1、Usage許可權   連線登陸。新增的使用者預設賦予這個許可權,且此usage許可權不能被收回。 2、管理grant許可權   擁有grant option,就可以將自己擁有的許可權授予其他使用者(僅限於自己已經擁有的許可權)   mysql> grant Grant option on

WebSocket安卓客戶端實現詳解()--連線建立重連

前言 這裡特別說明下因為WebSocket服務端是公司線上專案所以這裡url和具體協議我全部抹去了,但我會盡力給大家講明白並且demo我都是測試過,還望各位看官見諒 我們先粗獷的講下流程,掌握個大概的方向,然後在深入講解細節的實現.這裡先解答一個疑惑,為啥我們這要用WebSocket而不

《TCP/IP詳解》學習筆記-第17/18章 TCP:概述連線建立終止

1、概述 TCP提供一種面向連線的、可靠的位元組流服務。全雙工通訊。一個TCP連線由一個4元組唯一確定:本地 IP地址、本地埠號、遠端 IP地址和遠端埠號。 TCP將使用者資料打包構成報文段;它傳送資料後啟動一個定時器;另一端對收到的資料進行確認,對失序的資

MySQL數據庫基礎

數據庫模型、數據類型1.1、數據庫模型 數據庫由一批數據構成有序集合,這些數據被存在結構化的數據表中。數據表之間互相關聯,反應客觀事物間的本質聯系。數據庫系統提供對數據的安全控制和完整性控制。數據庫的發展大致劃分為幾個階段:人工管理階段、文件系統階段、數據庫系統階段、高級數據庫階段。其種類大概有3種:層次式

MySQL觸發器

mysql、觸發器 MySQL的觸發器和存儲過程一樣,都是嵌入到MySQL的一段程序。觸發器是由時間來觸發某個操作,這些時間包括INSERT、UODATE和DELETE語句。如果定義了觸發程序,當數據庫執行這些語句的時候就會觸發執行相應的操作,觸發程序是與表有關的命名數據庫對象,當表上出現特定事件時,當激活

mysql架構

解析器 以及 lec 返回 內存 style sele 圖片 rac 一、簡介 mysql是一個開源的數據庫管理系統,它相對於oracle更加地輕量、成本低,隨著功能的日益完善,它變得備受企業喜愛,尤其是中小企業。 mysql的整體架構大體包括以下幾個方面: 1)主體結構

MySQL資料庫之簡介和安裝

一、基礎部分 1.資料庫是簡介     之前所學,資料要永久儲存,比如使用者註冊的使用者資訊,都是保存於檔案中,而檔案只能存在於某一臺機器上。 如果我們不考慮從檔案中讀取資料的效率問題,並且假設我們的程式所有的元件都執行在一臺機器上,那麼用檔案存

jsp資料庫(二使用連線資料來源連線資料庫)

一、介紹 1、資料來源,是當前Web應用開發中獲取資料庫連線的首選方法。使用資料來源這種技術,應用程式在啟動時只需建立少量的連線物件即可 2、連線池與定義了一些連線,當應用程式需要連線物件時就從連線池中取出一個,當連線物件使用完畢將其放回連線池,從而避免在每次請求連線時都要建立連線物件

課經濟學》破窗謬誤“戰禍之福”

    經濟學所研究的並非是單純的錢,它是研究陌生人之間協作規律的一門學問。     我們所有人現在都是生存在一個由陌生人組成的大規模協作的現代社會中,但是我們人類從遠古蠻荒時期所帶來的思維模式,卻是一直在依

專案工程建立

1、在git平臺建立工程 <1>填寫專案資訊並建立專案 <2>複製遠端倉庫連結 2、克隆遠端專案 <1>新建虛擬環境 mkvirtualenv django_demo <2>進入虛擬環境 work

MySql 使用者建立授權

一. 建立使用者 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 說明: username:你將建立的使用者名稱 host:指定該使用者在哪個主機上可以登陸,如果是本地使用者可用localhost,如果想讓該使

mysql 索引建立使用

文章目錄 1、mysql索引作用: 2、mysql索引建立規則: 3、索引的問題 4、建立索引: 4.1、執行CREATE TABLE語句時可以建立索引: 4.2、單獨用 CREATE INDEX 來為表增加索引: 4.

PG fdw連線建立關閉

PG本地啟動psql, 並訪問外部表,然後退出 PG 與 remotePG的連線,隨著客戶端psql的退出而斷開。   PG本地啟動多個psql, 每個psql都訪問一次外部表 檢視remotePG 程序 [email protected]:~$

C++: 繼承和多型()三種繼承方式許可權

繼承 在C++中,我們常要對某個函式進行多次複用,例如: 資訊管理系統中,對於教師、學生、教務人員等"類"而言,有部分資訊是通用的:姓名,性別,年齡,聯絡方式等。如果為每一種角色都編寫一個"類",會有不少重複的程式碼,造成效率上的浪費。       &nbs

JAVA語言概述開發環境

1、編譯型語言與解釋型語言 編譯型語言:針對特定的平臺將某種高階語言原始碼一次性“翻譯”成可被該平臺執行的機器碼,幷包裝成該平臺所能識別的可執行性程式的格式。編譯生成的可執行程式可以脫離開發環境,在特定的平臺上獨立執行。 解釋型語言:使用專門的直譯器對源程式逐行解釋成特定平臺的機器碼並立

MySQL資料庫的安裝配置啟動登入

概述: MySQL:一個開源的關係型資料庫管理系統; MySQL分為社群版、企業版;(學習建議使用社群版) 安裝MySQL window下安裝方式: MSI安裝(初學者建議用此方法) ZIP|安裝 MSI安裝方法

利用lisp進行AutoCAD二次開發(環境說明檔案讀取以及表格建立寫值)

今天學習的這個例子是lisp計算機語言程式設計,說到這門計算機語言還是大學的時候接觸的,不過那時候都是停留在瞭解的層面上,後面編寫AutoCAD二次開發程式幾乎是用的是C#。所以對lisp不熟,就別提關於lisp在AutoCAD方面的介面。而今天所以又撿起這麼計算機語言,是出

Linux程式設計:入門(建立自己的靜態庫)

專案檔案最終的樹目錄,生成目標程式後,可以刪除中間檔案   note:靜態庫以lib開頭 ,比如mylib.a 靜態庫缺點:很多程式使用一個函式庫的函式時,會產生很多個副本。 共享庫.so可以解決此問題。 建立自己的函式,放在不同的標頭檔案中,只定義不宣告,並用gcc編譯 /

作業系統實驗課()程序的建立銷燬

根據老師給的實驗指導書做的 # include <stdio.h> # include <stdlib.h> # include <Windows.h> int

SQLMySQL簡單使用

1、資料型別 char 字元 定長,char(10) varchar 字串 int 整數 float 單精度 double 雙精度 date 日期 年月日 timestamp 年月日 時分秒 時間戳 decimal 通常和費用金錢相關的使用該型別 2、設