<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
從今天開始, 小白我將帶領大家一起來補充一下 資料庫的知識.
資料控制語言 (Data Control Language) 是用來設定或更改資料庫使用者或角色許可權的語句.
層級 | 描述 |
---|---|
全域性層級 | 適用於一個給定伺服器中的所有資料庫. 這些許可權儲存在 mysql.user 表中 |
資料庫層級 | 適用於一個給定資料庫中的所有目標. 這些許可權儲存在 mysql.db 和 mysql.host 表中 |
表層級 | 適用於一個給定表中所有的列. 這些許可權儲存在 mysql.tables_priv 表中 |
列層級 | 使用於一個給定表中的單一列. 這些許可權儲存在 mysql.columns_priv 表中 |
子程式層級 | CREATE ROUTINE, ALTER ROUTINE, EXECUTE 和 GRANT 許可權適用於已儲存的子程式. 這些許可權可以被授予為全域性層級和資料庫層級 |
MySQL 的許可權資訊主要儲存在以下幾張表中, 當用戶連線資料庫時, MySQL 會根據這些表對使用者進行許可權驗證.
表名 | 描述 |
---|---|
user | 使用者許可權表, 記錄賬號, 密碼及全域性性許可權資訊 |
db | 記錄資料庫相關許可權 |
table_priv | 使用者對某個表擁有的許可權 |
column_priv | 使用者對某表某個列所擁有的許可權 |
procs_priv | 使用者對儲存過程及儲存函數的操作許可權 |
在 MySQL 中, 使用 CREATE USER 來建立使用者, 使用者建立後沒有任何許可權.
檢視所有使用者:
MySQL 的使用者賬號由兩部分組成: 使用者名稱和主機名, 即使用者名稱@主機名,主機名可以是 IP 或機器名稱, 主機名為%
表示允許任何地方的主機遠端登入 MySQL 資料庫.
格式:
CREATE USER '使用者名稱' [@'主機名'][IDENTIFIED BY '密碼'];
例子:
<?php $conn = mysqli_connect("localhost", "root","admin","mysql"); if ($conn) { echo "資料庫連線成功n"; } else { echo mysqli_connect_error(); } # SQL語句 $SQL = "CREATE USER 'user1'@'%' IDENTIFIED BY '123456'"; # 執行 $result = mysqli_query($conn, $SQL); # 檢視是否執行成功 if ($result) { echo "SQL 語句執行成功!n"; }else { echo mysqli_error($conn); } # 關閉連線 mysqli_close($conn); ?>
效果:
格式:
DROP USER '使用者名稱‘[@'主機名']
例子:
<?php $conn = mysqli_connect("localhost", "root","admin","mysql"); if ($conn) { echo "資料庫連線成功n"; } else { echo mysqli_connect_error(); } # SQL語句 $SQL = "DROP USER 'user1'@'%'"; # 執行 $result = mysqli_query($conn, $SQL); # 檢視是否執行成功 if ($result) { echo "SQL 語句執行成功!n"; }else { echo mysqli_error($conn); } # 關閉連線 mysqli_close($conn); ?>
格式:
ALTER USER '使用者名稱'@'主機名' IDENTIFIED BY '新密碼';
例子:
<?php $conn = mysqli_connect("localhost", "root","admin","mysql"); if ($conn) { echo "資料庫連線成功n"; } else { echo mysqli_connect_error(); } # SQL語句 $SQL = "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'"; # 執行 $result = mysqli_query($conn, $SQL); # 檢視是否執行成功 if ($result) { echo "SQL 語句執行成功!n"; }else { echo mysqli_error($conn); } # 關閉連線 mysqli_close($conn); ?>
MySQL 使用GRANT
和REVOKE
進行授權, 復原授權. 許可權具體分為 3 類, 資料類, 結構類, 和管理類.
資料 | 結構 | 管理 |
---|---|---|
SELECT INSERT UPDATE DELETE FILE | CREATE ALTER INDEX DROP CREATE TEMPORARY TABLES SHOW VIEW CREATE ROUTINE ALTER ROUTINE EXECUTE CREATE VIEW EVENT TRIGGER | USAGE GRANT SUPER PROCESS RELOAD SHUTDOWN SHOW DATABASES LOCK TABLES REFERENCES REPUCATION CUENT REPUCATION SLAVE CREATE USER |
格式:
SHOW GRANTS FOR '使用者名稱'[@'主機名']
例子:
<?php $conn = mysqli_connect("localhost", "root","admin"); if ($conn) { echo "資料庫連線成功n"; } else { echo mysqli_connect_error(); } # SQL語句 $SQL = "SHOW GRANTS FOR 'root'@'localhost'"; # 執行 $result = mysqli_query($conn, $SQL); # 檢視是否執行成功 if ($result) { echo "SQL 語句執行成功!n"; }else { echo mysqli_error($conn); } # 偵錯輸出 while ($line = mysqli_fetch_assoc($result)) { print_r($line); } # 關閉連線 mysqli_close($conn); ?>
輸出結果:
資料庫連結成功
SQL 語句執行成功!
Array
(
[Grants for root@localhost] => GRANT 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, CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT OPTION
)
Array
(
[Grants for root@localhost] => GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,AUTHENTICATION_POLICY_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FLUSH_OPTIMIZER_COSTS,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,GROUP_REPLICATION_STREAM,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PASSWORDLESS_USER_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`localhost` WITH GRANT OPTION
)
Array
(
[Grants for root@localhost] => GRANT PROXY ON ``@`` TO `root`@`localhost` WITH GRANT OPTION
)
格式:
GRANT ALL PRIVILEGES ON 資料庫名.表名 TO '使用者名稱'[@'主機名']
例子:
<?php $conn = mysqli_connect("localhost", "root","admin"); if ($conn) { echo "資料庫連線成功n"; } else { echo mysqli_connect_error(); } # SQL語句 $SQL = "GRANT ALL PRIVILEGES ON study.table1 TO 'user1'@'%'"; # 執行 $result = mysqli_query($conn, $SQL); # 檢視是否執行成功 if ($result) { echo "SQL 語句執行成功!n"; }else { echo mysqli_error($conn); } # 關閉連線 mysqli_close($conn); ?>
REVOKE ALL PRIVILEGES ON 資料庫名.表名 from '使用者名稱'[@'主機名']
例子:
<?php $conn = mysqli_connect("localhost", "root","admin"); if ($conn) { echo "資料庫連線成功n"; } else { echo mysqli_connect_error(); } # SQL語句 $SQL = "REVOKE ALL PRIVILEGES ON study.table1 FROM 'user1'@'%'"; # 執行 $result = mysqli_query($conn, $SQL); # 檢視是否執行成功 if ($result) { echo "SQL 語句執行成功!n"; }else { echo mysqli_error($conn); } # 關閉連線 mysqli_close($conn); ?>
格式:
FLUSH PRIVILEGES
禁止 root 遠端登入.
禁止 root 遠端登入的原因:
到此這篇關於MySQL與PHP的基礎與應用專題之資料控制的文章就介紹到這了,更多相關MySQL 資料控制內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45