DCL英文全名為Data Control Language(資料控制語言),用來管理資料庫使用者、控制資料庫的存取權限。
使用者相關指令:
#查詢使用者:select * from mysql.user;
表中有加密後的密碼,如果忘記密碼,可以透過設定實現免密登錄,並進行修改密碼。
其中 Host代表目前使用者存取的主機, 如果為localhost, 僅代表只能夠在目前本機訪問,是不可以遠端存取的。 User代表的是存取該資料庫的使用者名稱。在MySQL中需要透過Host和User來唯一標識一個使用者。主機名稱可以使用 % ,代表的就是任何一個主機都能存取。
往往linux當中安裝mysql,然後使用 其他主機的客戶端 連mysql連不上,就是因為Host配置的是localhost這個原因導致的!
建立使用者:CREATE USER '使用者名稱'@'主機名稱' IDENTIFIED BY '密碼';
修改使用者密碼:ALTER USER '使用者名稱'@'主機名稱' IDENTIFIED WITH mysql_native_password BY '新密碼' ;
刪除使用者:DROP USER '使用者名稱'@'主機名稱' ;
#注意事項:
在MySQL中需要透過使用者名稱@主機名稱
的方式,來唯一標識一個使用者。
主機名稱可以使用 % 通配。
指令使用範例:
#创建用户aaa, 只能够在当前主机localhost访问, 密码123456; create user 'aaa'@'localhost' identified by '123456'; #创建用户bbb, 可以在任意主机访问该数据库, 密码123456; create user 'bbb'@'%' identified by '123456'; #修改用户bbb的访问密码为1234; alter user 'bbb'@'%' identified with mysql_native_password by '1234'; #删除 aaa@localhost 用户 drop user 'aaa'@'localhost';
MySQL中定義了很多種權限,但常用的就以下幾種:
#指令:
#查詢權限:SHOW GRANTS FOR '使用者名稱'@'主機名稱' ;
授予權限:GRANT 權限清單ON 資料庫名稱.表名TO '使用者名稱'@'主機名稱';
撤銷權限:REVOKE 權限清單ON 資料庫名稱.表名FROM '使用者名稱'@'主機名稱';
注意事項:
多個權限之間,使用逗號分隔
授權時, 資料庫名稱和表名可以使用* 進行通配,代表所有
。
命令使用範例:
#查询 'bbb'@'%' 用户的权限 show grants for 'bbb'@'%'; #授予 'bbb'@'%' 用户itcast数据库所有表的所有操作权限 grant all on itcast.* to 'bbb'@'%'; #撤销 'bbb'@'%' 用户的itcast数据库的所有权限 revoke all on itcast.* from 'bbb'@'%';
MySQL使用者資料和權限有修改後,希望在"不重啟MySQL服務"的情況下直接生效,那麼就需要執行這個指令。通常是修改ROOT帳號的設定後,怕重啟後無法再登入進來,那麼直接flush之後就可以看權限設定是否生效。而不必冒太大風險。
flush privileges;
以上是Mysql如何新增使用者和設定權限的詳細內容。更多資訊請關注PHP中文網其他相關文章!