程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> [MySQL]賬戶及權限管理

[MySQL]賬戶及權限管理

編輯:MySQL綜合教程

[MySQL]賬戶及權限管理   MySQL初始賬戶管理   MySQL的初始賬戶如下:

[sql] 
[root@lx16 ~]# mysql -u root  
mysql> select host,user,password from mysql.user;  
+-----------+------+----------+  
| host      | user | password |  
+-----------+------+----------+  
| lx16      | root |          |  
| 127.0.0.1 | root |          |  
| ::1       | root |          |  
| localhost |      |          |  
| lx16      |      |          |  
| localhost | root |          |  
+-----------+------+----------+  

 

MySQL有兩類初始用戶: root超級賬戶:擁有全部的權限,可以做任何事。 匿名賬戶:如何人都可以通過它連接服務器,但它權限很小。 在默認情況下,這些賬戶都沒有口令,因此為了安全起見,我們首先必須得為所有的root賬戶設置密碼。 設置密碼的第一種方法是用SET PASSWORD語句,假如我們現在要給'root'@'localhost'設置口令,只要執行:
[sql] 
mysql> set password for 'root'@'localhost'=password('*****');  

 

  設置密碼的第二種方法是直接update user權限表,這種方法的好處是可以同時給多個賬戶設置密碼,如下面的語句可以一次修改所有root賬戶的密碼:
[sql] 
mysql> update mysql.user set password=password('***') where user='root';  
mysql> flush privileges;  

 

如果用update方式修改,必須明確告訴服務器重新加載權限表(flush privileges)   對於匿名賬戶,強烈建議將他們刪除,刪除語句如下:
[sql] 
mysql> drop user ''@'localhost';  
mysql> drop user ''@'lx16'; 
  執行完以上操作之後,user權限表裡的數據如下:
[sql] 
mysql> select host,user,password from mysql.user;  
+-----------+------+-------------------------------------------+  
| host      | user | password                                  |  
+-----------+------+-------------------------------------------+  
| lx16      | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  
| 127.0.0.1 | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  
| ::1       | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  
| localhost | root | *578EC7851088AC1F2A67B100540344B03BD2BA99 |  
+-----------+------+-------------------------------------------+  

 

  創建新賬戶   MySQL不僅要求你必須值得誰(user_name)能連接,還必須指定從什麼地方連接(host_name),也就是說即便兩個賬戶擁有相同的名字,如果他們將從不同客戶端連接,你也要為它們各自創建一個賬戶。 可以利用以下兩個通配符靈活配置主機名的限制: ‘%’ - 匹配任何多個字符 ‘-’ - 配置一個字符
[sql] 
test賬戶可以從任意IP連接  
create user 'test'@'%' identified by '***';  
test賬戶只能從本地連接  
create user 'test'@'localhost' identified by '***';  
test賬戶只能從'192.168.2.%'網段連接  
create user 'test'@'192.168.2.%' identified by '***';  
還可以使用IP掩碼  
create user 'test'@'192.168.2.2  

 

  權限管理   對賬戶授權需要使用Grant語句,如果賬戶已存在,Grant語句給它授權,如果賬戶不存在,Grant語句先創建它,再給它授權。 可以通過show grants語句獲得自己的權限:
[sql] 
mysql> show grants;  
+----------------------------------------------------------------------------------------------------------------------------------------+  
| Grants for root@localhost                                                                                                              |  
+----------------------------------------------------------------------------------------------------------------------------------------+  
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*578EC7851088AC1F2A67B100540344B03BD2BA99' WITH GRANT OPTION |  
+----------------------------------------------------------------------------------------------------------------------------------------+  

 

也可以通過show grants for 獲得其它用戶的權限:
[sql] 
mysql>show grants for ''@'localhost';  
+--------------------------------------+  
| Grants for @localhost                |  
+--------------------------------------+  
| GRANT USAGE ON *.* TO ''@'localhost' |  
+--------------------------------------+  

 

  上面顯示的是兩種特殊權限,一種是ALL(後面的PRIVILEGES關鍵字可省略),表示所有操作的權限(但不包括Grant權限,Grant權限由with grant option賦予);另一種是USAGE,一種特殊的“無權限”的權限。   在某些少數情況下,我們可能需要更細致的權限控制,MySQL可以做到在列上進行授權,下面這條語句表示把全表的select權限給test,但只把(street,city)這兩列的update權限給它:
[sql] 
grant select, update (street,city) on sampdb.member to 'test'@'localhost';  

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved