我們今天主要向大家討論的是用MySQL GRANT語句來增添新的用戶的實際操作方案,以及對圖解MySQL數據庫的實際安裝步驟與具體操作,你如果對其有興趣的話你就可以點擊以下的文章進行觀看了。
如何實現MySQL(和PHP搭配之最佳組合)數據庫的備份與恢復
MySQL(和PHP搭配之最佳組合)數據庫接口的VC實現與應用(2)
如何備份MySQL(和PHP搭配之最佳組合)數據庫
MySQL(和PHP搭配之最佳組合):用Java來測試MySQL(和PHP搭配之最佳組合)數據庫的最
MySQL(和PHP搭配之最佳組合)數據庫技術01)
如何在ASP中連接MySQL(和PHP搭配之最佳組合)數據庫
最簡便的MySQL(和PHP搭配之最佳組合)數據庫備份的方法
MySQL(和PHP搭配之最佳組合)數據庫備份與恢復
MySQL(和PHP搭配之最佳組合)數據庫連接過多的錯誤,可能的原
下面的例子顯示如何使用MySQL(和PHP搭配之最佳組合)客戶安裝新用戶。這些例子假定權限已缺省被安裝。
這意味著為了改變,你必須在MySQL(和PHP搭配之最佳組合)正在運行同一台機器上,你必須作為MySQL(和PHP搭配之最佳組合) root用戶連接,並且root用戶必須對MySQL(和PHP搭配之最佳組合)數據庫有insert權限和reload管理權限。另外,如果你改變了root用戶口令,你必須如下的MySQL(和PHP搭配之最佳組合)命令指定它。
你可以通過發出MySQL GRANT語句增加新用戶:
- shell> MySQL(和PHP搭配之最佳組合) --user=root MySQL(和PHP搭配之最佳組合)
MySQL(和PHP搭配之最佳組合)> GRANT ALL PRIVILEGES ON *.*
TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
MySQL(和PHP搭配之最佳組合)> GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
MySQL(和PHP搭配之最佳組合)> MySQL GRANT RELOAD,PROCESS ON *.* TO admin@localhost; MySQL(和PHP搭配之最佳組合)> MySQL GRANT USAGE ON *.* TO dummy@localhost;
這些GRANT語句安裝3個新用戶:
monty:可以從任何地方連接服務器的一個完全的超級用戶,但是必須使用一個口令('something'做這個。注意,我們必須對monty@localhost和monty@"%"發出MySQL GRANT語句。
如果我們增加localhost條目,對localhost的匿名用戶條目在我們從本地主機連接接時由MySQL(和PHP搭配之最佳組合)_install_db創建的條目將優先考慮,因為它有更特定的Host字段值,所以以user表排列順序看更早到來。
admin:可以從localhost沒有一個口令進行連接並且被授予reload和process管理權限的用戶。這允許用戶執行MySQL(和PHP搭配之最佳組合)admin reload、MySQL(和PHP搭配之最佳組合)admin refresh和MySQL(和PHP搭配之最佳組合)admin flush-*命令,還有MySQL(和PHP搭配之最佳組合)admin processlist。
沒有授予數據庫有關的權限。他們能在以後通過發出另一個GRANT語句授權。
dummy:可以不用一個口令連接的一個用戶,但是只能從本地主機。全局權限被設置為'N'--USAGE權限類型允許你無需權限就可設置一個用戶。它假定你將在以後授予數據庫相關的權限。
你也可以直接通過發出INSERT語句增加同樣的用戶存取信息,然後告訴服務器再次裝入授權表:
- shell> MySQL(和PHP搭配之最佳組合) --user=root MySQL(和PHP搭配之最佳組合)
MySQL(和PHP搭配之最佳組合)> INSERT INTO user
VALUES('localhost','monty',PASSWORD('something'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
MySQL(和PHP搭配之最佳組合)> INSERT INTO user
VALUES('%','monty',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
MySQL(和PHP搭配之最佳組合)> INSERT INTO user SET Host='localhost',User='admin', Reload_priv='Y', Process_priv='Y';
MySQL(和PHP搭配之最佳組合)> INSERT INTO user (Host,User,Password) VALUES('localhost','dummy','');
MySQL(和PHP搭配之最佳組合)> FLUSH PRIVILEGES;
取決於你的MySQL(和PHP搭配之最佳組合)版本,對上述,你可能必須使用一個不同數目'Y'值(在3.22.11以前的版本有更少的權限列)。對admin用戶,只用在3.22.11開始的版本具有的更加可讀的INSERT擴充的語法。
注意,為了設置一個超級用戶,你只需創造一個user表條目,其權限字段設為'Y'。不需要db或host表的條目。
在user表中的權限列不是由最後一個INSERT語句明確設置的(對dummy用戶),因此那些列被賦予缺省值'N'。這是MySQL GRANT USAGE做的同樣的事情。
下列例子增加一個用戶custom,他能從主機localhost、server.domain和whitehouse.gov連接。他只想要從localhost存取bankaccount數據庫,從whitehouse.gov存取expenses數據庫和從所有3台主機存取customer數據庫。他想要從所有3台主機上使用口令stupid。
為了使用GRANT語句設置個用戶的權限,運行這些命令:
- shell> MySQL(和PHP搭配之最佳組合) --user=root MySQL(和PHP搭配之最佳組合) MySQL(和PHP搭配之最佳組合)> MySQL GRANT SELECT,
INSERT,UPDATE,DELETE,CREATE,DROP ON bankaccount.* TO custom@localhost IDENTIFIED BY 'stupid';
MySQL(和PHP搭配之最佳組合)> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON expenses.*
TO [email protected] IDENTIFIED BY 'stupid';
MySQL(和PHP搭配之最佳組合)> MySQL GRANT SELECT,
INSERT,UPDATE,DELETE,CREATE,DROP ON customer.* TO custom@'%' IDENTIFIED BY 'stupid';
通過直接修改授權表設置用戶權限,運行這些命令(注意,在結束時FLUSH PRIVILEGES):
- shell> MySQL(和PHP搭配之最佳組合) --user=root MySQL(和PHP搭配之最佳組合)
MySQL(和PHP搭配之最佳組合)> INSERT INTO user (Host,User,Password) VALUES('localhost','custom',PASSWORD('stupid'));
MySQL(和PHP搭配之最佳組合)> INSERT INTO user (Host,User,Password) VALUES('server.domain','custom',PASSWORD('stupid'));
MySQL(和PHP搭配之最佳組合)> INSERT INTO user (Host,User,Password) VALUES('whitehouse.gov','custom',PASSWORD('stupid'));
MySQL(和PHP搭配之最佳組合)> 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(和PHP搭配之最佳組合)> 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(和PHP搭配之最佳組合)> 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(和PHP搭配之最佳組合)> FLUSH PRIVILEGES;