首页 > 语言 > 关键词  > MySQL最新资讯  > 正文

Mysql中创建用户帐户的方法

2008-11-18 15:19 · 稿源:php118.com

1.CREATE USER
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ...CREATE USER用于创建新的MySQL账户。要使用CREATE USER,您必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。对于每个账户,CREATE USER会在没有权限的mysql.user表中创建一个新记录。如果 账户已经存在,则出现错误。

使用自选的IDENTIFIED BY子句,可以为账户给定一个密码。user值和 密码的给定方法和GRANT语句一样。特别是,要在纯文本中指定密码,需忽略PASSWORD关键词。要把 密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD。

2.使用GRANT语句
最好的方法是使用GRANT语句,因为这样更精确,错误少。从MySQL 3.22.11起提供了GRANT;它的主要用途是来给帐户授权的,但也可用来建立新帐户并同时授权。注意:当mysql运行于no_auto_create_user时要提供新建用户的密码,否则不能创新用户。
下面的示例说明如何使用MySQL客户端程序来设置新用户。
首先,使用MySQL程序以MySQL root用户来连接服务器:

shell> MySQL --user=root MySQL

如果你为root账户指定了密码,还需要为该MySQL命令和本节中的其它命令提供--password或-p选项。

以root连接到服务器上后,可以添加新账户。下面的语句使用GRANT来设置四个新账户:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'

-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'

-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';

mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

用GRANT语句创建的账户有下面的属性:

· 其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。(user表排序的讨论要参考mysql手册)。

· 一个账户有用户名admin,没有密码。该账户只用于从本机连接。授予了RELOAD和PROCESS管理权限。这些权限允许admin用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-xxx命令,以及mysqladmin processlist。未授予访问数据库的权限。你可以通过GRANT语句添加此类权限。

· 一个账户有用户名dummy,没有密码。该账户只用于从本机连接。未授予权限。通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为'N'。假定你将在以后将具体权限授予该账户。

3.直接操作MySQL授权表
除了GRANT,你可以直接用INSERT语句创建相同的账户,然后使用FLUSH PRIVILEGES告诉服务器重载授权表。

shell> mysql --user=root mysql

mysql> INSERT INTO user -> VALUES('localhost','monty',PASSWORD('some_pass'), -> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');mysql> INSERT INTO user -> VALUES('%','monty',PASSWORD('some_pass'), -> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');mysql> INSERT INTO user SET Host='localhost',User='admin', -> Reload_priv='Y', Process_priv='Y';mysql> INSERT INTO user (Host,User,Password) -> VALUES('localhost','dummy','');mysql> FLUSH PRIVILEGES;当你用INSERT创建账户时使用FLUSH PRIVILEGES的原因是告诉服务器重读授权表。否则,只有重启服务器后更改方会被注意到。使用 GRANT,则不需要使用FLUSH PRIVILEGES。

用INSERT使用PASSWORD()函数是为了加密密码。GRANT语句为你加密密码,因此不需要PASSWORD()。

'Y'值启用账户权限。对于admin账户,还可以使用更加可读的INSERT扩充的语法(使用SET)。

在为dummy账户的INSERT语句中,只有user表中的Host、User和Password列记录为指定的值。没有一个权限列为显式设置,因此MySQL将它们均指定为 默认值'N'。这样等同于GRANT USAGE的操作。

请注意要设置超级用户账户,只需要创建一个权限列设置为'Y'的user表条目。user表权限为全局权限,因此其它 授权表不再需要条目。

4.举几个应用grant创建帐户和授权的例子

下面的例子创建3个账户,允许它们访问专用数据库。每个账户的用户名为custom,密码为obscure。

要想用GRANT创建账户,使用下面的语句:

shell> MySQL --user=root MySQLshell> mysql --user=root mysqlmysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON bankaccount.* -> TO 'custom'@'localhost' -> IDENTIFIED BY 'obscure';mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON expenses.* -> TO 'custom'@'whitehouse.gov' -> IDENTIFIED BY 'obscure';mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON customer.* -> TO 'custom'@'server.domain' -> IDENTIFIED BY 'obscure';这3个账户可以用于:

· 第1个账户可以访问bankaccount数据库,但只能从本机访问。

· 第2个账户可以访问expenses数据库,但只能从主机whitehouse.gov访问。

· 第3个账户可以访问customer数据库,但只能从主机server.domain访问。

