mysql許可權信息存儲在
Ⅰ mysql 如何授予某個用戶reload許可權
MySQL資料庫中的表與其他任何關系表沒有區別,都可以通過典型的SQL命令修改其結構和數據。可以使用GRANT和REVOKE命令。通過這些命令,可以創建和禁用用戶,可以在線授予和撤回用戶訪問許可權。在5.0版本中增加了兩個新命令:CREATE USER和DROP USER。從而能更容易地增加新用戶、刪除和重命名用戶,還增加了第三個命令RENAME USER用於重命名現有的用戶。
使用CREATE USER命令創建用戶
CREATE USER用於創建新的MySQL賬戶。要使用CREATE USER語句,您必須擁有mysql資料庫的全局CREATE USER許可權,或擁有INSERT許可權。對於每個賬戶,CREATE USER會在沒有許可權的mysql.user表中創建一條新記錄。如果賬戶已經存在,則出現錯誤。使用自選的IDENTIFIED BY子句,'可以為賬戶設置一個密碼。user和密碼的設置方法與GRANT語句一樣。其命令的原型如下:
CREATE USER user [IDENTIFIED BY [PASSWORD 'PASSWORD'] [,user [IDENTIFIED BY [PASSWORD'PASSWORD']]……
create user temp identified by '123456';
使用DROP USER命令刪除用戶
如果存在一個或是多個賬戶被閑置,應當考慮將其刪除,確保不會用於可能的違法活動。利用DROP USER命令就能很容易地從許可權表中刪除用戶的所有信息,即來自所有授權表的賬戶許可權記錄。DROP USER命令原型如下:
DROP USER user [,user] ……
ps"DROP USER不能自動關閉任何打開的用戶對話;而且,如果用戶有打開的對話,此時取消用戶,則命令不會生效,直到用戶對話被關閉後才生效。一旦對話被關閉,用戶也被取消,此用戶再次試圖登錄時將會失敗。
使用RENAME USER命令重命名用戶
RENAMEUSER語句用於對原有MySQL賬戶進行重命名。RENAMEUSER語句的命令原型如下:
RENAME USER old_user TO new_user [,old_user TO new_user] ……
ps:如果舊賬戶不存在或者新賬戶已存在,則會出現錯誤。
回到頂部
許可權管理
GRANT和REVOKE命令
GRANT和REVOKE命令用來管理訪問許可權,也可以用來創建和刪除用戶,但在MySQL5.0.2中可以利用CREATE USER和DROP USER命令更容易地實現這些任務。GRANT和REVOKE命令對於誰可以操作伺服器及其內容的各個方面提供了多程度的控制,從誰可以關閉伺服器,到誰可以修改特定表欄位中的信息都能控制。
如果授權表擁有含有mixed-case資料庫或表名稱的許可權記錄,並且lower_case_table_names系統變數已設置,則不能使用REVOKE撤銷許可權,必須直接操縱授權表。(當lower_case_table_names已設置時,GRANT將不會創建此類記錄,但是此類記錄可能已經在設置變數之前被創建了。)
授予的許可權可以分為多個層級:
全局層級適用於一個給定伺服器中的所有資料庫,這些許可權存儲在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤銷全局許可權。
資料庫層級適用於一個給定資料庫中的所有目標,這些許可權存儲在mysql.db和mysql.host表中。GRANT ALL ON db_name .*和REVOKE ALL ON db_name .*只授予和撤銷資料庫許可權。
表層級適用於一個給定表中的所有列,這些許可權存儲在mysql.tables_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表中。
grant all on *.* to user identified by '123456' with grant option;
--授予用戶名為user、密碼為123456的用戶使用所有資料庫的所有許可權,並允許他向其他人授予這些許可權。
revoke all privileges,grant from user;
grant usage on books.* to user identified by '123456';
--創建一個沒有任何許可權的常規用戶
grant select,insert,update,delete,index,alter,create,drop on books.* to user;
--為用戶user授予適當的許可權
revoke alter,create,drop on books.* from user;
--減少許可權
revoke all on books.* from user;
--撤銷所有的許可權
p
Ⅱ 教您如何查看MySQL用戶許可權
查看MySQL用戶許可權:
show grants for 你的用戶比如:
show grants for root@'localhost';Grant 用法GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*';
GRANT ALL PRIVILEGES ON `discuz`.* TO 'discuz'@'localhost';
我先按我的理解解釋一下上面兩句的意思
建立一個只可以在本地登陸的 不能操作的用用戶名 discuz 密碼為 ***** 已經加密了的
然後第二句的意思是 ,給這個discuz用戶操作discuz資料庫的所有許可權使用GRANTGRANT命令用來建立新用戶,指定用戶口令並增加用戶許可權。其格式如下:
mysql GRANT <privileges ON <what
- TO <user [IDENTIFIED BY <password]
- [WITH GRANT OPTION];
正如你看到的源碼天空
,在這個命令中有許多待填的內容。讓我們逐一地對它們進行介紹,並最終給出一些例子以讓你對它們的協同工作有一個了解。
<privileges是一個用逗號分隔的你想要賦予的MySQL用戶許可權的列表。你可以指定的許可權可以分為三種類型:
資料庫/數據表/數據列許可權: Alter: 修改已存在的數據表(例如增加/刪除列)和索引。
Create: 建立新的資料庫或數據表。
Delete: 刪除表的記錄。
Drop: 刪除數據表或資料庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜索表的記錄。
Update: 修改表中已存在的記錄。
全局管理MySQL用戶許可權:
file: 在MySQL伺服器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控製表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。
特別的許可權:
ALL: 允許做任何事(和root一樣)。
Ⅲ mysql 如何查看該資料庫用戶具有哪些許可權
1、use mysql
2、SELECT*FROMusers
就可以看到所有的使用者許可權
有關db的數據是記錄在Db(大小寫要注意)這個數據表中,所以只要呼叫出Db的資料SELECT*FROMDb 就可以看到你要的答案。
或者可以用:
SELECT*FROMDbWHEREDb='phplampDB'找出你要的答案
(3)mysql許可權信息存儲在擴展閱讀:
授予MySQL用戶許可權的語句
show grants for 你的用戶
比如:show grants for root@'localhost';
Grant 用法:
GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD
'*';
GRANT ALL PRIVILEGES ON `discuz`.* TO 'discuz'@'localhost';
建立一個只可以在本地登陸的 不能操作的用用戶名 discuz 密碼為 ***** 已經加密了的
然後第二句的意思是 ,給這個discuz用戶操作discuz資料庫的所有許可權
使用GRANT
GRANT命令用來建立新用戶,指定用戶口令並增加用戶許可權。其格式如下:
mysql> GRANT <privileges> ON <what>
-> TO <user> [IDENTIFIED BY "<password>"]
-> [WITH GRANT OPTION];
Ⅳ 簡述構成mysql許可權控制步驟
1、mysql的許可權是,從某處來的用戶對某對象的許可權。
2、mysql的許可權採用白名單策略,指定用戶能做什麼,沒有指定的都不能做。
3、許可權校驗分成兩個步驟:
a、能不能連接,檢查從哪裡來,用戶名和密碼,常見錯誤 ERROR 1045 (28000): Access denied for user ...
b、能不能執行操作,粒度從粗到細,分別為:mysql.user, mysql.db, msql.tables_priv, mysql.columns_priv, mysql.proc_priv。
需要注意的是,這些表各有分工,但是在許可權分配上有一定的重合。
可以這樣理解,mysql 先檢查對大范圍是否有許可權,如果沒有再到小范圍里去檢查。比如:先檢查對這個資料庫是否有select許可權,如果有,就允許執行。如果沒有,再檢查對表是否有select許可權,一直到最細粒度,也沒有許可權,就拒絕執行。舉例來說:要檢查張三能否控制一個團,我只要先檢查張三能否控制一個軍,如果可以,就是有許可權,如果不行,再檢查張三能否控制一個師。因此,粒度控制越細,許可權校驗的步驟越多,性能越差,需要考慮。
4、mysql服務啟動之後,就會把許可權有關的表的數據讀到內存中,對許可權做的修改,是否會即時生效?要看情況,手動修改表數據,需要 flush privileges
5、創建用戶 create user,修改密碼 set password,注意 alter user只是設置密碼過期,可以登錄,但是不能執行任何操作,必須從新設置密碼,刪除用戶 drop user
6、host+user 標示唯一的一個用戶,也就是說都叫張三,從不同地方來的張三是兩個用戶,他們有不同的許可權。
7、那麼問題來了,表中有兩條記錄:'root'@'192.168.1.101' 和 'root'@'%', 現在root來登錄,mysql 怎麼匹配呢?認為是哪個root呢?
mysql 對用戶進行了排序,先對host排序,再對user排序,小范圍在前面,大范圍在後面,從上往下匹配。
8、許可權授予,grant 許可權 on 對象 to 用戶@哪裡來 identified by 密碼
9、收回許可權,revoke 許可權 on 對象 from 用戶@哪裡來,注意revoke 必須要與grant 對應,也就是說,只能收回授予的許可權。
10、那麼問題來了,我授予張三 select的許可權,現在revoke all privileges 也不能收回張三select的許可權,因為沒有對張三 grant all privileges,怎麼解決這個問題?
使用 revoke all privileges,grant option from user
11、許可權級別:從某台主機來的某個用戶,對某個資料庫中某個表的某些列的某部分記錄,是否有許可權。
12、全局:對象是mysql服務的所有資料庫,包含服務級的管理許可權,比如showdown
13、資料庫:對象是某一個資料庫
14、表:對象是資料庫中某個表
15、列:對象是表中的某個列,比如:grant select (name) on xxx to xxx
16、程序:對象是存儲過程和方法。
17、information_scheme,資料庫和表是存放數據的,那麼誰來存放 資料庫和表這些信息呢? information_scheme 就是記錄資料庫和表的,需要注意的是,infromation_scheme沒有對應的物理文件,它是mysql在內存中維護的。
18、許可權設定原則:
a、盡量縮小許可權
b、按業務,分離用戶,不同的業務對應不同的用戶
c、避免許可權粒度太細,因為mysql許可權檢查,會影響性能。
19、文件泄密,linux下mysql客戶端執行的操作記錄在文件 ~/.mysql_history中,輸出重定向/dev/null
20、密碼丟失怎麼辦?
a、mysql啟動,增加選項重置密碼
b、mysql啟動,增加選項不檢查許可權,登陸後修改密碼,退出重啟啟動。
Ⅳ MySQL的用戶信息存儲在MySQL哪個資料庫的哪個表中
1、首先在電腦中,打開本地已經安裝的Navicat for MySQL,打開Navicat for MySQL工具軟體的主界面。
Ⅵ mysql 許可權設置
背景
在了解動態許可權之前,我們先回顧下 MySQL 的許可權列表。
許可權列表大體分為服務級別和表級別,列級別以及大而廣的角色(也是MySQL 8.0 新增)存儲程序等許可權。我們看到有一個特殊的 SUPER 許可權,可以做好多個操作。比如 SET 變數,在從機重新指定相關主機信息以及清理二進制日誌等。那這里可以看到,SUPER 有點太過強大,導致了僅僅想實現子許可權變得十分困難,比如用戶只能 SET 變數,其他的都不想要。那麼 MySQL 8.0 之前沒法實現,許可權的細分不夠明確,容易讓非法用戶鑽空子。
那麼 MySQL 8.0 把許可權細分為靜態許可權和動態許可權,下面我畫了兩張詳細的區分圖,圖 1 為靜態許可權,圖 2 為動態許可權。
圖 1- MySQL 靜態許可權的許可權管理圖
圖 2-動態許可權圖
那我們看到其實動態許可權就是對 SUPER 許可權的細分。 SUPER 許可權在未來將會被廢棄掉。
我們來看個簡單的例子,
比如, 用戶 'ytt2@localhost', 有 SUPER 許可權。
mysql> show grants for ytt2@'localhost';+---------------------------------------------------------------------------------+| Grants for ytt2@localhost |+---------------------------------------------------------------------------------+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+---------------------------------------------------------------------------------+1 row in set (0.00 sec)
但是現在我只想這個用戶有 SUPER 的子集,設置變數的許可權。那麼單獨給這個用戶賦予兩個能設置系統變數的動態許可權,完了把 SUPER 給拿掉。
mysql> grant session_variables_admin,system_variables_admin on *.* to ytt2@'localhost';Query OK, 0 rows affected (0.03 sec)mysql> revoke super on *.* from ytt2@'localhost';Query OK, 0 rows affected, 1 warning (0.02 sec)
我們看到這個 WARNINGS 提示 SUPER 已經廢棄了。
mysql> show warnings;
+---------+------+----------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------+
| Warning | 1287 | The SUPER privilege identifier is deprecated |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)`
mysql> show grants for ytt2@'localhost';
+-----------------------------------------------------------------------------------+
| Grants for ytt2@localhost |
+-----------------------------------------------------------------------------------+
| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost |
| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |
+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
當然圖 2 上還有其它的動態許可權,這里就不做特別說明了。
Ⅶ mysql 執行存儲過程需要什麼許可權
創建存儲過程的時候可以指定 SQL SECURITY屬性,設置為 DEFINER 或者INVOKER,用來奉告mysql在執行存儲過程的時候,,是以DEFINER用戶的許可權來執行,還是以調用者的許可權來執行。
默認情況下,使用DEFINER方式,此時調用存儲過程的用戶必須有存儲過程的EXECUTE許可權,並且DEFINER指定的用戶必須是在mysql.user表中存在的用戶。
DEFINER模式下,默認DEFINER=CURRENT_USER,在存儲過程執行時 mysql 會檢查DEFINER定義的用戶'user_name'@'host_name'的許可權;
INVOKER模式下,在存儲過程執行時,會檢查存儲過程調用者的許可權。
Ⅷ mysql資料庫的存放位置在哪裡
資料庫文件默認存放位置:C:Program FilesMySQLMySQL Server 5.0data。
資料庫的配置文件在C:Program FilesMySQLMySQL Server 5.0my.ini。
在data文件夾里找到不test的資料庫文件夾和自己創建的文件夾是因為test資料庫是空的資料庫,用於測試使用,自己的文件夾需要去mysql資料庫尋找。
mysql資料庫文件默認存放位置:C:Program FilesMySQLMySQL Server 5.0mysql。
MySQL是一種開放源代碼的關系型資料庫管理系統(RDBMS),MySQL資料庫系統使用最常用的資料庫管理語言--結構化查詢語言(SQL)進行資料庫管理。
下面詳細介紹幾個找不同資料庫用到的命令:
1、選擇你所創建的資料庫
mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
2、:使用SHOW語句找出在伺服器上當前存在什麼資料庫
mysql> SHOW DATABASES;
3、查看現在的資料庫中存在什麼表
mysql> SHOW TABLES;
4、顯示表的結構。
mysql> DESCRIBE MYTABLE;
(8)mysql許可權信息存儲在擴展閱讀:
mysql資料庫伺服器有三個資料庫:information_schema資料庫,mysql資料庫,test資料庫。
1、nformation_schema資料庫:這個資料庫保存了mysql伺服器所有資料庫的信息。比如資料庫的名、資料庫的表、訪問許可權、資料庫表的數據類型,資料庫索引的信息等等。就是關於這個資料庫的點點滴滴信息都存儲在這個資料庫中。
nformation_schema資料庫是MySQL自帶的,它提供了訪問資料庫元數據的方式。什麼是元數據呢?元數據是關於數據的數據,如資料庫名或表名,列的數據類型,或訪問許可權等。有些時候用於表述該信息的其他術語包括「數據詞典」和「系統目錄」。
在MySQL中,把 information_schema 看作是一個資料庫,確切說是信息資料庫。其中保存著關於MySQL伺服器所維護的所有其他資料庫的信息。
如資料庫名,資料庫的表,表欄的數據類型與訪問權 限等。在INFORMATION_SCHEMA中,有數個只讀表。它們實際上是視圖,而不是基本表,因此,將無法看到與之相關的任何文件。
2、mysql資料庫:這個資料庫中是mysql資料庫中的所有的信息表。
這個是mysql的核心資料庫,類似於sql server中的master表,主要負責存儲資料庫的用戶、許可權設置、關鍵字等mysql自己需要使用的控制和管理信息。不可以刪除,如果對mysql不是很了解,也不要輕易修改這個資料庫裡面的表信息。
3、test資料庫:空的資料庫,用於測試用。
這個是安裝時候創建的一個測試資料庫,和它的名字一樣,是一個完全的空資料庫,沒有任何錶,可以刪除。
Ⅸ 如何查看mysql資料庫存儲位置
很多時候,mysql的數據會非常大,數據默認放在/var/lib/mysql,由於/var所劃分的
空間不夠大,所以我們需要將mysql數據存放路徑修改一下,放到大分區裡面,以便
可以應付mysql數據增長。
www.2cto.com
1.設置新的存放路徑
mkdir
-p
/data/mysql
2.復制原有數據
cp
-r
/var/lib/mysql/*
/data/mysql
3.修改許可權
chown
-r
mysql:mysql
/data/mysql
www.2cto.com
4.修改配置文件
vim
/etc/mysql/my.cnf
datadir
=
/data/mysql
5.修改啟動文件
vim
/etc/apparmor.d/usr.sbin.mysqld
#把
/var/lib/mysql
r,
/var/lib/mysql/**
rwk,
#改成
/data/mysql
r,
/data/mysql/**
rwk,
6.重啟服務
重啟apparmor
/etc/init.d/apparmor
restart
/etc/init.d/mysql
restart
完成
Ⅹ 請簡要簡述MySQL的四大系統資料庫及其作用
MySQL 自帶了四個資料庫,如下:
mysql庫。是MySQL的核心資料庫,存儲用戶、許可權等信息
information_schema。存儲表、鎖等性能信息。元數據關於數據的數據,如資料庫名,表名,訪問許可權,庫表的數據類型,庫索引的信息等
sys。這個庫數據來源於performance_schema。目標是把performance_schema的復雜程度降低,讓DBA能更好的閱讀這個庫里的內容,讓DBA更快的了解DB的運行情況。
performance_schema。這個庫主要收集資料庫伺服器性能參數,用於監控伺服器在一個較低級別的過程中的資源消耗,資源等待等情況