mysql用戶(hù)管理和權(quán)限設(shè)置方式
mysql用戶(hù)管理和權(quán)限設(shè)置
MYSQL到底都有哪些權(quán)限呢?
從官網(wǎng)復(fù)制一個(gè)表來(lái)看看:
權(quán)限 | 權(quán)限級(jí)別 | 權(quán)限說(shuō)明 |
CREATE | 數(shù)據(jù)庫(kù)、表或索引 | 創(chuàng)建數(shù)據(jù)庫(kù)、表或索引權(quán)限 |
DROP | 數(shù)據(jù)庫(kù)或表 | 刪除數(shù)據(jù)庫(kù)或表權(quán)限 |
GRANT OPTION | 數(shù)據(jù)庫(kù)、表或保存的程序 | 賦予權(quán)限選項(xiàng) |
REFERENCES | 數(shù)據(jù)庫(kù)或表 | |
ALTER | 表 | 更改表,比如添加字段、索引等 |
DELETE | 表 | 刪除數(shù)據(jù)權(quán)限 |
INDEX | 表 | 索引權(quán)限 |
INSERT | 表 | 插入權(quán)限 |
SELECT | 表 | 查詢(xún)權(quán)限 |
UPDATE | 表 | 更新權(quán)限 |
CREATE VIEW | 視圖 | 創(chuàng)建視圖權(quán)限 |
SHOW VIEW | 視圖 | 查看視圖權(quán)限 |
ALTER ROUTINE | 存儲(chǔ)過(guò)程 | 更改存儲(chǔ)過(guò)程權(quán)限 |
CREATE ROUTINE | 存儲(chǔ)過(guò)程 | 創(chuàng)建存儲(chǔ)過(guò)程權(quán)限 |
EXECUTE | 存儲(chǔ)過(guò)程 | 執(zhí)行存儲(chǔ)過(guò)程權(quán)限 |
FILE | 服務(wù)器主機(jī)上的文件訪(fǎng)問(wèn) | 文件訪(fǎng)問(wèn)權(quán)限 |
CREATE TEMPORARY TABLES | 服務(wù)器管理 | 創(chuàng)建臨時(shí)表權(quán)限 |
LOCK TABLES | 服務(wù)器管理 | 鎖表權(quán)限 |
CREATE USER | 服務(wù)器管理 | 創(chuàng)建用戶(hù)權(quán)限 |
PROCESS | 服務(wù)器管理 | 查看進(jìn)程權(quán)限 |
RELOAD |
服務(wù)器管理 | 執(zhí)行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的權(quán)限 |
REPLICATION CLIENT | 服務(wù)器管理 | 復(fù)制權(quán)限 |
REPLICATION SLAVE | 服務(wù)器管理 | 復(fù)制權(quán)限 |
SHOW DATABASES | 服務(wù)器管理 | 查看數(shù)據(jù)庫(kù)權(quán)限 |
SHUTDOWN | 服務(wù)器管理 | 關(guān)閉數(shù)據(jù)庫(kù)權(quán)限 |
SUPER | 服務(wù)器管理 | 執(zhí)行kill線(xiàn)程權(quán)限 |
MYSQL的權(quán)限如何分布,就是針對(duì)表可以設(shè)置什么權(quán)限,針對(duì)列可以設(shè)置什么權(quán)限等等
這個(gè)可以從官方文檔中的一個(gè)表來(lái)說(shuō)明:
權(quán)限分布 | 可能的設(shè)置的權(quán)限 |
表權(quán)限 | 'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter' |
列權(quán)限 | 'Select', 'Insert', 'Update', 'References' |
過(guò)程權(quán)限 | 'Execute', 'Alter Routine', 'Grant' |
MySQL權(quán)限經(jīng)驗(yàn)原則
權(quán)限控制主要是出于安全因素,因此需要遵循一下幾個(gè)經(jīng)驗(yàn)原則:
- 1、只授予能滿(mǎn)足需要的最小權(quán)限,防止用戶(hù)干壞事。比如用戶(hù)只是需要查詢(xún),那就只給select權(quán)限就可以了,不要給用戶(hù)賦予update、insert或者delete權(quán)限。
- 2、創(chuàng)建用戶(hù)的時(shí)候限制用戶(hù)的登錄主機(jī),一般是限制成指定IP或者內(nèi)網(wǎng)IP段。
- 3、初始化數(shù)據(jù)庫(kù)的時(shí)候刪除沒(méi)有密碼的用戶(hù)。安裝完數(shù)據(jù)庫(kù)的時(shí)候會(huì)自動(dòng)創(chuàng)建一些用戶(hù),這些用戶(hù)默認(rèn)沒(méi)有密碼。
- 4、為每個(gè)用戶(hù)設(shè)置滿(mǎn)足密碼復(fù)雜度的密碼。
- 5、定期清理不需要的用戶(hù)?;厥諜?quán)限或者刪除用戶(hù)。
MySQL權(quán)限實(shí)戰(zhàn)
1. 創(chuàng)建用戶(hù)
命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
說(shuō)明:
username
:你將創(chuàng)建的用戶(hù)名host
:指定該用戶(hù)在哪個(gè)主機(jī)上可以登陸,如果是本地用戶(hù)可用localhost,如果想讓該用戶(hù)可以從任意遠(yuǎn)程主機(jī)登陸,可以使用通配符%
password
:該用戶(hù)的登陸密碼,密碼可以為空,如果為空則該用戶(hù)可以不需要密碼登陸服務(wù)器
例子:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; CREATE USER 'pig'@'192.168.1.101' IDENDIFIED BY '123456'; CREATE USER 'pig'@'%' IDENTIFIED BY '123456'; CREATE USER 'pig'@'%' IDENTIFIED BY ''; CREATE USER 'pig'@'%';
2. 授權(quán)
命令:
GRANT privileges ON databasename.tablename TO 'username'@'host'
說(shuō)明:
privileges
:用戶(hù)的操作權(quán)限,如SELECT
,INSERT
,UPDATE
等,如果要授予所的權(quán)限則使用ALL
databasename
:數(shù)據(jù)庫(kù)名tablename
:表名,如果要授予該用戶(hù)對(duì)所有數(shù)據(jù)庫(kù)和表的相應(yīng)操作權(quán)限則可用*
表示,如*.*
例子:
GRANT SELECT, INSERT ON test.user TO 'pig'@'%'; GRANT ALL ON *.* TO 'pig'@'%'; GRANT ALL ON maindataplus.* TO 'pig'@'%';
需要注意的是:
用以上命令授權(quán)的用戶(hù)不能給其它用戶(hù)授權(quán),如果想讓該用戶(hù)可以授權(quán),用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
3. 設(shè)置與更改用戶(hù)密碼
命令:
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是當(dāng)前登錄用戶(hù)用:
SET PASSWORD = PASSWORD("newpassword");
例子:
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");
需要注意的是,從MySQL 5.7.6版本開(kāi)始,MySQL不推薦使用此語(yǔ)法,會(huì)在將來(lái)的版本中將PASSWORD函數(shù)刪除。
作為代替的解決方案,在8.0版本中直接使用明文密碼:
SET PASSWORD FOR 'pig'@'%' = 'newpasswd2';
4. 撤銷(xiāo)用戶(hù)權(quán)限
命令:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
說(shuō)明:
privilege
, databasename
, tablename
:同授權(quán)部分
例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在給用戶(hù)'pig'@'%'
授權(quán)的時(shí)候是這樣的(或類(lèi)似的):
GRANT SELECT ON test.user TO 'pig'@'%'
則在使用
REVOKE SELECT ON *.* FROM 'pig'@'%';
命令并不能撤銷(xiāo)該用戶(hù)對(duì)test數(shù)據(jù)庫(kù)中user表的SELECT
操作。
相反,如果授權(quán)使用的是
GRANT SELECT ON *.* TO 'pig'@'%';
則
REVOKE SELECT ON test.user FROM 'pig'@'%';
命令也不能撤銷(xiāo)該用戶(hù)對(duì)test數(shù)據(jù)庫(kù)中user表的Select
權(quán)限。
具體信息可以用命令
SHOW GRANTS FOR 'pig'@'%';
查看。
5. 刪除用戶(hù)
命令:
DROP USER 'username'@'host';
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MySQL超詳細(xì)實(shí)現(xiàn)用戶(hù)管理實(shí)例
- MySQL用戶(hù)管理與PostgreSQL用戶(hù)管理的區(qū)別說(shuō)明
- mysql用戶(hù)管理操作實(shí)例分析
- Mysql數(shù)據(jù)庫(kù)高級(jí)用法之視圖、事務(wù)、索引、自連接、用戶(hù)管理實(shí)例分析
- php實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)連接操作及用戶(hù)管理
- mysql命令行下用戶(hù)管理方法分享
- MySQL用戶(hù)管理
- MySQL服務(wù)器權(quán)限與對(duì)象權(quán)限詳解
- MySQL文件權(quán)限存在的安全問(wèn)題和解決方案
相關(guān)文章
mysql服務(wù)器無(wú)法啟動(dòng)的解決方法
本文主要介紹了mysql服務(wù)器無(wú)法啟動(dòng)的解決方法,mysql服務(wù)器無(wú)法啟動(dòng)時(shí),一般時(shí)配置文件和路徑的問(wèn)題,下面就來(lái)介紹一下解決方法,感興趣的可以了解一下2023-09-09使用xshell實(shí)現(xiàn)代理功能并navicat?for?MySQL?進(jìn)行測(cè)試
本文介紹使用xshell實(shí)現(xiàn)代理功能并使用navicat?for?MySQL進(jìn)行測(cè)試,文章主要利用SSH連接工具xshell就可以實(shí)現(xiàn)簡(jiǎn)單的代理功能,下面實(shí)現(xiàn)過(guò)程,需要的小伙伴可以參考一下2022-02-02MySQL每天自動(dòng)增加分區(qū)的實(shí)現(xiàn)
本文主要介紹了MySQL每天自動(dòng)增加分區(qū)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08MySql開(kāi)發(fā)之自動(dòng)同步表結(jié)構(gòu)
這篇文章主要給大家介紹了關(guān)于MySql開(kāi)發(fā)之自動(dòng)同步表結(jié)構(gòu)的相關(guān)資料,這樣可以避免在開(kāi)發(fā)中由于修改數(shù)據(jù)庫(kù)字段導(dǎo)致的數(shù)據(jù)庫(kù)表不一致問(wèn)題,需要的朋友可以參考下2021-05-05