當(dāng)前位置:首頁(yè) > IT技術(shù) > 數(shù)據(jù)庫(kù) > 正文

Blog.060 MySQL 數(shù)據(jù)庫(kù)用戶管理與授權(quán)
2021-09-13 15:48:52

本章目錄

?

?

?

?

1. 數(shù)據(jù)庫(kù)用戶管理
2. 數(shù)據(jù)庫(kù)用戶授權(quán)

?

?

?

?

1. 數(shù)據(jù)庫(kù)用戶管理

    (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

?

2. 數(shù)據(jù)庫(kù)用戶授權(quán)

?

   ?。?)授予權(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/

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >