1. 程式人生 > >Mysql中建立使用者和授權的方法

Mysql中建立使用者和授權的方法

建立使用者語句:

  create user 使用者名稱; eg: create user sa;

給建立的使用者授權:

  grant 許可權1,許可權2,...許可權n on 資料庫名稱.表名稱 to 使用者名稱@使用者地址 identified by '連線口令';

 如果是本地的話,就不需要連結口令的  eg:grant all *.* to 'sa'@'localhost';

再改變使用者的時候,網上大多的介紹很煩雜,可以使用列如SQLyog等視覺化工具重新建立一個連結,操作極為簡單。

以下為在網上搜索的相關資料

一下給出GRANT 語句的語法:

     GRANT privileges (columns)

           ON what

           TO user IDENTIFIEDBY "password"

           WITH GRANT OPTION

對使用者授權

mysql>grant rights on database.* to [email protected] identified by "pass";

例1:

   增加一個使用者test1密碼為abc,讓他可以在任何主機上登入,並對所有資料庫有查詢、插入、修改、刪除的許可權。

    grant select,insert,update,delete on *.* to mailto:

[email protected]"" Identified by "abc";

      ON 子句中*.* 說明符的意思是“所有資料庫,所有的表”

例2:

   增加一個使用者test2密碼為abc, 讓他只可以在localhost上登入,並可以對資料庫mydb進行查詢、插入、修改、刪除的操作。

grant select,insert,update,delete on mydb.* to [email protected] identified by "abc";

例子3

增加一個使用者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 [email protected]   IDENTIFIED BY 'stupid';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

                ON expenses.*   TO [email protected] IDENTIFIED BY 'stupid';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

                ON customer.* TO [email protected]'%'   IDENTIFIED BY 'stupid';

==============================================

許可權資訊用user、db、host、tables_priv和columns_priv表被儲存在mysql資料庫中(即在名為mysql的資料庫中)。

許可權             列                   Context

select           Select_priv          表                                      

insert           Insert_priv          表  

update           Update_priv          表 

delete           Delete_priv          表 

index            Index_priv           表 

alter            Alter_priv           表 

create           Create_priv          資料庫、表或索引 

drop             Drop_priv            資料庫或表 

grant            Grant_priv           資料庫或表 

references       References_priv      資料庫或表 

reload           Reload_priv          伺服器管理 

shutdown         Shutdown_priv        伺服器管理 

process          Process_priv         伺服器管理 

file             File_priv            在伺服器上的檔案存取

1.

select、insert、update和delete許可權        

允許你在一個數據庫現有的表上實施操作,是基本許可權

2.

alter許可權允許你使用ALTER TABLE

3.

create和drop許可權允許你建立新的資料庫和表,或拋棄(刪除)現存的資料庫和表

       如果你將mysql資料庫的drop許可權授予一個使用者,該使用者能拋棄儲存了MySQL存取許可權的資料庫!

4.

grant許可權允許你把你自己擁有的那些許可權授給其他的使用者。

你不能明顯地指定一個給定使用者應該被拒絕存取。即,你不能明顯地匹配一個使用者並且然後拒絕連線。 

你不能指定一個使用者有權建立立或拋棄一個數據庫中的表,也不能建立或拋棄資料庫本身。

可以同時列出許多被授予的單個許可權。

例如,如果想讓使用者能讀取和修改已有表的內容,但又不允許建立新表或刪除表,可按如下授權:

     GRANT SELECT,INSERT,DELETE,UPDATE   ON samp_db.*    TO mailto:[email protected]

         IDENTIFIEDBY "pass" 

grant ALL PRIVILEGES on *.* to [email protected]"xxx.xxx.xxx.xxx" identified by 'password' with grant option;

flush tables;

flush privileges;

建立一個使用者,並賦予所有權利,當然你可將grant ALL PRIVILEGES 改成:grant insert,select,update,delete,create,alter,index

檢視:

select host,user,password from user;

修改:

use mysql

update user set host='xxx.xxx.xxx.%' where user='root'

刪除:

delete from user where host='%';