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

MySQL獨特的用戶機制

編輯:MySQL綜合教程

MySQL獨特的用戶機制   對於 MySQL 初學者來說,MySQL 的用戶機制會讓人一下子摸不著頭腦。 MySQL 的用戶名有不像 MS-SQL、Oracle 數據庫那樣單單只是個用戶名。跟防火牆類似,它還包含了登陸限止機制。例如,對於下面三個 MySQL 用戶名:    1. dba@'localhost'        -- dba 只能從本機登陸  2. dba@'%'                -- dba 可以從網絡中任意機器訪問 MySQL 服務器  3. dba@'192.168.1.201'    -- dba 可以從 192.168.1.201 機器上訪問 MySQL 服務器  MySQL 的用戶機制太棒了!如果我們創建用戶:    dba@'localhost'  dba@'192.168.1.201'  那麼 dba 用戶就只能從本機和IP地址為 192.168.1.201 的機器上連接 MySQL 服務器。並且這兩個 dba 用戶可以有各自不同權限和密碼。這對於 MySQL 數據庫安全來說,無疑又是一道重要保障。    另外需要注意的是:    一、對於 create user dba 來說,實際上等價於 create user dba@'%'。    mysql> user mysql;    mysql> select * from user;  +-----------+----------+-------------------------------------------  | Host      | User     | Password  +-----------+----------+-------------------------------------------  | localhost | root     | *00B030D4A50E401A71BE65401BACC15BDF491830  +-----------+----------+-------------------------------------------    mysql> create user dba identified by 'dbaany';    mysql> select * from user;  +-----------+----------+-------------------------------------------  | Host      | User     | Password  +-----------+----------+-------------------------------------------  | localhost | root     | *00B030D4A50E401A71BE65401BACC15BDF491830  | %         | dba      | *FF34267EA1B8DFE97F151870830EC8FE9DF816B4  +-----------+----------+-------------------------------------------  二、對於 MySQL 數據庫中同時存在用戶 dba@'localhost' 和 dba@'%' 來說,從本地訪問 MySQL 時,用戶應是 dba@'localhost';從遠程訪問 MySQL 時,用戶環境應是 dba@'%'    mysql> create user dba@'localhost' identified by 'dbalocal';    mysql> select * from user;  +-----------+----------+-------------------------------------------  | Host      | User     | Password  +-----------+----------+-------------------------------------------  | localhost | root     | *00B030D4A50E401A71BE65401BACC15BDF491830  | localhost | dba      | *B44F37235B0B12C2DE1B9DF83105ACF23FA29EFF  | %         | dba      | *FF34267EA1B8DFE97F151870830EC8FE9DF816B4  +-----------+----------+-------------------------------------------    C:\>mysql -u dba -p  Enter password: dbaany  ERROR 1045 (28000): Access denied for user 'dba'@'localhost' (using password: YES)    C:\>mysql -u dba -p  Enter password: dbalocal  Welcome to the MySQL monitor.  Commands end with ; or \g.  mysql>  三、訪問 MySQL 數據庫的時候,只需指定用戶名 dba,而不是用戶全名 dba@'localhost' 或者 dba'%'。    C:\>mysql -u dba@'localhost' -p  Enter password: dbalocal  ERROR 1045 (28000): Access denied for user 'dba@'localhost''@'localhost' (using password: YES)    C:\>mysql -u dba@'%' -p  Enter password: dbaany  ERROR 1045 (28000): Access denied for user 'dba@'%''@'localhost' (using password: YES)    C:\>mysql -u dba -p  Enter password: dbalocal  Welcome to the MySQL monitor.  mysql>  四、遠程訪問 MySQL 數據庫時,應指定 host 參數。    mysql> create user dba@'192.168.1.110' identified by 'dba110';    mysql> select * from user;  +---------------+----------+-------------------------------------------  | Host          | User     | Password  +---------------+----------+-------------------------------------------  | localhost     | root     | *00B030D4A50E401A71BE65401BACC15BDF491830  | localhost     | dba      | *B44F37235B0B12C2DE1B9DF83105ACF23FA29EFF  | 192.168.1.110 | dba      | *E298453C1D169F9C724BE989EFD5581BAB4381AE  | %             | dba      | *FF34267EA1B8DFE97F151870830EC8FE9DF816B4  +---------------+----------+-------------------------------------------    C:\>mysql -h 192.168.1.110 -u dba -p  Enter password: dba110  Welcome to the MySQL monitor.  mysql>  五、注意 mysql.user 表中用戶 dba 的順序,雖然我們創建 dba 用戶的順序是: 1. dba@'%' 2. dba@'localhost' 3. dba@'192.168.1.110'。但 MySQL 在處理用戶登陸的時候卻采用不同的順序。    +---------------+----------+  | Host          | User     |  +---------------+----------+  | localhost     | dba      |  | 192.168.1.110 | dba      |  | %             | dba      |  +---------------+----------+  如果 dba 用戶在本機登陸,MySQL 首先嘗試使用 dba@localhost 用戶;如果該用戶不存在,則 MySQL 會選擇 dba@'%'用戶來完成登陸。    如果 dba 用戶在遠程登陸,MySQL 首先嘗試使用 dba@'192.168.1.110' 用戶來登陸,如果 ip 地址不匹配,MySQL 最終會使用 dba@'%' 用戶來完成登陸。當然,如果不存在 dba@'%',則登陸失敗。   

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