向MySQL增加新使用者權限

來源:互聯網
上載者:User
mysql|使用者權限 你可以有2個不同的方法增加使用者:通過使用GRANT語句或通過直接操作MySQL授權表。比較好的方法是使用GRANT語句,因為他們是更簡明並且好像錯誤少些。

下面的例子顯示出如何使用mysql客戶安裝新使用者。這些例子假定許可權根據以前的章節描述的預設被安裝。這意味著為了改變,你必須在mysqld正在運行同一台機器上,你必須作為MySQL root使用者串連,並且root使用者必須對mysql資料庫有insert許可權和reload系統管理權限。另外,如果你改變了root使用者口令,你必須如下的mysql命令指定它。

你可以通過發出GRANT語句增加新使用者:

shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
      IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
      IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

這些GRANT語句安裝3個新使用者:

monty
可以從任何地方串連伺服器的一個完全的超級使用者,但是必須使用一個口令('something'做這個。注意,我們必須對monty@localhost和monty@"%"發出GRANT語句。如果我們增加localhost條目,對localhost的匿名使用者條目在我們從本地主機串連接時由mysql_install_db建立的條目將優先考慮,因為它有更特定的Host欄位值,所以以user表排列順序看更早到來。
admin
可以從localhost沒有一個口令進行串連並且被授予reload和process系統管理權限的使用者。這允許使用者執行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,還有mysqladmin processlist。沒有授予資料庫有關的許可權。他們能在以後通過發出另一個GRANT語句授權。
dummy
可以不用一個口令串連的一個使用者,但是只能從本地主機。全域許可權被設定為'N'--USAGE權限類別型允許你無需許可權就可設定一個使用者。它假定你將在以後授予資料庫相關的許可權。
你也可以直接通過發出INSERT語句增加同樣的使用者存取資訊,然後告訴伺服器再次裝入授權表:

shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'),
        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'),
        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user SET Host='localhost',User='admin',
         Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
            VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;

取決於你的MySQL版本,對上述,你可能必須使用一個不同數目'Y'值(在3.22.11以前的版本有更少的許可權列)。對admin使用者,只用在3.22.11開始的版本具有的更加可讀的INSERT擴充的文法。

注意,為了設定一個超級使用者,你只需創造一個user表條目,其許可權欄位設為'Y'。不需要db或host表的條目。

在user表中的許可權列不是由最後一個INSERT語句明確設定的(對dummy使用者),因此那些列被賦予預設值'N'。這是GRANT USAGE做的同樣的事情。

下列例子增加一個使用者custom,他能從主機localhost、server.domain和whitehouse.gov串連。他只想要從localhost存取bankaccount資料庫,從whitehouse.gov存取expenses資料庫和從所有3台主機存取customer資料庫。他想要從所有3台主機上使用口令stupid。

為了使用GRANT語句設定個使用者的許可權,運行這些命令:

shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
      ON bankaccount.*
      TO custom@localhost
      IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
      ON expenses.*
      TO custom@whitehouse.gov
      IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
      ON customer.*
      TO custom@'%'
      IDENTIFIED BY 'stupid';

通過直接修改授權表設定使用者權限,運行這些命令(注意,在結束時FLUSH PRIVILEGES):

shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
    VALUES('localhost','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
    VALUES('server.domain','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
    VALUES('whitehouse.gov','custom',PASSWORD('stupid'));
mysql> INSERT INTO db
    (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    Create_priv,Drop_priv)
    VALUES
    ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    Create_priv,Drop_priv)
    VALUES
    ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
    (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
    Create_priv,Drop_priv)
    VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;

頭3個INSERT語句增加user表條目,允許使用者custom用給定口令從不同的主機進行串連,但是沒有授予任何許可(所有許可權被設定為預設值'N')。後3個INSERT語句增加db表條目,授予custom以bankaccount、expenses和customer資料庫許可權,但是只能在從正確的主機存取時。通常,在授權表直接被修改時,伺服器必須被告知再次裝入他們(用FLUSH PRIVILEGES)以便使許可權修改生效。

如果你想要給特定的使用者從一個給定的域上的任何機器上存取許可權,你可以發出一個如下的GRANT語句:

mysql> GRANT ...
      ON *.*
      TO myusername@"%.mydomainname.com"
      IDENTIFIED BY 'mypassword';

為了通過直接修改授權表做同樣的事情,這樣做:

mysql> INSERT INTO user VALUES ('%.mydomainname.com', 'myusername',
      PASSWORD('mypassword'),...);
mysql> FLUSH PRIVILEGES;

你也可以使用xmysqladmin、mysql_webadmin甚至xmysql在授權表中插入、改變和更新值。你可以在MySQL的Contrib目錄找到這些公用程式。


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。