[TOC] 前言 DDL DDL,中文為數據定義語言,DDL的特點是對資料庫內部的對象進行create(創建)、alter(修改)、drop(刪除)等操作,負責管理資料庫的基礎數據,不涉及對錶中內容的操作和更改。 DCL DCL,中文為數據控制語言,DDL的特點是對資料庫內部的對象grant(用戶授 ...
目錄
前言
DDL
DDL,中文為數據定義語言,DDL的特點是對資料庫內部的對象進行create(創建)、alter(修改)、drop(刪除)等操作,負責管理資料庫的基礎數據,不涉及對錶中內容的操作和更改。
DCL
DCL,中文為數據控制語言,DDL的特點是對資料庫內部的對象grant(用戶授權)、revoke(許可權回收)、commit(提交)、rollback(回滾)。
DML
DML,中文為數據操作語言,DML的特點是對資料庫內部的對象insert(增)、delete(刪)、update(改)、select(查),主要針對資料庫中表內的數據進行操作。
1.DDL語句之管理資料庫
1.1.創建資料庫
create database test; #創建預設字元集資料庫
create database test_gbk character set gbk collate gbk_chinese_ci; #創建gbk字元集資料庫
create database test_utf8 character set utf8 collate utf8_general_ci; #創建utf8字元集資料庫
show create database test\G #查看建庫語句
1.2.顯示資料庫
show databases; #查看所有資料庫
show databases like 'test'; #匹配test字元串的資料庫
show databases like 'test%'; #%為通配符,表示匹配以test開頭的所有資料庫
1.3.切換資料庫
use test; #切換到test庫
select database(); #查看當前管理員所在的庫名
1.4.查看資料庫包含的表信息
1.4.1.切換到資料庫裡面去查看表信息
use test;
show tables;
1.4.2.在庫外面查看庫里的表信息
show tables from test; #查看指定庫test中包含的表
show tables in test_gbk;
show tables from mysql like 'db%'; #匹配包含指定字元開頭的表
1.5.刪除資料庫
drop database test_gbk; #刪除test_gbk資料庫
show databases like 'test_gbk';
2.DDL&&DCL語句之管理用戶
2.1.查看當前資料庫的用戶列表
查看資料庫用戶列表屬於DML負責的部分內容。
select user,host from mysql.user; #這裡的select關鍵字表示查詢,是DML語句的關鍵字之一,user和host為要查找的MySQL表的欄位,from表示去哪查,mysql.user是MySQL庫里的user表。資料庫的標準用戶由“用戶”@“主機名”共同組成的,兩者加起來是資料庫用戶的唯一標識。
2.2.創建資料庫用戶
create user test1@localhost identified by '123456';
select user,host from mysql.user; #查看所有資料庫用戶
create user test2@'192.168.1.%' identified by '123456';
select user,host from mysql.user where user='test2; #查看指定資料庫用戶
show grants for test2@'192.168.1.%';
#USAGE表示連接許可權
2.3.刪除資料庫用戶
drop user 'test1'@'localhost'; #刪除資料庫用戶命令
select user,host from mysql.user where user='test1'; #刪除後檢查資料庫用戶
flush privileges; #使得處理用戶後,對資料庫生效,有資料庫改動的情況,執行這個命令
delete from mysql.user where user='test2' and host='192.168.1.%';
flush privileges;
2.4.授權資料庫用戶
2.4.1.創建test3用戶,對test庫具備所有許可權,允許從localhost主機登錄管理資料庫,密碼是123456。
grant all privileges on test.* to 'test3'@'localhost' identified by '123456';
select user,host from mysql.user where user='test3';
show grants for 'test3'@'localhost';
#ALL PRIVILEGES就是授權的許可權
2.4.2.授權與root同等地位的system用戶許可權。
show grants for root@localhost; #查看root用戶的許可權
grant all on *.* to 'system'@'localhost' identified by '123456' with grant option;
grant proxy on ''@'' to 'system'@'localhost' with grant option; #允許創建代理用戶
show grants for system@localhost;
2.5.授權的許可權列表
show grants for 'test3'localhost';
#ALL PRIVILEGES就是授權的許可權
revoke select on test.* from 'test3'@'localhost';
show grants for 'test'@'localhost';
#許可權ALL被拆分成了更細的許可權
MySQL的ALL PRIVILEGES的許可權列表
許可權 | 說明 |
---|---|
SELECT | 查詢(數據) |
INSERT | 插入(數據) |
UPDATE | 修改(數據) |
DELETE | 刪除(數據) |
CREATE | 創建(資料庫、表等對象) |
DROP | 刪除(資料庫、表等對象) |
RELOAD | 重載 |
SHUTDOWN | 關閉 |
PROCESS | 進程 |
FILE | 文件 |
REFERENCES | 參考資料 |
INDEX | 索引 |
ALTER | 修改(資料庫、表等對象) |
SHOW DATABASES | 查看資料庫 |
SUPER | 超級許可權 |
CREATE TEMPORARY TABLES | 創建臨時表 |
LOCK TABLES | 鎖表 |
EXECUTE | 執行 |
REPLICATION SLAVE | 從複製許可權 |
REPLICATION CLIENT | 從客戶端複製 |
CREATE VIEW | 創建視圖 |
SHOW VIEW | 查看視圖 |
CREATE ROUTINE | 創建存儲過程 |
ALTER ROUTINE | 修改存儲過程 |
CREATE USER | 創建用戶 |
EVENT | 事件 |
TRIGGER | 觸發器 |
CREATE TABLESPACE | 創建表空間 |
2.6.企業中grant授權許可權問題說明
2.6.1.企業里主資料庫用戶的授權問題說明
在企業生產環境中,如果是以web形式連接資料庫的用戶,那麼儘量不要授予all許可權,最好是分拆授權,比如,授予select、insert、update、delete等適合web使用的DML語句關鍵字許可權。
grant select,insert,update,delete on oldboy.* to test3@'172.16.1.%' identified by '123456';
#註意:授權用戶許可權時有如下3條安全紅線不要輕易跨過。
1、許可權不能用all,要應用select、insert、update、delete等具體許可權。
2、庫不能用"*.*",而應用"oldboy.*"格式具體到庫。
3、主機不能用%,而應用內網IP段,即'192.168.0.%'格式。
PHP程式語言連接MySQL的代碼:
<?php
//$link_id=mysql_connect('資料庫主機名','用戶','密碼');
$link_id=mysql_connect('172.16.1.7')
if($link_id){
echo "mysql successful by oldboy !";
}else{
echo mysql_error();
}
?>