————————————————————————————————————————
添加權限:
The only priv_type values you can specify for a table are SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, INDEX, and ALTER.
"FILE" is only assigned as a GLOBAL permission
" The EXECUTION, FILE, PROCESS, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHOW DATABASES, SHUTDOWN, and SUPER privileges are administrative privileges that can only be granted globally (using ON *.* syntax)."
原來FILE這種權限屬於管理的權限,要賦予用戶時,必須要用*.*。(不可針對庫和表)
root@localhost:mysql.sock[(none)] 15:31:33>GRANT FILE ON *.* TO hx@localhost;
Query OK, 0 rows affected (0.00 sec)
問題解決。
————————————————————————————————————————
今天在使用mysql的LOAD DATA LOCAL INFILE 語法插入文件的時候,提示:ERROR 1148 (42000): The used command is not allowed with this MySQL version
原因是;如果編譯安裝mysql時沒有指定–enable-local-infile,那么在使用上述命令時會報以上的錯誤:
解決方法:
解決方式有兩種,一是重新編譯安裝加上上面的參數,而是直接用命令行執行,如下:
mysql -uroot -proot mydb_name --local-infile=1 -e 'load data local infile "D:/ab.txt" into table mytbl(name,age)'
————————————————————————————————————————
————————————————————————————————————————
MYSQL中的各種權限
對於GRANT和REVOKE語句,priv_type可以被指定為以下任何一種:
權限 |
意義 |
ALL [PRIVILEGES] |
設置除GRANT OPTION之外的所有簡單權限 |
ALTER |
允許使用ALTER TABLE |
ALTER ROUTINE |
更改或取消已存儲的子程序 |
CREATE |
允許使用CREATE TABLE |
CREATE ROUTINE |
創建已存儲的子程序 |
CREATE TEMPORARY TABLES |
允許使用CREATE TEMPORARY TABLE |
CREATE USER |
允許使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。 |
CREATE VIEW |
允許使用CREATE VIEW |
DELETE |
允許使用DELETE |
DROP |
允許使用DROP TABLE |
EXECUTE |
允許用戶運行已存儲的子程序 |
FILE |
允許使用SELECT...INTO OUTFILE和LOAD DATA INFILE |
INDEX |
允許使用CREATE INDEX和DROP INDEX |
INSERT |
允許使用INSERT |
LOCK TABLES |
允許對您擁有SELECT權限的表使用LOCK TABLES |
PROCESS |
允許使用SHOW FULL PROCESSLIST |
REFERENCES |
未被實施 |
RELOAD |
允許使用FLUSH |
REPLICATION CLIENT |
允許用戶詢問從屬服務器或主服務器的地址 |
REPLICATION SLAVE |
用於復制型從屬服務器(從主服務器中讀取二進制日志事件) |
SELECT |
允許使用SELECT |
SHOW DATABASES |
SHOW DATABASES顯示所有數據庫 |
SHOW VIEW |
允許使用SHOW CREATE VIEW |
SHUTDOWN |
允許使用mysqladmin shutdown |
SUPER |
允許使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL語句,mysqladmin debug命令;允許您連接(一次),即使已達到max_connections。 |
UPDATE |
允許使用UPDATE |
USAGE |
“無權限”的同義詞 |
GRANT OPTION |
允許授予權限 |
當從舊版本的MySQL升級時,要使用EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USER, CREATE ROUTINE和ALTER ROUTINE權限
————————————————————————————————————————
授予的權限可以分為多個層級:
· 全局層級
全局權限適用於一個給定服務器中的所有數據庫。這些權限存儲在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤銷全局權限。
· 數據庫層級
數據庫權限適用於一個給定數據庫中的所有目標。這些權限存儲在mysql.db和mysql.host表中。GRANT ALL ONdb_name.*和REVOKE ALL ON db_name.*只授予和撤銷數據庫權限。
· 表層級
表權限適用於一個給定表中的所有列。這些權限存儲在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤銷表權限。
· 列層級
列權限適用於一個給定表中的單一列。這些權限存儲在mysql.columns_priv表中。當使用REVOKE時,您必須指定與被授權列相同的列。
· 子程序層級
CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT權限適用於已存儲的子程序。這些權限可以被授予為全局層級和數據庫層級。而且,除了CREATE ROUTINE外,這些權限可以被授予為子程序層級,並存儲在mysql.procs_priv表中。
當后續目標是一個表、一個已存儲的函數或一個已存儲的過程時,object_type子句應被指定為TABLE、FUNCTION或PROCEDURE。當從舊版本的MySQL升級時,要使用本子句,您必須升級您的授權表。
————————————————————————————————————————