用户管理
创建用户
create user 'username'@'localhost' identified by 'password';
- username:登陆使用的用户名;
- password:登陆使用的密码;
- localhost:此处是 MySQL 连接时验证的一个额外机制,代表限制远端使用该用户进行连接时,客户端的 IP 地址范围,此值可以有如下三个选择:
- %:代表可以允许客户端以任意 IP 访问;
- 192.168.18.%:代表可以允许客户端以 192.168.18 网段的 IP 地址进行访问,一般生产中使用此方式,仅仅配置某个应用服务器网段的 IP 地址允许访问;
- localhost:代表只能通过 MySQL 服务器端进行连接,一般我们创建维护账号时才选择此方式,如 root;
修改密码
在工作维护期间,一定会是将开发人员的账号进行定期更新的,这时我们可以使用以下方式进行用户密码的修改。
-- 修改当前用户密码
set PASSWORD=PASSWORD('new-password')
-- 修改其他用户密码
set password for root@localhost = password('new-password');
-- 将用户的密码时间配置为永不过期
alter user root@’localhost’ password expire never;
删除用户
drop user 'username'@'localhost';
权限管理
用户用到的权限类型如下表所示:
类型 | 描述 |
---|---|
ALL | 所有可用的权限 |
CREATE | 创建库、表和索引 |
LOCK_TABLES | 锁定表 |
ALTER | 修改表 |
DELETE | 删除表 |
INSERT | 插入表或列 |
UPDATE | 更新表 |
SELECT | 检索表或列的数据 |
CREATE_VIEW | 创建视图 |
SHOW_DATABASES | 列出数据库 |
DROP | 删除库、表和视图 |
赋予用户权限
grant <privileges> on <database>.<table> to 'username'@'localhost' WITH GRANT OPTION;
- privileges:上述列出来的权限名;
- database:需要赋予的数据库名;
- table:需要赋予的数据库里面的表明;
- WITH GRANT OPTION:可以将权限赋于其他用户,该选项一般在生产中不做使用,权限将由 DBA 进行管控,不存在开发人员互相开通权限情况;
赋予多个权限需要用逗号“,”分隔。
如我们配置给某个库内全部的读与更新权限:
grant select,update on test.* to username@'IP段';
查看登陆用户及权限信息
-- 查看当前登陆用户
select user();
-- 查看某个用户权限
show grants for root@'localhost';
回收用户权限
revoke <privileges> on <database>.<table> from 'username'@'localhost';
保存设置
设置权限可以通过修改数据库的形式进行设置,设置完毕之后需要刷新更改的权限设置。
FLUSH PRIVILEGES;
权限限制与远程访问限制
一个数据库对应一个项目,并且指派特定的用户去访问数据库,其中分为管理员用户和访问用户。
- 管理员用户:管理整个项目的数据库,包括表的创建,表中字段的创建,只能本地访问。
- 普通用户:只能修改表中字段的数据内容,或者添加具体的数据内容,可以通过远程访问。
作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/kwdavw 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。