Loading... 最近官网上了阿里云的 RDS,涉及到一些用户的权限配置(当然啦,阿里云的官方配置还是比较傻瓜式的,比较好上手),我还是想对于 mysql 用户的权限配置做进一步了解。 因为过去使用 wordpress 的 mysql 数据库都是直接在服务器上自建的,此时 3306 端口不向外开放,用户都是 localhost 用户就好了,本地用户,不涉及远端的数据库权限的。但上了 RDS 之后,需要将站点的数据库全部迁移到 RDS 中去,然后在 RDS 中创建一个对应的访问用户,专门给网站访问配置的,这时候权限就很重要了,一旦设置不好,甚至有可能整个站点的数据库都会连接失败,因此是得学习下相关的知识经验。 当使用 RDS 的默认配置配置好一个用户的权限之后,要如何在 mysql 控制台查看和修改呢?这里找了一篇还不错的文章来收藏说明,也给我今后看。确实它里面的命令方法帮了我很大的忙。 --- 查看 MYSQL 数据库中所有用户 ```sql SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; ``` ![mysql-grant-1.png](http://static.fox-9.com/uploads/2021/08/19/mysql-grant-1.png!webp) 查看数据库中具体某个用户的权限 ```sql show grants for 'csexchange'@'%'; ``` ![mysql-grant-2.png](http://static.fox-9.com/uploads/2021/08/19/mysql-grant-2.png!webp) 解释:'csexchange'@'%' 用户对 pcp_reactor 数据库下的 mdm_user 表有 select 权限,对 pcp_reactor 数据库下的 cs_exchange 表有 select、insert、update 权限 **权限控制示例,可自行扩展** **【修改完权限以后,一定要刷新权限表,才能使权限生效!!!】** **刷新权限的 SQL 命令:** `FLUSH PRIVILEGES;` 授权给 'csexchange'@'%' 用户对 pcp_reactor 数据库下的 mdm_user 表拥有 select 权限 ```sql GRANT SELECT ON `pcp_reactor`.`mdm_user` TO 'csexchange'@'%' ``` 授权给 'csexchange'@'%' 用户对 pcp_reactor 数据库下的 cs_exchange 表拥有 select、insert、update 权限 ```sql GRANT SELECT, INSERT, UPDATE ON `pcp_reactor`.`cs_exchange` TO 'csexchange'@'%' ``` 授权给 'csexchange'@'%' 用户对 pcp_reactor 数据库下的所有表拥有 select、insert、update、delete 权限 ```sql GRANT ALL ON pcp_reactor.* TO 'csexchange'@'%' ``` 撤销给 'csexchange'@'%' 用户对 pcp_reactor 数据库下的 cs_exchange 表的 select 权限 ```sql REVOKE SELECT ON `pcp_reactor`.`cs_exchange` FROM 'csexchange'@'%' ``` 撤销给 'csexchange'@'%' 用户对 pcp_reactor 数据库下的所有表的 select、insert、update、delete 权限 ```sql REVOKE ALL ON pcp_reactor.* FROM 'csexchange'@'%' ``` **雪山凌狐总结补充:** 其中可以很容易的发现,授权新权限的时候使用关键词 `GRANT`,而撤销权限时使用关键词 `REVOKE`,后面紧跟着要授权或撤销的权限名,比如 SELECT,ALL 等,ALL 表示 select、insert、update、delete 权限。权限可以跟多个,用逗号分隔。 然后是一个 ON,ON 后面跟着的是什么数据库的什么表,名字使用 <code>``</code> 包裹起来,好像也可以不包,不过最好还是包一下,库和表之间使用 `.`号连接,如果应用于所有的库或者表,使用`*` 号来表示通配。 然后是一个 TO,TO 后面跟的是给什么用户,使用 `'用户名'@'用户IP'` 的表示形式,我还记得之前数据库在本地时,我看到比如一个 root 账号,他的权限写法为 `root@localhost`,这表示 root 这个用户仅能在本地访问该 mysql 数据库。 用户名在创建用户时有写,这个就不多说了。而 IP 地址如果是本地就写 localhost,如果是固定某个 IP 就写某个 IP 地址,如果是任意 IP 地址都能访问呢?上面的例子给了我们答案,使用 `%` 符号来表示,表示任意地址都能使用该用户连接到该数据库,**只要用户名密码啥的匹配上就行** 。 雪山凌狐在文章的基础上做了背景介绍和进一步优化。 原文摘自:[https://www.cnblogs.com/Rocky_/p/11200032.html](https://www.cnblogs.com/Rocky_/p/11200032.html) 最后修改:2021 年 08 月 19 日 © 转载自他站 赞 赠人玫瑰,手留余香