用户管理

创建用户

  1. create user 'username'@'localhost' identified by 'password';
  • username:登陆使用的用户名;
  • password:登陆使用的密码;
  • localhost:此处是 MySQL 连接时验证的一个额外机制,代表限制远端使用该用户进行连接时,客户端的 IP 地址范围,此值可以有如下三个选择:
    • %:代表可以允许客户端以任意 IP 访问;
    • 192.168.18.%:代表可以允许客户端以 192.168.18 网段的 IP 地址进行访问,一般生产中使用此方式,仅仅配置某个应用服务器网段的 IP 地址允许访问;
    • localhost:代表只能通过 MySQL 服务器端进行连接,一般我们创建维护账号时才选择此方式,如 root;

修改密码

在工作维护期间,一定会是将开发人员的账号进行定期更新的,这时我们可以使用以下方式进行用户密码的修改。

  1. -- 修改当前用户密码
  2. set PASSWORD=PASSWORD('new-password')
  3. -- 修改其他用户密码
  4. set password for root@localhost = password('new-password');
  5. -- 将用户的密码时间配置为永不过期
  6. alter user root@localhost password expire never;

删除用户

  1. drop user 'username'@'localhost';

权限管理

用户用到的权限类型如下表所示:

类型 描述
ALL 所有可用的权限
CREATE 创建库、表和索引
LOCK_TABLES 锁定表
ALTER 修改表
DELETE 删除表
INSERT 插入表或列
UPDATE 更新表
SELECT 检索表或列的数据
CREATE_VIEW 创建视图
SHOW_DATABASES 列出数据库
DROP 删除库、表和视图

赋予用户权限

  1. grant <privileges> on <database>.<table> to 'username'@'localhost' WITH GRANT OPTION;
  • privileges:上述列出来的权限名;
  • database:需要赋予的数据库名;
  • table:需要赋予的数据库里面的表明;
  • WITH GRANT OPTION:可以将权限赋于其他用户,该选项一般在生产中不做使用,权限将由 DBA 进行管控,不存在开发人员互相开通权限情况;

赋予多个权限需要用逗号“,”分隔。

如我们配置给某个库内全部的读与更新权限:

  1. grant select,update on test.* to username@'IP段';

查看登陆用户及权限信息

  1. -- 查看当前登陆用户
  2. select user();
  3. -- 查看某个用户权限
  4. show grants for root@'localhost';

回收用户权限

  1. revoke <privileges> on <database>.<table> from 'username'@'localhost';

保存设置

设置权限可以通过修改数据库的形式进行设置,设置完毕之后需要刷新更改的权限设置。

  1. FLUSH PRIVILEGES;

权限限制与远程访问限制

一个数据库对应一个项目,并且指派特定的用户去访问数据库,其中分为管理员用户和访问用户。

  • 管理员用户:管理整个项目的数据库,包括表的创建,表中字段的创建,只能本地访问。
  • 普通用户:只能修改表中字段的数据内容,或者添加具体的数据内容,可以通过远程访问。

作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/kwdavw 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。