Blog.060 MySQL 資料庫使用者管理與授權
阿新 • • 發佈:2021-09-13
本章目錄
(1)新建使用者
- CREATE USER '使用者名稱'@'來源地址' [IDENTIFIED BY [PASSWORD] '密碼'];
- ‘使用者名稱’:指定將建立的使用者名稱
- ‘來源地址’:指定新建立的使用者可在哪些主機上登入,可使用IP地址、網段、主機名的形式,本地使用者可用localhost,允許任意主機登入可用萬用字元%
- ‘密碼’:若使用明文密碼,直接輸入’密碼’,插入到資料庫時由Mysql自動加密;
若使用加密密碼,需要先使用SELECT PASSWORD(‘密碼’); 獲取密文,再在語句中新增 PASSWORD ‘密文’;
若省略“IDENTIFIED BY”部分,則使用者的密碼將為空(不建議使用)
(2)檢視使用者資訊
- 建立後的使用者儲存在 mysql 資料庫的 user 表裡
- USE mysql;
- SELECT User,authentication_string,Host from user;
(3)重新命名使用者
- RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost';
- SELECT User,authentication_string,Host from user;
(4)刪除使用者
- DROP USER 'lisi'@'localhost';
- SELECT User,authentication_string,Host from user;
(5)修改當前登入使用者密碼
- SET PASSWORD = PASSWORD('abc123');
- quit
- mysql -u root -p
(6)修改其他使用者密碼
- SET PASSWORD FOR 'wangwu'@'localhost' = PASSWORD('abc123');
- use mysql;
- SELECT User,authentication_string,Host from user;
(7)忘記 root 密碼的解決辦法
- 修改 /etc/my.cnf 配置檔案,不使用密碼直接登入到 mysql
1 vim /etc/my.cnf 2 [mysqld] 3 skip-grant-tables #新增,使登入mysql不使用授權表 4 systemctl restart mysqld 5 mysql #直接登入
- 使用 update 修改 root 密碼,重新整理資料庫
1 UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('112233') where user='root'; 2 FLUSH PRIVILEGES; 3 quit 4 5 再把 /etc/my.cnf 配置檔案裡的 skip-grant-tables 刪除,並重啟 mysql 服務。 6 mysql -u root -p 7 112233
(1)授予許可權
1 GRANT語句:專門用來設定資料庫使用者的訪問許可權。當指定的使用者名稱不存在時,GRANT語句將會建立新的使用者;當指定的使用者名稱存在時,GRANT 語句用於修改使用者資訊。 2 3 GRANT 許可權列表 ON 資料庫名.表名 TO '使用者名稱'@'來源地址' [IDENTIFIED BY '密碼'];
1 #許可權列表:用於列出授權使用的各種資料庫操作,以逗號進行分隔,如“select,insert,update”。使用“all”表示所有許可權,可授權執行任何操作。 2 3 #資料庫名.表名:用於指定授權操作的資料庫和表的名稱,其中可以使用萬用字元“*”。 4 5 #'使用者名稱@來源地址':用於指定使用者名稱稱和允許訪問的客戶機地址,即誰能連線、能從哪裡連線。來源地址可以是域名、IP 地址,還可以使用“%”萬用字元,表示某個區域或網段內的所有地址,如“%.lic.com”、“192.168.184.%”等。 6 7 #IDENTIFIED BY:用於設定使用者連線資料庫時所使用的密碼字串。在新建使用者時,若省略“IDENTIFIED BY”部分, 則使用者的密碼將為空。
#允許使用者wangwu在本地查詢 CLASS 資料庫中所有表的資料記錄,但禁止查詢其他資料庫中的表的記錄。
1 例: 2 GRANT select ON CLASS.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456'; 3 quit; 4 mysql -u wangwu -p 5 123456 6 show databases; 7 use information_schema; 8 show tables; 9 select * from INNODB_SYS_TABLESTATS;
#允許使用者wangwu在本地遠端連線 mysql ,並擁有所有許可權。
1 quit; 2 mysql -u root -p112233 3 GRANT ALL PRIVILEGES ON *.* TO 'wangwu'@'localhost' IDENTIFIED BY '123456'; 4 5 flush privileges; 6 quit 7 8 mysql -u wangwu -p123456 9 create database SCHOOL;
(2)檢視許可權
1 SHOW GRANTS FOR 使用者名稱@來源地址; 2 3 例: 4 SHOW GRANTS FOR 'wangwu'@'localhost';
(3)撤銷許可權
1 REVOKE 許可權列表 ON 資料庫名.表名 FROM 使用者名稱@來源地址; 2 3 例:quit; 4 mysql -u root -p112233 5 SHOW GRANTS FOR 'wangwu'@'localhost'; 6 REVOKE SELECT ON "CLASS".* FROM 'wangwu'@'localhost'; 7 8 SHOW GRANTS FOR 'wangwu'@'localhost';
#USAGE許可權只能用於資料庫登陸,不能執行任何操作;USAGE許可權不能被回收,即 REVOKE 不能刪除使用者。
1 flush privileges;
-