首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 用戶管理與權限控制完整手冊(Linux 實測)

     編輯:MySQL 綜合教學

MySQL 用戶管理與權限控制完整手冊(Linux 實測)

本文基於 SUSE Linux + MySQL 5.6 實測,系統整理用戶創建、授權、密碼修改、權限回收、用戶刪除全生命周期操作,附完整權限表供查閱。

環境聲明

OS: SUSE Linux
MySQL: 5.6

一、創建用戶

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
參數說明範例
username用戶名zpc
host允許連線來源:localhost(本機)、192.168.1.%(IP 段)、%(任意遠程)%
password密碼,可為空123456

常用範例

-- 本機用戶
CREATE USER 'zpc'@'localhost' IDENTIFIED BY '123456';
-- 指定 IP
CREATE USER 'zpc'@'192.168.1.101' IDENTIFIED BY '123456';
-- 任意遠程
CREATE USER 'zpc'@'%' IDENTIFIED BY '123456';
-- 無密碼(不推薦生產)
CREATE USER 'zpc'@'%' IDENTIFIED BY '';
CREATE USER 'zpc'@'%';

二、授權

GRANT privileges ON db_name.tbl_name TO 'username'@'host' [WITH GRANT OPTION];
參數說明
privilegesSELECT, INSERT, UPDATE, DELETE 等,ALL 代表全部權限
db_name.tbl_name*.* 表示所有庫所有表
WITH GRANT OPTION允許該用戶再授權給他人

範例

-- 特定表權限
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
-- 全庫全表最高權限(含授權權)
GRANT ALL ON *.* TO 'zpc'@'%' WITH GRANT OPTION;

三、查看權限

-- 查看指定用戶權限
SHOW GRANTS FOR 'zpc'@'%';

-- 列出所有用戶
SELECT DISTINCT CONCAT('User: ''', user, '''@''', host, ''';') AS query FROM mysql.user;

四、修改密碼

-- 標準語法(MySQL 5.7+ 推薦 ALTER USER)
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
-- 當前登入用戶
SET PASSWORD = PASSWORD('newpassword');

-- 兼容舊版本(直接操作 mysql.user 表)
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='zpc';
FLUSH PRIVILEGES;

注意:MySQL 5.7+ password 欄位改名為 authentication_string,且推薦使用 ALTER USER 'user'@'host' IDENTIFIED BY 'pwd';。

五、回收權限

REVOKE privilege ON db_name.tbl_name FROM 'username'@'host';

精確匹配原則:授權時用 test.user,回收必須同樣指定 test.user;用 *.* 授權,回收 test.user 不生效。務必先 SHOW GRANTS 確認再操作。

六、刪除用戶

DROP USER 'username'@'host';

七、MySQL 官方權限對照表

權限允許操作
ALTERALTER TABLE
CREATECREATE TABLE / DATABASE / INDEX / VIEW / ROUTINE
DROPDROP TABLE / DATABASE / VIEW
SELECT / INSERT / UPDATE / DELETE對應 DML
INDEXCREATE/DROP INDEX
EXECUTE執行存儲過程/函數
FILESELECT ... INTO OUTFILE / LOAD DATA INFILE
LOCK TABLESLOCK TABLES(需配合 SELECT)
PROCESSSHOW FULL PROCESSLIST
RELOADFLUSH 操作
REPLICATION SLAVE / CLIENT主從複製相關
SHOW DATABASESSHOW DATABASES
SHUTDOWNmysqladmin shutdown
SUPERCHANGE MASTER / KILL / SET GLOBAL / PURGE BINLOG / 額外連線
CREATE USERCREATE/DROP/RENAME USER / REVOKE ALL
USAGE僅允許連線,無實質權限

八、最佳實踐建議

  1. 最小權限原則:業務賬號僅授予必要庫、表、列權限。
  2. 網絡隔離:host 盡量限定具體 IP/網段,避免 %。
  3. 定期審計:SELECT user, host FROM mysql.user; 排查無用/弱密碼賬號。
  4. 密碼策略:啟用 validate_password 插件,強制複雜度與過期輪換。
  5. 備份授權表:變更前 mysqldump mysql user db tables_priv columns_priv procs_priv proxies_priv > grants_backup.sql。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved