MySQL用戶管理


MySQL之用戶管理

創建用戶

create user username@host;      5.7.17 不允許
create user username@host identified by 'password';
@'%'
@ip
@'network'

說明:用戶的信息保存在mysql數據庫中的user表中,驗證用戶是否創建成功如下:

select user,host,password from mysql.user;    

用戶權限

權限分類

USAGE                                             無權限,只有登錄數據庫,只可以使用test或test_*數據庫
ALL                                               所有權限
select/update/delete/super/slave/reload           指定的權限
with grant option                                 允許把自己的權限授予其它用戶或者從其他用戶收回自己的權限

作用范圍

*.*                                     全庫、全表(mysql.user)
mysql.*                                  mysql庫下所有表(某庫中的所有表)(mysql.db)
mysql.user                              mysql庫中user表(單表)(mysql.table_priv)
mysql.user.host                          mysql庫中user表的host列(mysql.columns_priv)

主機登錄權限

user@localhost                                    表示user只能在本地通過socket登錄服務器
user@192.168.0.1                                  表示user用戶只能在192.168.0.1登錄數據庫服務器
user@192.168.0.0/255.555.255.0                    指定某個子網的主機可以登錄數據庫
user@%                                            表示user用戶能在所有的機器上登錄數據庫服務器

用戶授權

show grants; 查看用戶權限
grant 權限 on 庫.表 to 用戶@主機
grant 權限(列1,列2,...) on 庫.表 to 用戶@主機

mysql> grant select on db01.* to 'jack'@'10.1.1.0/255.255.255.0';
mysql> flush privileges;

mysql> grant update(name,math) on db01.t2 to 'jack'@'10.1.1.0/255.255.255.0';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;

mysql> grant all on *.* to 'zhang'@'10.1.1.254' identified by '123'
mysql> flush privileges;
注意:從MySQL
5.7.6開始,不贊成使用grant修改密碼。使用 ALTER USER來代替。 ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; ALTER USER USER() IDENTIFIED BY 'mypass'; 如果當前連接是匿名用戶可以用該語句修改密碼

權限的保存位置

mysql.user              所有mysql用戶的賬號和密碼,以及對用戶對全庫全表權限(*.*)
mysql.db                非mysql庫的授權都保存在此(db.*)
mysql.table_priv        某庫某表的授權(db.table)
mysql.columns_priv      某庫某表某列的授權(db.table.col1)
mysql.procs_priv        某庫存儲過程的授權

回收權限:revoke

mysql> revoke update,select on mysql.user from stu6@localhost;    --撤消指定的權限
mysql> revoke all privileges,grant option from stu4@'%';       --撤消所有的權限

刪除用戶

mysql> drop user user01@'localhost';                              刪除用戶
mysql> select user from mysql.user where user='user01';            驗證用戶是否刪除成功
mysql> drop user user;                                  默認刪除該用戶從任意主機登陸
mysql> rename user u01@'instructor.example.com' to u001@'localhost';  重命名用戶名
mysql> show grants;                                                查看用戶權限
mysql> show grants for user02@'%';                              查看指定用戶的權限 
mysql> drop user ''@'rhel6.example.com';                        刪除一個匿名用戶
mysql> delete from mysql.user where user='';                    刪除mysql中的匿名用戶
mysql> delete from mysql.user where user='root' and host='::1';
mysql> flush privileges;

注意:如果tcp/ip登錄,服務器端口不是默認3306,則需要加端口號
問題:可不可以給一個新的用戶授權?

更改user02在所有機器上都能登錄數據庫.
mysql> update mysql.user set host='%' where user='user02'; 
mysql> flush privileges;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM