1. 程式人生 > >mysql資料庫的DCL操作

mysql資料庫的DCL操作

檢視使用者: 如果進入了mysql庫:SELECT *FROM USER; 沒有進入mysql庫內:SELECT *FROM mysql.USER;

建立使用者: CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’; host:可以是具體的IP,也可以用萬用字元 “%” 來指定任何IP

-- 建立使用者
CREATE USER 'pwdManager'@'%' IDENTIFIED BY '1010';

授予許可權: GRANT privileges ON dbname.tablename TO ‘username’@’host’

  • privileges:值可以是SELECT,INSERT,UPDATE等,如果要授予所的許可權則用ALL
  • dbname:資料庫名
  • tablename:表名,如果要授予該使用者對所有資料庫和表的相應操作許可權則可用表示,如.*
-- 賦予許可權
GRANT ALL ON pwddb.pwdManager TO 'pwdManager'@'%'

-- 重新整理許可權
FLUSH PRIVILEGES;

撤銷許可權: REVOKE privilege ON dbname.tablename FROM ‘username’@’host’;

  • privilege :賦予的許可權
  • dbname:資料庫名
  • tablename :表名
-- 撤銷許可權
REVOKE ALL ON pwddb.pwdManager FROM 'pwdManager'@'%';

-- 重新整理許可權
FLUSH PRIVILEGES;

刪除使用者: DROP USER ‘username’@’host’;

-- 刪除使用者
DROP USER 'pwdManager'@'%';

修改密碼: 修改密碼有多種方式:

  • 修改當前使用者的密碼(最簡單的方式) SET PASSWORD=PASSWORD(‘newPassword’);
-- 修改當前使用者的密碼
SET PASSWORD=PASSWORD('111'
);
  • 修改指定使用者密碼(當前使用者也可以只用) SET PASSWORD FOR ‘username’@’host’ = PASSWORD(‘newpassword’);
-- 修改指定使用者的密碼
SET PASSWORD FOR 'pwdManager'@'%' = PASSWORD('123456');
  • 修改authentication_string欄位
-- mysql57版本的修改密碼方式(會產生一個警告)
UPDATE MySQL.user SET authentication_string=PASSWORD('1234') WHERE USER='pwdManager'
-- 必須進行重新整理操作,否則新密碼不生效
FLUSH PRIVILEGES;

通常都是在安裝MySQL5.7的時候使用最後一種修改密碼方式 在安裝的時候如果沒有更改密碼,後來通過免密碼登入的方式更改密碼,輸入update mysql.user set password=password(‘root’) where user=’root’時會提示一個錯誤: ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’ 原來是mysql資料庫下已經沒有password這個欄位了,password欄位改成了authentication_string 所以更改語句替換為update MySQL.user set authentication_string=password(‘root’) where user=’root’ ;即可