本章目錄
?
?
?
?
1. 數(shù)據(jù)庫用戶管理
2. 數(shù)據(jù)庫用戶授權
?
?
?
?
(1)新建用戶
- CREATE USER '用戶名'@'來源地址' [IDENTIFIED BY [PASSWORD] '密碼'];
- ‘用戶名’:指定將創(chuàng)建的用戶名
- ‘來源地址’:指定新創(chuàng)建的用戶可在哪些主機上登錄,可使用IP地址、網(wǎng)段、主機名的形式,本地用戶可用localhost,允許任意主機登錄可用通配符%
- ‘密碼’:若使用明文密碼,直接輸入’密碼’,插入到數(shù)據(jù)庫時由Mysql自動加密;
若使用加密密碼,需要先使用SELECT PASSWORD(‘密碼’); 獲取密文,再在語句中添加 PASSWORD ‘密文’;
若省略“IDENTIFIED BY”部分,則用戶的密碼將為空(不建議使用)
?。?)查看用戶信息
- 創(chuàng)建后的用戶保存在 mysql 數(shù)據(jù)庫的 user 表里
- USE mysql;
- SELECT User,authentication_string,Host from user;
?
?
?。?)重命名用戶
- RENAME USER 'zhangsan'@'localhost' TO 'wangwu'@'localhost';
- SELECT User,authentication_string,Host from user;
?
?
?。?)刪除用戶
- DROP USER 'lisi'@'localhost';
- SELECT User,authentication_string,Host from user;
?
?
?。?)修改當前登錄用戶密碼
- SET PASSWORD = PASSWORD('abc123');
- quit
- mysql -u root -p
?
?。?)修改其他用戶密碼
- SET PASSWORD FOR 'wangwu'@'localhost' = PASSWORD('abc123');
- use mysql;
- SELECT User,authentication_string,Host from user;
?
?。?)忘記 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 密碼,刷新數(shù)據(jù)庫
?
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 GRANT語句:專門用來設置數(shù)據(jù)庫用戶的訪問權限。當指定的用戶名不存在時,GRANT語句將會創(chuàng)建新的用戶;當指定的用戶名存在時,GRANT 語句用于修改用戶信息。 2 3 GRANT 權限列表 ON 數(shù)據(jù)庫名.表名 TO '用戶名'@'來源地址' [IDENTIFIED BY '密碼'];
?
1 #權限列表:用于列出授權使用的各種數(shù)據(jù)庫操作,以逗號進行分隔,如“select,insert,update”。使用“all”表示所有權限,可授權執(zhí)行任何操作。 2 3 #數(shù)據(jù)庫名.表名:用于指定授權操作的數(shù)據(jù)庫和表的名稱,其中可以使用通配符“*”。 4 5 #'用戶名@來源地址':用于指定用戶名稱和允許訪問的客戶機地址,即誰能連接、能從哪里連接。來源地址可以是域名、IP 地址,還可以使用“%”通配符,表示某個區(qū)域或網(wǎng)段內的所有地址,如“%.lic.com”、“192.168.184.%”等。 6 7 #IDENTIFIED BY:用于設置用戶連接數(shù)據(jù)庫時所使用的密碼字符串。在新建用戶時,若省略“IDENTIFIED BY”部分, 則用戶的密碼將為空。
?
#允許用戶wangwu在本地查詢 CLASS 數(shù)據(jù)庫中所有表的數(shù)據(jù)記錄,但禁止查詢其他數(shù)據(jù)庫中的表的記錄。
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;
?
?。?)查看權限
1 SHOW GRANTS FOR 用戶名@來源地址; 2 3 例: 4 SHOW GRANTS FOR 'wangwu'@'localhost';
?
(3)撤銷權限
1 REVOKE 權限列表 ON 數(shù)據(jù)庫名.表名 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權限只能用于數(shù)據(jù)庫登陸,不能執(zhí)行任何操作;USAGE權限不能被回收,即 REVOKE 不能刪除用戶。
1 flush privileges;
?
?
?
?
?
?
-
?
本文摘自 :https://www.cnblogs.com/