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:
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='%';