[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fauth":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fauth":797,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fauth":822},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":14,"pinned":15,"draft":15,"body":16,"seo":793,"stem":794,"id":795,"extension":796},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fauth","用户与权限管理","MySQL 通过用户名 + 主机名来唯一标识一个用户账户，并可以授予不同级别的权限（全局、数据库、表、列等）。下面是基础操作。","技能小册",[12,13],"mysql","auth","2021-06-06",false,{"type":17,"value":18,"toc":780},"minimark",[19,22,27,36,41,58,107,113,148,161,165,174,179,206,211,335,339,385,393,397,406,410,439,452,456,465,469,478,487,491,500,534,538,567,571,580,584,678,682,728,735,738,776],[20,21,8],"h1",{"id":8},[23,24,26],"h2",{"id":25},"mysql-用户与权限管理基础","MySQL 用户与权限管理（基础）",[28,29,30,31,35],"p",{},"MySQL 通过",[32,33,34],"strong",{},"用户名 + 主机名","来唯一标识一个用户账户，并可以授予不同级别的权限（全局、数据库、表、列等）。下面是基础操作。",[37,38,40],"h3",{"id":39},"一创建用户","一、创建用户",[42,43,48],"pre",{"className":44,"code":45,"language":46,"meta":47,"style":47},"language-sql shiki shiki-themes material-theme-lighter github-light github-dark","CREATE USER 'username'@'host' IDENTIFIED BY 'password';\n","sql","",[49,50,51],"code",{"__ignoreMap":47},[52,53,56],"span",{"class":54,"line":55},"line",1,[52,57,45],{},[59,60,61,70,99],"ul",{},[62,63,64,69],"li",{},[32,65,66],{},[49,67,68],{},"username","：登录用户名。",[62,71,72,77,78],{},[32,73,74],{},[49,75,76],{},"host","：允许该用户从哪个主机连接。\n",[59,79,80,86,92],{},[62,81,82,85],{},[49,83,84],{},"'localhost'","：仅允许本机连接。",[62,87,88,91],{},[49,89,90],{},"'%'","：允许任意主机连接（注意安全风险）。",[62,93,94,95,98],{},"也可指定具体 IP 或网段，如 ",[49,96,97],{},"'192.168.1.%'","。",[62,100,101,106],{},[32,102,103],{},[49,104,105],{},"IDENTIFIED BY 'password'","：设置密码。",[28,108,109,112],{},[32,110,111],{},"示例","：",[42,114,116],{"className":44,"code":115,"language":46,"meta":47,"style":47},"-- 创建本地用户（仅本机可登录）\nCREATE USER 'app_user'@'localhost' IDENTIFIED BY 'SecurePass123';\n\n-- 创建可从任意主机连接的用户（谨慎使用）\nCREATE USER 'remote_user'@'%' IDENTIFIED BY 'RemotePass456';\n",[49,117,118,123,129,136,142],{"__ignoreMap":47},[52,119,120],{"class":54,"line":55},[52,121,122],{},"-- 创建本地用户（仅本机可登录）\n",[52,124,126],{"class":54,"line":125},2,[52,127,128],{},"CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'SecurePass123';\n",[52,130,132],{"class":54,"line":131},3,[52,133,135],{"emptyLinePlaceholder":134},true,"\n",[52,137,139],{"class":54,"line":138},4,[52,140,141],{},"-- 创建可从任意主机连接的用户（谨慎使用）\n",[52,143,145],{"class":54,"line":144},5,[52,146,147],{},"CREATE USER 'remote_user'@'%' IDENTIFIED BY 'RemotePass456';\n",[149,150,151],"blockquote",{},[28,152,153,154,157,158,98],{},"注意：MySQL 8.0 默认使用 ",[49,155,156],{},"caching_sha2_password"," 插件，旧客户端可能需要调整。可指定插件：",[49,159,160],{},"IDENTIFIED WITH mysql_native_password BY 'password'",[37,162,164],{"id":163},"二授予权限grant","二、授予权限（GRANT）",[42,166,168],{"className":44,"code":167,"language":46,"meta":47,"style":47},"GRANT privilege1, privilege2 ON database_name.table_name TO 'username'@'host';\n",[49,169,170],{"__ignoreMap":47},[52,171,172],{"class":54,"line":55},[52,173,167],{},[28,175,176,112],{},[32,177,178],{},"权限级别",[59,180,181,187,193,199],{},[62,182,183,186],{},[49,184,185],{},"*.*","：所有数据库的所有表（全局权限）。",[62,188,189,192],{},[49,190,191],{},"database_name.*","：指定数据库的所有表。",[62,194,195,198],{},[49,196,197],{},"database_name.table_name","：指定数据库的指定表。",[62,200,201,202,205],{},"甚至可指定列（如 ",[49,203,204],{},"SELECT(col1)","，但较少用）。",[28,207,208,112],{},[32,209,210],{},"常见权限",[212,213,214,227],"table",{},[215,216,217],"thead",{},[218,219,220,224],"tr",{},[221,222,223],"th",{},"权限",[221,225,226],{},"说明",[228,229,230,245,255,265,275,285,295,305,315,325],"tbody",{},[218,231,232,238],{},[233,234,235],"td",{},[49,236,237],{},"ALL [PRIVILEGES]",[233,239,240,241,244],{},"授予所有可用权限（除 ",[49,242,243],{},"WITH GRANT OPTION"," 外）",[218,246,247,252],{},[233,248,249],{},[49,250,251],{},"SELECT",[233,253,254],{},"查询数据",[218,256,257,262],{},[233,258,259],{},[49,260,261],{},"INSERT",[233,263,264],{},"插入数据",[218,266,267,272],{},[233,268,269],{},[49,270,271],{},"UPDATE",[233,273,274],{},"更新数据",[218,276,277,282],{},[233,278,279],{},[49,280,281],{},"DELETE",[233,283,284],{},"删除数据",[218,286,287,292],{},[233,288,289],{},[49,290,291],{},"CREATE",[233,293,294],{},"创建数据库或表",[218,296,297,302],{},[233,298,299],{},[49,300,301],{},"DROP",[233,303,304],{},"删除数据库或表",[218,306,307,312],{},[233,308,309],{},[49,310,311],{},"INDEX",[233,313,314],{},"创建\u002F删除索引",[218,316,317,322],{},[233,318,319],{},[49,320,321],{},"ALTER",[233,323,324],{},"修改表结构",[218,326,327,332],{},[233,328,329],{},[49,330,331],{},"GRANT OPTION",[233,333,334],{},"允许将自己的权限授予其他用户（需额外指定）",[28,336,337,112],{},[32,338,111],{},[42,340,342],{"className":44,"code":341,"language":46,"meta":47,"style":47},"-- 授予 app_user 对 mydb 数据库所有表的 SELECT 和 INSERT 权限\nGRANT SELECT, INSERT ON mydb.* TO 'app_user'@'localhost';\n\n-- 授予管理员全局所有权限，且可授权给其他人\nGRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;\n\n-- 授予对特定表的 UPDATE 权限\nGRANT UPDATE ON mydb.orders TO 'app_user'@'localhost';\n",[49,343,344,349,354,358,363,368,373,379],{"__ignoreMap":47},[52,345,346],{"class":54,"line":55},[52,347,348],{},"-- 授予 app_user 对 mydb 数据库所有表的 SELECT 和 INSERT 权限\n",[52,350,351],{"class":54,"line":125},[52,352,353],{},"GRANT SELECT, INSERT ON mydb.* TO 'app_user'@'localhost';\n",[52,355,356],{"class":54,"line":131},[52,357,135],{"emptyLinePlaceholder":134},[52,359,360],{"class":54,"line":138},[52,361,362],{},"-- 授予管理员全局所有权限，且可授权给其他人\n",[52,364,365],{"class":54,"line":144},[52,366,367],{},"GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;\n",[52,369,371],{"class":54,"line":370},6,[52,372,135],{"emptyLinePlaceholder":134},[52,374,376],{"class":54,"line":375},7,[52,377,378],{},"-- 授予对特定表的 UPDATE 权限\n",[52,380,382],{"class":54,"line":381},8,[52,383,384],{},"GRANT UPDATE ON mydb.orders TO 'app_user'@'localhost';\n",[149,386,387],{},[28,388,389,390,392],{},"提示：",[49,391,243],{}," 允许该用户将自己拥有的权限转授给其他用户（谨慎授予）。",[37,394,396],{"id":395},"三撤销权限revoke","三、撤销权限（REVOKE）",[42,398,400],{"className":44,"code":399,"language":46,"meta":47,"style":47},"REVOKE privilege1, privilege2 ON database_name.table_name FROM 'username'@'host';\n",[49,401,402],{"__ignoreMap":47},[52,403,404],{"class":54,"line":55},[52,405,399],{},[28,407,408,112],{},[32,409,111],{},[42,411,413],{"className":44,"code":412,"language":46,"meta":47,"style":47},"-- 撤销 app_user 对 mydb 数据库的 INSERT 权限\nREVOKE INSERT ON mydb.* FROM 'app_user'@'localhost';\n\n-- 撤销全局权限\nREVOKE ALL PRIVILEGES ON *.* FROM 'temp_user'@'%';\n",[49,414,415,420,425,429,434],{"__ignoreMap":47},[52,416,417],{"class":54,"line":55},[52,418,419],{},"-- 撤销 app_user 对 mydb 数据库的 INSERT 权限\n",[52,421,422],{"class":54,"line":125},[52,423,424],{},"REVOKE INSERT ON mydb.* FROM 'app_user'@'localhost';\n",[52,426,427],{"class":54,"line":131},[52,428,135],{"emptyLinePlaceholder":134},[52,430,431],{"class":54,"line":138},[52,432,433],{},"-- 撤销全局权限\n",[52,435,436],{"class":54,"line":144},[52,437,438],{},"REVOKE ALL PRIVILEGES ON *.* FROM 'temp_user'@'%';\n",[28,440,441,442,445,446,448,449,451],{},"注意：",[49,443,444],{},"REVOKE"," 只能撤销已授予的权限，不能撤销 ",[49,447,331],{}," 本身（需单独指定 ",[49,450,243],{}," 的撤销，语法同）。",[37,453,455],{"id":454},"四删除用户drop-user","四、删除用户（DROP USER）",[42,457,459],{"className":44,"code":458,"language":46,"meta":47,"style":47},"DROP USER 'username'@'host';\n",[49,460,461],{"__ignoreMap":47},[52,462,463],{"class":54,"line":55},[52,464,458],{},[28,466,467,112],{},[32,468,111],{},[42,470,472],{"className":44,"code":471,"language":46,"meta":47,"style":47},"DROP USER 'old_user'@'localhost';\n",[49,473,474],{"__ignoreMap":47},[52,475,476],{"class":54,"line":55},[52,477,471],{},[149,479,480],{},[28,481,482,483,486],{},"如果用户有打开的连接，可能会报错，可先 ",[49,484,485],{},"KILL"," 连接或强制删除。",[37,488,490],{"id":489},"五刷新权限flush-privileges","五、刷新权限（FLUSH PRIVILEGES）",[42,492,494],{"className":44,"code":493,"language":46,"meta":47,"style":47},"FLUSH PRIVILEGES;\n",[49,495,496],{"__ignoreMap":47},[52,497,498],{"class":54,"line":55},[52,499,493],{},[59,501,502,518],{},[62,503,504,507,508,511,512,511,514,517],{},[32,505,506],{},"作用","：使之前通过 ",[49,509,510],{},"GRANT","、",[49,513,444],{},[49,515,516],{},"CREATE USER"," 等命令修改的权限立即生效**（其实这些 DCL 命令会自动刷新，但在某些情况下如果直接操作了权限表，就需要手动刷新）**。",[62,519,520,521,523,524,526,527,530,531,98],{},"通常在使用 ",[49,522,510],{}," 或 ",[49,525,444],{}," 后不需要手动执行，但如果你手动修改了 ",[49,528,529],{},"mysql.user"," 表，则需要执行 ",[49,532,533],{},"FLUSH PRIVILEGES",[37,535,537],{"id":536},"六查看权限","六、查看权限",[42,539,541],{"className":44,"code":540,"language":46,"meta":47,"style":47},"-- 查看当前用户的权限\nSHOW GRANTS;\n\n-- 查看指定用户的权限\nSHOW GRANTS FOR 'username'@'host';\n",[49,542,543,548,553,557,562],{"__ignoreMap":47},[52,544,545],{"class":54,"line":55},[52,546,547],{},"-- 查看当前用户的权限\n",[52,549,550],{"class":54,"line":125},[52,551,552],{},"SHOW GRANTS;\n",[52,554,555],{"class":54,"line":131},[52,556,135],{"emptyLinePlaceholder":134},[52,558,559],{"class":54,"line":138},[52,560,561],{},"-- 查看指定用户的权限\n",[52,563,564],{"class":54,"line":144},[52,565,566],{},"SHOW GRANTS FOR 'username'@'host';\n",[28,568,569,112],{},[32,570,111],{},[42,572,574],{"className":44,"code":573,"language":46,"meta":47,"style":47},"SHOW GRANTS FOR 'app_user'@'localhost';\n",[49,575,576],{"__ignoreMap":47},[52,577,578],{"class":54,"line":55},[52,579,573],{},[37,581,583],{"id":582},"七完整示例流程","七、完整示例流程",[42,585,587],{"className":44,"code":586,"language":46,"meta":47,"style":47},"-- 1. 创建用户\nCREATE USER 'dev'@'localhost' IDENTIFIED BY 'dev123';\n\n-- 2. 授予权限（开发数据库的所有表的所有权限）\nGRANT ALL PRIVILEGES ON devdb.* TO 'dev'@'localhost';\n\n-- 3. 查看权限\nSHOW GRANTS FOR 'dev'@'localhost';\n\n-- 4. 测试连接（另开终端）\n-- mysql -u dev -p -h localhost\n\n-- 5. 撤销部分权限（例如撤销删除权限）\nREVOKE DELETE ON devdb.* FROM 'dev'@'localhost';\n\n-- 6. 删除用户（不再需要）\nDROP USER 'dev'@'localhost';\n",[49,588,589,594,599,603,608,613,617,622,627,632,638,644,649,655,661,666,672],{"__ignoreMap":47},[52,590,591],{"class":54,"line":55},[52,592,593],{},"-- 1. 创建用户\n",[52,595,596],{"class":54,"line":125},[52,597,598],{},"CREATE USER 'dev'@'localhost' IDENTIFIED BY 'dev123';\n",[52,600,601],{"class":54,"line":131},[52,602,135],{"emptyLinePlaceholder":134},[52,604,605],{"class":54,"line":138},[52,606,607],{},"-- 2. 授予权限（开发数据库的所有表的所有权限）\n",[52,609,610],{"class":54,"line":144},[52,611,612],{},"GRANT ALL PRIVILEGES ON devdb.* TO 'dev'@'localhost';\n",[52,614,615],{"class":54,"line":370},[52,616,135],{"emptyLinePlaceholder":134},[52,618,619],{"class":54,"line":375},[52,620,621],{},"-- 3. 查看权限\n",[52,623,624],{"class":54,"line":381},[52,625,626],{},"SHOW GRANTS FOR 'dev'@'localhost';\n",[52,628,630],{"class":54,"line":629},9,[52,631,135],{"emptyLinePlaceholder":134},[52,633,635],{"class":54,"line":634},10,[52,636,637],{},"-- 4. 测试连接（另开终端）\n",[52,639,641],{"class":54,"line":640},11,[52,642,643],{},"-- mysql -u dev -p -h localhost\n",[52,645,647],{"class":54,"line":646},12,[52,648,135],{"emptyLinePlaceholder":134},[52,650,652],{"class":54,"line":651},13,[52,653,654],{},"-- 5. 撤销部分权限（例如撤销删除权限）\n",[52,656,658],{"class":54,"line":657},14,[52,659,660],{},"REVOKE DELETE ON devdb.* FROM 'dev'@'localhost';\n",[52,662,664],{"class":54,"line":663},15,[52,665,135],{"emptyLinePlaceholder":134},[52,667,669],{"class":54,"line":668},16,[52,670,671],{},"-- 6. 删除用户（不再需要）\n",[52,673,675],{"class":54,"line":674},17,[52,676,677],{},"DROP USER 'dev'@'localhost';\n",[37,679,681],{"id":680},"八安全最佳实践","八、安全最佳实践",[59,683,684,693,702,708,714,722],{},[62,685,686,689,690,692],{},[32,687,688],{},"最小权限原则","：只授予用户必须的最小权限（例如只读用户仅 ",[49,691,251],{},"）。",[62,694,695,698,699,701],{},[32,696,697],{},"限制主机","：尽量不要使用 ",[49,700,90],{},"，而是指定具体的 IP 或应用服务器地址。",[62,703,704,707],{},[32,705,706],{},"强密码","：使用复杂密码，避免默认或弱密码。",[62,709,710,713],{},[32,711,712],{},"定期清理","：删除不再使用的用户。",[62,715,716,721],{},[32,717,718,719],{},"避免使用 ",[49,720,243],{},"：除非用户真正需要转授权限。",[62,723,724,727],{},[32,725,726],{},"权限分级","：生产环境、测试环境、只读备份账号应分开。",[28,729,730,731,734],{},"通过以上基础命令，可以完成 MySQL 日常的用户管理和权限分配。更复杂的角色管理（MySQL 8.0 支持 ",[49,732,733],{},"CREATE ROLE","）属于进阶内容。",[23,736,737],{"id":737},"参考文献",[212,739,740,749],{},[215,741,742],{},[218,743,744,747],{},[221,745,746],{},"资料",[221,748,226],{},[228,750,751,765],{},[218,752,753,762],{},[233,754,755],{},[756,757,761],"a",{"href":758,"rel":759},"https:\u002F\u002Fdev.mysql.com\u002Fdoc\u002Frefman\u002F8.0\u002Fen\u002F",[760],"nofollow","MySQL 8.0 手册",[233,763,764],{},"官方",[218,766,767,773],{},[233,768,769],{},[756,770,772],{"href":771},"\u002Fknowledge\u002Fbooklet\u002Fsql","数据存储导读",[233,774,775],{},"学习路径",[777,778,779],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":47,"searchDepth":125,"depth":125,"links":781},[782,792],{"id":25,"depth":125,"text":26,"children":783},[784,785,786,787,788,789,790,791],{"id":39,"depth":131,"text":40},{"id":163,"depth":131,"text":164},{"id":395,"depth":131,"text":396},{"id":454,"depth":131,"text":455},{"id":489,"depth":131,"text":490},{"id":536,"depth":131,"text":537},{"id":582,"depth":131,"text":583},{"id":680,"depth":131,"text":681},{"id":737,"depth":125,"text":737},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fsql\u002FMySql\u002Fauth","knowledge\u002Fknowledge\u002Fbooklet\u002Fsql\u002FMySql\u002Fauth.md","md",{"items":798},[799,803,807,811,815,818],{"path":800,"title":801,"description":802,"category":10,"score":370},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Ftool","常用函数","MySQL 提供了丰富的内置函数，用于处理字符串、数值、日期和时间以及条件逻辑。下面分类介绍最常用的基础函数。",{"path":804,"title":805,"description":806,"category":10,"score":370},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fjoin","多表查询","多表查询用于从两个或更多表中获取数据。常见的连接类型包括内连接、外连接（左、右）和自连接。",{"path":808,"title":809,"description":810,"category":10,"score":370},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Finstall","MySQL 安装与基本操作","MySQL 的安装因操作系统而异，但安装完成后，通过命令行客户端连接并进行基本管理的方法是通用的。下面分别介绍安装方式和常用命令。",{"path":812,"title":813,"description":814,"category":10,"score":370},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Ftype","数据类型","MySQL 支持多种数据类型，可分为数值、字符串、日期时间、枚举\u002F集合以及 JSON 等。选择合适的类型可以优化存储空间和查询性能。",{"path":816,"title":254,"description":817,"category":10,"score":370},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdql","数据查询语言（DQL）用于从数据库中检索数据，核心是 SELECT 语句。下面从基础查询、条件筛选、排序、限制行数、聚合与分组等方面进行介绍。",{"path":819,"title":820,"description":821,"category":10,"score":370},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fddl","数据库与表的基本操作","DDL（Data Definition Language）用于定义数据库结构，包括创建、修改、删除数据库和表。下面介绍 MySQL 中常用的 DDL 语句。",{"series":823,"title":12,"items":824,"index":854,"prev":855,"next":856},"booklet\u002Fsql\u002Fmysql",[825,826,830,834,838,840,844,846,848,850,852],{"path":7,"title":8,"date":14,"pinned":15},{"path":827,"title":828,"date":829,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbackup","备份与恢复","2024-02-23",{"path":831,"title":832,"date":833,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fbase","MySQL 基础概念","2021-03-18",{"path":835,"title":836,"date":837,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fconstraints","约束","2020-03-31",{"path":819,"title":820,"date":839,"pinned":15},"2024-07-14",{"path":841,"title":842,"date":843,"pinned":15},"\u002Fknowledge\u002Fbooklet\u002Fsql\u002Fmysql\u002Fdml","数据操作","2024-05-30",{"path":816,"title":254,"date":845,"pinned":15},"2024-08-16",{"path":808,"title":809,"date":847,"pinned":15},"2025-04-04",{"path":804,"title":805,"date":849,"pinned":15},"2025-11-29",{"path":800,"title":801,"date":851,"pinned":15},"2026-01-19",{"path":812,"title":813,"date":853,"pinned":15},"2024-10-16",0,null,{"path":827,"title":828,"date":829,"pinned":15}]