本章目錄
?
?
?
?
1. 數(shù)據(jù)庫(kù)用戶管理
2. 數(shù)據(jù)庫(kù)用戶授權(quán)
?
?
?
?
(1)新建用戶
- CREATE USER '用戶名'@'來(lái)源地址' [IDENTIFIED BY [PASSWORD] '密碼'];
- ‘用戶名’:指定將創(chuàng)建的用戶名
- ‘來(lái)源地址’:指定新創(chuàng)建的用戶可在哪些主機(jī)上登錄,可使用IP地址、網(wǎng)段、主機(jī)名的形式,本地用戶可用localhost,允許任意主機(jī)登錄可用通配符%
- ‘密碼’:若使用明文密碼,直接輸入’密碼’,插入到數(shù)據(jù)庫(kù)時(shí)由Mysql自動(dòng)加密;
若使用加密密碼,需要先使用SELECT PASSWORD(‘密碼’); 獲取密文,再在語(yǔ)句中添加 PASSWORD ‘密文’;
若省略“IDENTIFIED BY”部分,則用戶的密碼將為空(不建議使用)
(2)查看用戶信息
- 創(chuàng)建后的用戶保存在 mysql 數(shù)據(jù)庫(kù)的 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;
?
?
?。?)修改當(dāng)前登錄用戶密碼
- 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;
?
?。?)忘記 root 密碼的解決辦法
- 修改 /etc/my.cnf 配置文件,不使用密碼直接登錄到 mysql
1 vim /etc/my.cnf 2 [mysqld] 3 skip-grant-tables #添加,使登錄mysql不使用授權(quán)表 4 systemctl restart mysqld 5 mysql #直接登錄
?
- 使用 update 修改 root 密碼,刷新數(shù)據(jù)庫(kù)
?
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 服務(wù)。 6 mysql -u root -p 7 112233
?
?
?。?)授予權(quán)限
1 GRANT語(yǔ)句:專門(mén)用來(lái)設(shè)置數(shù)據(jù)庫(kù)用戶的訪問(wèn)權(quán)限。當(dāng)指定的用戶名不存在時(shí),GRANT語(yǔ)句將會(huì)創(chuàng)建新的用戶;當(dāng)指定的用戶名存在時(shí),GRANT 語(yǔ)句用于修改用戶信息。 2 3 GRANT 權(quán)限列表 ON 數(shù)據(jù)庫(kù)名.表名 TO '用戶名'@'來(lái)源地址' [IDENTIFIED BY '密碼'];
?
1 #權(quán)限列表:用于列出授權(quán)使用的各種數(shù)據(jù)庫(kù)操作,以逗號(hào)進(jìn)行分隔,如“select,insert,update”。使用“all”表示所有權(quán)限,可授權(quán)執(zhí)行任何操作。 2 3 #數(shù)據(jù)庫(kù)名.表名:用于指定授權(quán)操作的數(shù)據(jù)庫(kù)和表的名稱,其中可以使用通配符“*”。 4 5 #'用戶名@來(lái)源地址':用于指定用戶名稱和允許訪問(wèn)的客戶機(jī)地址,即誰(shuí)能連接、能從哪里連接。來(lái)源地址可以是域名、IP 地址,還可以使用“%”通配符,表示某個(gè)區(qū)域或網(wǎng)段內(nèi)的所有地址,如“%.lic.com”、“192.168.184.%”等。 6 7 #IDENTIFIED BY:用于設(shè)置用戶連接數(shù)據(jù)庫(kù)時(shí)所使用的密碼字符串。在新建用戶時(shí),若省略“IDENTIFIED BY”部分, 則用戶的密碼將為空。
?
#允許用戶wangwu在本地查詢 CLASS 數(shù)據(jù)庫(kù)中所有表的數(shù)據(jù)記錄,但禁止查詢其他數(shù)據(jù)庫(kù)中的表的記錄。
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在本地遠(yuǎn)程連接 mysql ,并擁有所有權(quán)限。
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;
?
?。?)查看權(quán)限
1 SHOW GRANTS FOR 用戶名@來(lái)源地址; 2 3 例: 4 SHOW GRANTS FOR 'wangwu'@'localhost';
?
?。?)撤銷(xiāo)權(quán)限
1 REVOKE 權(quán)限列表 ON 數(shù)據(jù)庫(kù)名.表名 FROM 用戶名@來(lái)源地址; 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權(quán)限只能用于數(shù)據(jù)庫(kù)登陸,不能執(zhí)行任何操作;USAGE權(quán)限不能被回收,即 REVOKE 不能刪除用戶。
1 flush privileges;
?
?
?
?
?
?
-
?
本文摘自 :https://www.cnblogs.com/