當前位置:首頁 > IT技術 > 數(shù)據(jù)庫 > 正文

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

本章目錄

?

?

?

?

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

?

?

?

?

1. 數(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

?

2. 數(shù)據(jù)庫用戶授權

?

   ?。?)授予權限

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/

開通會員,享受整站包年服務立即開通 >