MySQL使用者與許可權
1.MySQL使用者和許可權管理
user表:包含使用者的帳號,全域性許可權
db表:資料庫級別的許可權定義
tables_priv表:表級別許可權
columns_priv表:列級別許可權
procs_priv表:儲存過程和儲存函式相關的許可權
proxies_priv表:代理使用者許可權
2.使用者帳號:
使用者名稱@主機構成
使用者名稱:16個字元以內
主機:
主機名:www.baidu.com| mysql
IP:192.168.1.100
網路地址:192.168.1.0/255.255.255.0
萬用字元:% 和 _
192.168.%.%
%.baidu.com
--skip-name-resolve:為了加速mysql伺服器的效能,而且訪問mysql的時候也不需要它通過主機名來認證,關閉一切基於主機名認證的方式來進行授權,提高使用者連線時候的速度
3.許可權級別:
全域性級別:SUPER,
庫級別:
表級別:
列級別:
儲存過程和儲存函式級別:
4.建立使用者
第一種:CREATE USER [email protected] IDENTIFIED BY 'password'
第二種:GRANT
第三種:INSERT INTO mysql.user
mysql>FLUSH PRIVILEGES;
4.1檢視某個使用者的授權資訊
SHOW GRANTS FOR '[email protected]';
5.為使用者新增student庫中“建立”的許可權
當建立資料庫的時候,顯示沒有許可權
6.為使用者新增建立sdb和建立sdb庫下任何表的許可權
7當我們為新建立的tb1表插入資料的時候,顯示沒有許可權
8.為使用者新增sdb庫下插入資料的許可權
當授權完成之後也重讀授權表(執行了FLUSH PRIVILEGES;)但是還是不能插入資料
當退出當前mysql再重新登入的時候發現可以插入資料了,所以INSERT許可權重新登入
9.為使用者同時新增UPDATE、DELETE許可權,以及DELETE許可權
更新、刪除的時候顯示沒有許可權,和
於是重新登入,發現沒有SELECT 許可權,因為要更新或者刪除某一條記錄,需要先查到之後才能進行刪除,所以需要SELECT許可權
10.撤銷某個使用者的某項許可權
11.撤銷使用者的UPDATE許可權,然後為使用者新增只能修改sdb庫下stb1表的age欄位的許可權
12.修改MySQL的全域性變數,kill掉MySQL程序,需要有SUPER許可權
13.刪除使用者、使用者重新命名
DROP USER [email protected]
RENAME USER old_name TO new_name;
14.忘記root密碼
14.1關閉MySQL服務
14.2編輯mysql指令碼,新增相關引數
編輯/etc/init.d/mysqld,找到下面內容,然後新增
--skip-grant-tables
--skip-networking
14.3啟動MySQL服務,並連線到MySQL
14.4修改密碼
當檢視使用修改授權表的方式去修改密碼的時候,MySQL顯示說不可以,因為當前啟動的MySQL服務已經跳過授權表了
所以只能通過修改user表的方式來修改密碼了
14.5修改完密碼以後,停止MySQL服務,刪除/etc/init.d/mysqld中剛才新增的內容
--skip-grants-table和 --skip-working然後重啟MySQL服務
15.許可權手冊
http://dev.mysql.com/doc/mysql-security-excerpt/5.5/en/privileges-provided.html
16.使用者授權的一些其它選項說明
一般情況下不需要使用object_type,當我們要指定特定的,表、儲存函式、儲存過程
的時候,就需要指定了
當需要為db_name庫中的儲存函式abc授權的時候,如果執行以下命令,是否可以正常
的給abc儲存函式授權呢?
GRANT EXECUTE ON db.abc TO [email protected]'%';
知道abc代表的是什麼嗎、?---》不知道----》所以我們需要指定授權的型別
所以要想給儲存函式abc授權,需要執行
GRANT EXECUTE ON FUNCTION db.abc TO [email protected]'%';
轉載於:https://blog.51cto.com/fanfusuzi/1644010