要想不用GRANT设置custom账户,使用INSERT语句直接修改 授权表:

shell> mysql --user=root mysqlmysql> INSERT INTO user (Host,User,Password) -> VALUES('localhost','custom',PASSWORD('obscure'));mysql> INSERT INTO user (Host,User,Password) -> VALUES('whitehouse.gov','custom',PASSWORD('obscure'));mysql> INSERT INTO user (Host,User,Password) -> VALUES('server.domain','custom',PASSWORD('obscure'));mysql> INSERT INTO db -> (Host,Db,User,Select_priv,Insert_priv, -> Update_priv,Delete_priv,Create_priv,Drop_priv) -> VALUES('localhost','bankaccount','custom', -> 'Y','Y','Y','Y','Y','Y');mysql> INSERT INTO db -> (Host,Db,User,Select_priv,Insert_priv, -> Update_priv,Delete_priv,Create_priv,Drop_priv) -> VALUES('whitehouse.gov','expenses','custom', -> 'Y','Y','Y','Y','Y','Y');mysql> INSERT INTO db -> (Host,Db,User,Select_priv,Insert_priv, -> Update_priv,Delete_priv,Create_priv,Drop_priv) -> VALUES('server.domain','customer','custom', -> 'Y','Y','Y','Y','Y','Y');mysql> FLUSH PRIVILEGES; 前3个INSERT语句在user表中加入条目,允许用户custom从各种主机用给定的密码进行连接,但不授予全局权限(所有权限设置为 默认值'N')。后面3个INSERT语句在user表中加入条目,为custom授予bankaccount、expenses和customer数据库权限,但只能从合适的主机访问。通常若直接修改 授权表,则应告诉服务器用FLUSH PRIVILEGES重载授权表,使权限更改生效。

如果你想要让某个用户从给定域的所有机器访问(例如,mydomain.com),你可以在账户名的主机部分使用含'%'通配符的GRANT语句:

mysql> GRANT ... -> ON *.* -> TO 'myname'@'%.mydomain.com' -> IDENTIFIED BY 'mypass';要想通过直接修改授权表来实现:

mysql> INSERT INTO user (Host,User,Password,...) -> VALUES('%.mydomain.com','myname',PASSWORD('mypass'),...);mysql> FLUSH PRIVILEGES;

5.创建账户的其它方法是使用MySQL账户管理功能的第三方程序。phpMyAdmin即是一个程序。

从MySQL删除用户账户
要想移除账户,应使用DROP USER语句。

