欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

[翻译]如何在mysql上创建新用户、授予权限

程序员文章站 2022-05-24 14:18:32
...

原文是业界鼎鼎有名,linode的强力竞争对手,DigitalOcean公司写的。主要是方便他们的VPS客户对系统进行配置。我觉得写的很好,故翻译出来,方便各位用了linux vps但英文不是很熟练的朋友。关于DigitalOcean的介绍以及如何在上面购买机器,选择什么样的套餐

原文是业界鼎鼎有名,linode的强力竞争对手,DigitalOcean公司写的。主要是方便他们的VPS客户对系统进行配置。我觉得写的很好,故翻译出来,方便各位用了linux vps但英文不是很熟练的朋友。关于DigitalOcean的介绍以及如何在上面购买机器,选择什么样的套餐合适,请看我的这篇文章:DigitalOcean介绍及购买指南。如果你想要买DO的vps,请猛搓这个链接

以下是原文的翻译

标红的字段是什么意思

本教程中标红行中的字段指的是需要输入或者定制的内容!
剩下的大部分应该是可以直接复制粘贴的。

关于MySQL

翻译略

如何创建一个新用户

让我们使用MySQL shell来创建一个新用户:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

悲剧的是,此时这个账户对这个数据库没有任何权限。实际上,即使这个新用户试图用密码登陆,甚至连MySQL的shell都无法进入。
既然如此,首先要做的事就是提供用户访问所需的信息:

GRANT ALL PRIVILEGES ON . TO 'newuser'@'localhost';

命令中的星号(*)指的是此账户可以访问的数据库和表(分别的)--这个特定的命令允许用户对所有的数据库、表能读、编辑、执行、运行所有的任务。
一旦操作完毕对你的新用户的权限设置,总是确认重载所有的权限:

FLUSH PRIVILEGES;

现在你的更改已经生效了。

如何授予不同的用户权限

这有一个其他通常可能的权限使用的小列表:

  • ALL PRIVILEGES - 如同我们前面所见,这会允许MySQL用户能访问所有的指定的数据库;
  • CREATE- 允许用户创建新表或者数据库;
  • DROP- 允许用户删除表或数据库;
  • DELETE- 允许用户删除表中的行;
  • INSERT- 允许用户能向表中插入新行;
  • SELECT- 允许用户能使用select命令来读取数据库里面的内容;
  • UPDATE- 允许用户更新表中的行;
  • GRANT OPTION- 允许用户授权或者取消其他用户的特权;

给一个指定的用户提供某些权限,你可以使用如下这样的命令格式:

GRANT [type of permission] ON [database name].[table name] TO '[username]'@'localhost';

如果你想给用户授权访问所有的数据库、表的权限,请确认使用星号(*)在对应的数据库名/表名位置。
每一次你更新或者改变了权限,确认使用FLUSH PRIVILEGES 命令
如果你需要撤销一个权限,命令的格式与授权基本一致:

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';

与你使用drop来删掉一个数据库一样的,你可以使用使用drop来完全的删除一个用户:

DROP USER 'demo'@'localhost';

要测试你的新用户,只需要退出后,使用新用户登录,即可测试。

quit
mysql -u[username] -ppassword -A DATABASE

翻译完

后记:
在实际运行中,某些账户只需要select权限,某些只需要insert权限,某些只需要update权限,为了安全,可以考虑最小化权限,在遭受攻击时,也可以作为一道可能的安全防线。
限于本人英文阅读能力,中文表达能力,计算机水平能力有限,其中翻译的错误,表达不清楚肯定存在,如果有错漏之处,希望能留言指出,谢谢。