举报

  • 相关推荐
  • 忆联 Docker+MySQL 流控方案:打造安全高效存储底座,释放 AI 极致性能

    文章探讨了在AI时代背景下,基于Docker部署MySQL数据库的高效解决方案。通过Docker容器化技术,MySQL实现了灵活部署、资源高效利用和稳定隔离性,成为AI应用的首选数据库方案。测试结果显示,采用PCIe5.0企业级SSD配合Namespace技术和QoS优化策略,能精准控制性能偏差在2%以内,在混合读写场景下更可控制在1%以内。该方案显著提升了存储资源管理效率,为AI应用提供稳定可靠的数据存储支持,同时降低企业TCO成本,推动数据价值释放。

  • 硬盘丢失了数据怎么恢复?硬盘数据恢复的6种方法

    文章分析了硬盘数据丢失的常见原因及恢复方法。数据丢失主要源于人为误操作、硬件故障、软件系统问题和环境因素四类。针对不同情况,介绍了6种恢复方法:回收站还原、系统版本回退、备份还原、Mac系统的TimeMachine、命令行操作以及专业数据恢复软件。其中专业软件如转转大师能深度扫描硬盘,支持多种文件格式恢复,操作简便且成功率高。文章强调数据丢失后应避免写入操作,根据实际情况选择合适恢复方式,并建议做好日常备份预防数据丢失。

  • 演员王楚然求助荨麻疹治疗方法:痒到崩溃 网友大呼感同身受

    据媒体报道,演员王楚然近日在粉丝群求助荨麻疹治疗方法,并晒出面部红斑照片。她透露自己长期受过敏困扰,经医院检测仍未能明确过敏原,剧烈运动和情绪波动时易反复发作。看完她分享关于荨麻疹反复的症状,不少网友表示深有共鸣,纷纷留言晒出自己的经历。 据悉,荨麻疹常见诱因包括食物、药物、感染、物理刺激、情绪紧张等。有时候,诱因是多个叠加的,比如

  • 美团外卖用户下单量突破历史峰值 受影响用户优惠券可次日继续使用

    美团发放大量且大额外卖优惠券,随着大量用户涌入,美团一度出现宕机,许多网友在社交平台反馈,页面显示访问出错,出现点不了外卖的情况。 对此,美团外卖官微发文回应,称7月5日下午6点前后,因用户下单量突破历史峰值,触发了服务器限流保护,美团App小范围地区用户出现了短时服务异常,现已全面恢复,大家可以正常下单。 期间部分受影响用户的优惠券,可延�

  • 可靠消息!海尔洗衣机将发布众多“新物种”,瞄准用户痛点

    海尔洗衣机7月9日将发布颠覆性新品:1)行业首款多筒分区专属洗衣机,占地仅0.3㎡实现四大分区洗烘,满足全家衣物同时分类洗涤需求;2)首创无波轮设计的V转子洗衣机,彻底解决传统波轮藏污纳垢问题,实现"永不脏"的洗涤体验。这些创新产品将突破行业技术瓶颈,解决分区洗涤和卫生痛点,重新定义洗衣机使用标准。海尔此次发布将带来革命性用户体验,可能重塑洗衣机行业格局。

  • 快手集中整治“虚假回收”类违规行为,保护用户权益免遭损失

    快手平台发布公告,将重点整治"虚假回收"违规交易行为。主要针对主播通过打造"善人""有钱人"人设进行剧本炒作,诱导用户下单;或引导用户脱离平台在第三方付费交易"古董""名人字画"等物品;以及以"高价回收"、承诺"高额返利"等名义诱导打赏等违规行为。平台将通过事前审核、实时监测、事后追查等方式打击违规账号,并配合执法机关开展线下打击。2024年以来已永久封禁近千个违规账号。快手提醒用户警惕"低投资高回报"骗局,发现违规行为可投诉举报。

  • 滴滴送货上线“极速赔”:只要无法证明用户造成 承诺异议必赔

    在物流配送竞争日益激烈的当下,滴滴送货正式推出极速赔”服务,以解决用户在货物运输过程中的后顾之忧。 极速赔” 的核心规则极具诚意,只要平台无法证明货物损失、延误等问题是由用户造成的,便承诺异议必赔”。 这意味着,当用户对配送结果提出合理异议时,无需耗费大量精力自证清白,平台会主动承担相应责任。而且,赔付流程力求便捷高效,

  • 动态域名解析全攻略:从原理到实用方法详解

    本文介绍了动态域名解析(DDNS)技术及其应用。DDNS通过将动态变化的公网IP地址与固定域名绑定,解决了远程访问动态IP设备的难题。文章详细解析了三种实用方法:1)使用专业DDNS服务商;2)利用路由器内置功能;3)安装专用软件如花生壳。重点推荐了花生壳软件,其支持多系统、智能DNS解析和端口映射等功能,拥有1800万用户。使用DDNS需注意选择可靠服务商、正确配置记录、定期检查更新等事项。动态域名解析技术极大便利了远程访问需求,而花生壳凭借强大功能成为理想选择。

  • peak怎么设置中文 peak游戏怎么切换中文?peak改中文方法

    《PEAK》是一款Steam热门多人合作攀岩游戏,玩家需在险恶环境中协作登顶。游戏每24小时更换新山峰,开放地图和自由路线带来丰富体验。虽然原版无中文,但可通过迅游加速器实现一键汉化:1.下载安装汉化补丁 2.客户端输入"游戏冲冲"获取工具 3.点击"一键汉化"完成设置。该工具还提供网络优化功能,确保多人联机流畅。游戏需配合迅游加速器使用,解决海外服务器延迟问题,实现丝滑协作体验。

  • 维信金科豆豆钱用户注意!新型诈 骗手段曝光,接到这种电话直接挂断

    近期有不法分子冒充"豆豆钱"客服实施诈骗,主要手段包括:1.以"提升账户额度"为由收取手续费;2.假借"协商还款"名义要求转账;3.谎称"提前结清优惠活动"诱导转账。警方提醒:切勿轻信陌生来电,务必通过官方渠道核实信息;不透露个人敏感信息;正规平台不会收取认证金等费用;转账前再三确认收款方。如遇可疑情况,请立即拨打官方客服40